1
0

milkdrop.html 77 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427
  1. <HTML>
  2. <HEAD>
  3. <TITLE>MilkDrop Documentation</TITLE>
  4. </HEAD>
  5. <BODY>
  6. <PRE>
  7. <A NAME="milkdrop_top">
  8. <B>MILKDROP 2.1 (February 2009)</B>
  9. a Winamp visualization plug-in by Ryan Geiss
  10. copyright (c) 2001-2009 Nullsoft, Inc.
  11. Useful Links:
  12. <A HREF="http://www.nullsoft.com/free/milkdrop/">official milkdrop homepage</A>
  13. <A HREF="http://forums.winamp.com/forumdisplay.php?forumid=81">online forums</A> - for preset sharing, troubleshooting,
  14. comments, and feature requests
  15. <A HREF="http://www.winamp.com/">Nullsoft Winamp</A>
  16. <A HREF="http://www.microsoft.com/windows/directx/">Microsoft DirectX</A>
  17. <A HREF="http://www.milkdrop.co.uk/">milkdrop.co.uk</A> - an excellent third-party preset community site
  18. <B>What is MilkDrop?</B>
  19. -----------------------
  20. <B>MilkDrop</B> is a music-visualization "plug-in" for the Winamp music player.
  21. As you listen to music through Winamp, MilkDrop renders the soundwaves in a
  22. visual feedback loop, driven by 3D graphics hardware, to create a
  23. rich visual journey through sound. MilkDrop can also be driven by a live
  24. audio feed (microphone or line-in) - see the documentation for details.
  25. <B>MilkDrop 2</B> is a major upgrade to the original MilkDrop visualizer, opening up
  26. the power of modern graphics chips and programmable pixel shaders to the realm
  27. of music visualization. Pixel shaders allow dozens, even hundreds of complex
  28. instructions to be executed for every pixel on the screen, every frame.
  29. Other new features include jpg textures, gaussian blurring, a preset "mash-up"
  30. feature, and a prest "back" button. MilkDrop 2 is backwards-compatible with
  31. presets from MilkDrop 1.
  32. <B>Section Listing</B>
  33. -----------------------
  34. 1. <A HREF="#1">requirements</A>
  35. 2. <A HREF="#2">installation</A>
  36. 3. <A HREF="#3">tweaking</A>
  37. 4. <A HREF="#4">usage</A>
  38. 4.a. <A HREF="#4a">keyboard commands</A>
  39. 4.b. <A HREF="#4b">config panel</A>
  40. 4.c. <A HREF="#4c">preset authoring</A>
  41. 4.d. <A HREF="#4d">rating system</A>
  42. 4.e. <A HREF="#4e">custom messages</A>
  43. 4.f. <A HREF="#4f">sprites</A>
  44. 5. <A HREF="#5">troubleshooting</A>
  45. 6. <A HREF="#6">known issues / misc. / tips</A>
  46. 7. <A HREF="#7">using line-in</A> (for live audio input)
  47. 8. <A HREF="#8">acknowledgements</A>
  48. 9. <A HREF="#9">version history</A>
  49. <A NAME="1">
  50. <B>1. Requirements</B>
  51. -----------------------
  52. 1. Windows 98, ME, 2000, XP, or later.
  53. 2. Hardware-based 3D graphics acceleration (i.e. a video card with 3D support)
  54. supporting DirectX 9 with at least 8 MB of video memory;
  55. however, we strongly recommend a GeForce 5700 (or better),
  56. or a Radeon 9600 (or better).
  57. 3. Winamp 5.12 or later ( <A HREF="http://www.winamp.com/">http://www.winamp.com/</A> ).
  58. 4. DirectX 9.0 or later ( <A HREF="http://www.microsoft.com/windows/directx/">http://www.microsoft.com/windows/directx/</A> ).
  59. <A NAME="2">
  60. <B>2. Installation</B>
  61. -----------------------
  62. MilkDrop 2 comes with Winamp. To install it, just download and
  63. install the latest version of Winamp. During the installation,
  64. make sure the "MilkDrop 2" visualizer option is checked, so that
  65. it gets installed, too.
  66. Once Winamp is installed, launch it. Load some music files into
  67. your playlist and start playing some music. (Be sure to play some music
  68. before trying to launch the visualizer - otherwise you'll just see a
  69. black screen.)
  70. Once music is playing, hit <B>CTRL+K</B> and a list of visualization
  71. plug-ins will appear. Select "MilkDrop 2" from the list. Then click
  72. the "Start" button, and it will launch the visualizer.
  73. Quick Tips:
  74. * If you want to go full-screen, double-click on the visualizer itself.
  75. * CTRL+SHIFT+K starts or stops the visualizer.
  76. * To configure MilkDrop's options, exit the visualizer and hit ALT+K.
  77. If you have trouble getting MilkDrop to run properly after installation,
  78. try installing various recent WHQL drivers for your video card, or installing
  79. DirectX; doing these two things (especially the first) will fix 99% of
  80. problems. See the Troubleshooting section of the documentation for more
  81. information.
  82. <A NAME="3">
  83. <B>3. Tweaking to achieve the best image quality</B>
  84. -----------------------
  85. a) Fullscreen Display Mode [first tab of config screen]
  86. When you run MilkDrop fullscreen, it changes the display
  87. mode to whatever you select here. Generally speaking,
  88. the speed (framerate) and smoothness of MilkDrop will drop
  89. as the resolution (number of pixels on the screen)
  90. increases. So, if it's running to slow in fullscreen
  91. mode, try selecting a smaller fullscreen display mode.
  92. b) Canvas Stretch [second tab]
  93. This option lets you trade resolution [crispness] for
  94. speed. If MilkDrop runs too slow, in any mode (windowed/
  95. fullscreen/desktop), try cranking up the canvas stretch
  96. to, say, 1.5X or 2X. The image will not look as crisp,
  97. but MilkDrop will probably run much faster. (Assuming
  98. that your graphics chip was the bottleneck.)
  99. c) Mesh Size [second tab]
  100. This is the main option that affects how much processor
  101. (CPU) MilkDrop uses. If you crank it up far beyond the
  102. default, expect to be CPU-bound (where your framerate drops
  103. because the CPU is the bottleneck). To get MilkDrop to
  104. speed up, drop the Mesh Size back down. The Mesh Size
  105. decides how many points on the screen the per-vertex
  106. equations will be executed for; the higher the mesh size,
  107. the more fidelity you will see in the motion.
  108. d) tips for LCD and laptop users
  109. LCD screens: Note that most LCD screens (flatpanels) usually run
  110. at a fixed frequency only - usually 60 Hz - meaning that they update
  111. the screen 60 times per second. However, sometimes the video driver
  112. reports that it supports other refresh rates, such as 72, 75, 85, etc.
  113. It is strongly recommended that [for fullscreen mode, and for Windows
  114. in general] you choose a display mode with a 60 Hz refresh rate, for
  115. the smoothest possible animation. For this plugin, you will also want
  116. to choose Maximum Framerates that divide evenly into 60 - such as 60,
  117. 30, 20, 15, 12, 10, 6, 5, and so on - so that the # of times the LCD
  118. shows each frame of animation remains constant, resulting in the
  119. smoothest possible animation.
  120. e) color (bit) depth: 16 or 32?
  121. The answer, nowadays, is a resounding "32". Video memory
  122. is plentiful these days; use 32 bit color, for both your
  123. windows desktop (...so that MilkDrop's windowed mode can
  124. run at 32 bits) and for MilkDrop's Fullscreen Display Mode
  125. setting (where "8888" denotes 32 bits).
  126. Some ancient video cards don't have enough memory to run MilkDrop
  127. properly (or smoothly) in 32 bits, though; you might want to
  128. try 16-bit color if your card has less than 32 MB of video
  129. memory, if you are using a laptop, or if your video card is
  130. significantly old. In the MilkDrop config panel, 16-bit modes
  131. show up as "555" or "565".
  132. If you find that your card runs best in 32-bit color, you should
  133. have no problems with brightness levels while running MilkDrop.
  134. However, if your card runs best in 16-bit color, you should
  135. then adjust the Brightness slider on the second tab of the config
  136. panel (which only affects 16-bit color video modes!). The goal
  137. is to make the image as bright as possible, without oversaturating
  138. it (washing it out, often to bright pink or white). This setting
  139. also varies for different cards, depending on how the card rounds
  140. color values, so we recommend seeing how bright you can set the
  141. slider (closer to '0') without oversaturating the image. Usually,
  142. a setting of '0' or '2' works the best.
  143. <A NAME="4">
  144. <B>4. Usage</B>
  145. -----------------------
  146. <A NAME="4a">
  147. <B>4.a. Keyboard Commands</B>
  148. The following keys can be used to control MilkDrop while it is running.
  149. (Note: pressing F1 while MilkDrop is running will show you this list)
  150. <FONT SIZE="3">
  151. <B>GENERAL</B>
  152. escape: exit to winamp
  153. <B>PRESET LOADING</B>
  154. BACKSPACE: return to previous preset
  155. SPACE: transition to next preset
  156. H: instant Hard cut (to next preset)
  157. R: toggle random (vs. sequential) preset traversal
  158. L: load a specific preset (invokes the 'Load' menu)
  159. +/-: rate current preset (better/worse)
  160. scroll lock: lock/unlock current preset
  161. (keyboard light on means preset is locked)
  162. (prevents random switch to new preset)
  163. A: aggregate preset - loads a random preset,
  164. steals the warp shader from a different random preset,
  165. and steals the composite shader from a third random preset.
  166. D: cycle between various lock-states for the warp and
  167. composite shaders. When one of these shaders is locked,
  168. loading a new preset will load everything *except* the
  169. locked shaders, creating a mix between the two presets.
  170. <B>PRESET EDITING AND SAVING</B>
  171. M: show/hide the preset-editing menu
  172. S: save new preset (asks you for the new filename)
  173. N: show per-frame variable moNitor
  174. (see <A HREF="milkdrop_preset_authoring.html">milkdrop_preset_authoring.html</A>)
  175. <B>MUSIC PLAYBACK</B>
  176. z/x/c/v/b: navigate playlist (prev/play/pause/stop/next)
  177. U: toggle shuffle
  178. P: show playlist
  179. up/down arrows: volume up/down
  180. left/right arrows: rewind/ffwd 5 seconds
  181. SHIFT + left/right arrows: rewind/ffwd 30 seconds
  182. <B>FUNCTION KEYS</B>
  183. F1: show help screen
  184. F2: show song title
  185. F3: show song length
  186. F4: show preset name
  187. F5: show fps (frames per second)
  188. F6: show rating of current preset
  189. F7: re-read custom message file (milk_msg.ini) from disk
  190. F8: jump to new directory (for presets)
  191. F9: toggle stereo 3D on/off
  192. <B>SPRITES AND CUSTOM MESSAGES (FOR VJ's)</B>
  193. T: launch song title animation
  194. Y: enter custom message mode
  195. ##: load message ## (where ## is a 2-digit numeric code (00-99)
  196. of a message defined in <B>milk_msg.ini</B>)
  197. *: clear any digits entered.
  198. DELETE: clear message (if visible)
  199. F7: re-read <B>milk_msg.ini</B> from disk
  200. K: enter sprite mode
  201. ##: load sprite ## (where ## is a 2-digit numeric code (00-99)
  202. of a sprite defined in <B>milk_img.ini</B>)
  203. *: clear any digits entered.
  204. DELETE: clear newest sprite
  205. SHIFT + DELETE: clear oldest sprite
  206. CTRL+SHIFT+DELETE: clear all sprites
  207. F7: no effect (<B>milk_img.ini</B> is never cached)
  208. SHIFT + K: enter sprite kill mode
  209. ##: clear all sprites with code ##
  210. *: clear any digits entered.
  211. CTRL + T/Y: kill song title and/or any custom messages
  212. CTRL + K: kill all sprites
  213. </FONT>
  214. Note that there are more keys available, but because many
  215. are only relevant to people designing their own presets,
  216. they are listed in the <A HREF="milkdrop_preset_authoring.html">preset authoring guide</A> instead.
  217. <A NAME="4b">
  218. <B>4.b. config panel</B>
  219. The configuration panel lets you customize the way MilkDrop runs.
  220. To learn how to get to the configuration panel, see the "Installation"
  221. section above.
  222. Once you're in the config panel, you'll see a number of tabs
  223. at the top, some dropdown boxes, and some checkboxes. Each
  224. of the tabs at the top brings you to a different page of
  225. configuration options. To get help on a setting, simply click
  226. on the '?' in the upper-right corner of the config panel,
  227. and then click on the setting you want help with.
  228. <A NAME="4c">
  229. <B>4.c. preset authoring</B>
  230. Please see the included text file, <A HREF="milkdrop_preset_authoring.html">milkdrop_preset_authoring.html</A>,
  231. for instructions on how to create and save your own presets.
  232. <A NAME="4d">
  233. <B>4.d. rating system</B>
  234. The built-in rating system allows you to rate each preset on a scale
  235. from 0 to 5. A rating of 5 is very good, while a rating of 0 is
  236. the worst. The ratings decide how often the presets will be randomly
  237. loaded. If a preset has a rating of 0, it will never be randomly
  238. loaded (unless they're all zero; then they all have an equal chance).
  239. To show the rating for a preset, press F6. You can adjust the
  240. rating for a preset with the +/- keys. When you make adjustments,
  241. they save automatically; there's no need to save the preset to make
  242. the rating change permanent.
  243. Here's a recommended interpretation of the numeric values:
  244. 0 = I never want to see this preset again
  245. 1 = very ugly
  246. 2 = mediocre
  247. 3 = fair
  248. 4 = good
  249. 5 = downright stimulating
  250. If a preset seems "lost" because you set its rating to 0 and it
  251. won't ever come back, you can always load it up by hitting 'L'
  252. to conjure the 'Load Preset' menu, finding the preset you want,
  253. loading it, then hitting +.
  254. <A NAME="4e">
  255. <B>4.e. custom messages</B>
  256. ABOUT CUSTOM MESSAGES
  257. The "Custom Message" feature of MilkDrop allows you to display
  258. short text messages on the screen while MilkDrop is running.
  259. They are highly configurable; you can set all of the following
  260. parameters: the font, the size, the positioning, color, bold
  261. state, italic state, and so on; and you can even have it
  262. randomize some of these properties.
  263. CREATING THE MESSAGES
  264. You can save up to 100 messages in the file MILK_MSG.INI in
  265. your Winamp\Plugins\ folder. To open this file, go to the
  266. MilkDrop configuration screen (ALT+K from Winamp) and click the
  267. "Edit Custom Messages" button. Or, you can just edit it
  268. manually if you know how; it's plain-text.
  269. The first thing you see when you open the file is a bunch of
  270. lines that start with two forward slashes (//). These are
  271. comment lines, and they explain the syntax for adding a font
  272. or a message to the file. This is your main reference for
  273. finding out what all the parameters do for the fonts & messages;
  274. it is recommended that you leave this information in the file,
  275. although it can be removed or (modified) and the messages will
  276. still work.
  277. After the comments come first the fonts, then the messages.
  278. The fonts are simply a way to specify a typeface, bold state,
  279. italics state, and red/green/blue color for the font. You can
  280. configure up to 16 fonts like this (numbered 00-15). These fonts
  281. will serve as template fonts for the custom messages.
  282. The next section is the actual messages. Each one has a
  283. text message (the 'text' parameter) that will be shown to the
  284. user, and each one references one of the 16 fonts that were
  285. defined in the previous section. You can also specify the
  286. size (size), position (x,y), a growth factor (growth) that
  287. will grow/shrink the message over its lifetime, the number
  288. of seconds to show the message (time), and the fraction of that
  289. time that is spent fading in (fade).
  290. You can also randomize some of these values: 'randx' and 'randy'
  291. will randomly perturb the (x,y) coordinates every time the message
  292. is shown to the user, and 'randr'/'randg'/'randb' will randomly
  293. perturb the (r,g,b) color in the same way.
  294. Finally, you can override any of the default properties for the
  295. font that this message uses: (face, bold, ital, r, g, b).
  296. INVOCATION AND USAGE
  297. There are two ways to invoke custom messages: one automatic,
  298. the other manual.
  299. The automatic way is to go to the MilkDrop config panel (ALT+K),
  300. click the 'More Options' button, and set the value in the
  301. 'Time between RANDOM custom messages' box to something greater
  302. than zero. This will cause MilkDrop to randomly display custom
  303. messages while it is running, and the average time (in seconds)
  304. between messages will be the value you entered here. If you
  305. wish to disable random custom messages, set this value to -1
  306. (or any negative number). Note that all messages in the file
  307. have an equal change of being picked.
  308. The manual way is to type in the two-digit code (00-99) of the
  309. message while MilkDrop is running. However, you can't use the
  310. numeric keypad for this - you have to use the numbers at the
  311. TOP of your keyboard to do it. If you mess up while entering
  312. the first digit, just press the '*' key to start over.
  313. Note that if you change the MILK_MSG.INI file while MilkDrop
  314. is running, you will not be able to see the changes until
  315. you hit F7, which tells MilkDrop to re-read the MILK_MSG.INI
  316. file from disk.
  317. <A NAME="4f">
  318. <B>4.f. sprites</B>
  319. ABOUT SPRITES
  320. The "Sprite" feature of MilkDrop allows you to display
  321. any image of your choice in the foreground (on top of
  322. MilkDrop) while it runs. The sprites can fade in and out,
  323. move around, respond to the music, and so on. You define
  324. them in a file - <B>milk_img.ini</B> in your winamp\plugins
  325. directory - much like you define custom messages, each
  326. having an identifying code number from 00 through 99 (used
  327. to invoke them). However, the way the individual sprites
  328. are defined is different; <EM>you write code for them</EM>, instead
  329. of just setting parameter values. This is a little bit
  330. tougher to do (it's very much like preset authoring), but
  331. adds a great deal of flexibility to what you can do with
  332. the sprites.
  333. CREATING THE SPRITES
  334. You can define up to 100 sprites in the file MILK_IMG.INI in
  335. your Winamp\Plugins\ folder. To open this file, go to the
  336. MilkDrop configuration screen (ALT+K from Winamp) and click the
  337. "Edit Sprites" button. Or, you can just edit it manually if
  338. you know how; it's plain-text.
  339. The first thing you see when you open the file is a bunch of
  340. lines that start with two forward slashes (//). These are
  341. comment lines, and they explain the syntax for creating a sprite.
  342. This is your main reference for finding out what all the
  343. parameters do for the fonts & messages; it is recommended that
  344. you leave this information in the file, although it can be removed
  345. (or modified) and the sprites will still work.
  346. After the comments come the sprite definitions. Each sprite is
  347. made up of one parameter that indicates the image file to use
  348. (this is the 'img=...' line), and two types of code: initialization
  349. code, and regular code.
  350. The first - initialization code - is executed only once, when you
  351. launch the sprite. Use it to do one-time initialization of variables
  352. (such as the opacity (a), rotation angle (rot), position (x,y),
  353. and so on) or to invent new variables that you will access later.
  354. This code is marked by the 'init_1=...', 'init_2=...', etc. lines.
  355. The second type of code - marked by 'code_1=...', 'code_2=...', etc.
  356. - is executed every frame, just prior to plastering the sprite on
  357. the screen. Use it to animate the sprite, moving it around (changing
  358. x,y), scaling it up and down (sx,sy), fading it in and out (a),
  359. changing its color, and so on.
  360. Please see the comments included in the sample milk_img.ini file
  361. for full details and examples on how to author sprites.
  362. INVOCATION AND USAGE
  363. There is currently only one way to invoke sprites: manually.
  364. To do this, first press 'K' to enter 'sprite mode' (while
  365. running MilkDrop). Now, whenever you type in a two-digit
  366. code (00-99), MilkDrop will try to find & launch the sprite
  367. you've requested, from the milk_img.ini file. If there is
  368. an error, it will display an error message in the upper-right
  369. corner. Note that to enter the two-digit code, you can't use
  370. the numeric keypad; you have to use the numbers at the TOP of
  371. your keyboard.
  372. If you make an error entering the first digit of the code,
  373. just press '*' to start over. If you want to
  374. clear the most recently-invoked sprite, press DELETE. If you
  375. want to clear the oldest sprite, press SHIFT + DELETE. If you
  376. want to clear all sprites, press SHIFT + CTRL + DELETE.
  377. If you want to clear sprites by their 2-digit code, press
  378. SHIFT + K (instead of just 'K') to enter 'sprite kill mode.'
  379. Now, when you enter a two-digit code, instead of invoking
  380. the sprite, MilkDrop clears all running sprites with that
  381. two-digit code.
  382. <A NAME="5">
  383. <B>5. TROUBLESHOOTING</B>
  384. -----------------------
  385. If MilkDrop has a critical problem (e.g. fails to load, freezes, etc.)
  386. or if the image is distorted, torn, corrupted, or all one solid color,
  387. try the following two suggestions to resolve the problem. In 90%
  388. of these cases it can be fixed. If you have a different problem,
  389. scroll down past this part and try to find the appropriate symptom
  390. and its solution.
  391. 1. UPDATE YOUR VIDEO DRIVER, OR TRY OTHER DRIVERS
  392. Almost all display problems are caused by buggy video drivers!
  393. A "driver" is a piece of software that translates graphics-related
  394. commands from programs, like MilkDrop, into the native language of
  395. your specific graphics hardware.
  396. For desktop machines, there are typically three sources for video drivers:
  397. 1) those from the *chip* manufacturer's website (usually
  398. nvidia.com or ati.com) (best source)
  399. 2) those from the card manufacturer's website (LeadTEK, PNY, etc.)
  400. 3) those that shipped with Windows (yuck)
  401. For laptops:
  402. 1) the driver from the *laptop* manufacturer
  403. 2) (maybe) the driver from the graphics chip manufacturer
  404. (ATI, Nvidia, etc) - however, it's fairly common to find
  405. that the laptop requires a custom driver written by the
  406. laptop manufacturer.
  407. 3) the driver that shipped with Windows (yuck)
  408. Give them all a shot. Track down every driver you can find for
  409. your card, and try it. Try the WHQL ones first - these versions of
  410. the drivers have passed "Windows Hardware Quality Labs" certification
  411. and are usually the more stable and reliable ones.
  412. In general, it's a very good idea to use only Microsoft-certified
  413. WHQL drivers for your video card. Often people want to get the newest,
  414. fastest beta drivers, but these drivers are almost ALWAYS riddled
  415. with new bugs. You can also watch the version number of the drivers
  416. a company releases - if the version number just jumped to a new
  417. series (such as from the 70's to the 80's), watch out, it probably
  418. has a lot of bugs that need worked out - give it 3-4 months before
  419. expecting the new driver series to work well. With video drivers,
  420. the newest isn't always the best!
  421. Here is a list of some common card/chip manufacturers and where
  422. to get their drivers. Don't forget to choose the WHQL driver!
  423. [ <A HREF="http://www.nvidia.com/page/drivers.html">NVIDIA driver</A> ]
  424. Card manufacturers using NVIDIA (GeForce) graphics chips:
  425. (note - most of these just link you to the nvidia driver above)
  426. [ <A HREF="http://www.xfxforce.com/web/support/showSearchDriversProductCode.jspa">XFX</A> ]
  427. [ <A HREF="http://www.evga.com/support/drivers/">EVGA</A> ]
  428. [ <A HREF="http://www.bfgtech.com/driverdownload.aspx">BFG</A> ]
  429. [ <A HREF="http://www2.pny.com/support/support.aspx">PNY</A> ]
  430. [ <A HREF="http://ati.amd.com/support/driver.html">ATI driver</A> ]
  431. Card manufacturers using ATI (Radeon) graphics chips:
  432. [ <A HREF="http://www.visiontek.com/teksupport/drivers/drivers.html">VisionTek</A> ]
  433. [ <A HREF="http://www.dmmdownload.com/current.php">Diamond</A> ]
  434. [ <A HREF="http://downloadcenter.intel.com/">Intel</A> ] - then click 'graphics' on the left
  435. [ <A HREF="http://www.sis.com/download/">SiS</A> ] - agree, then select 'graphics drivers'
  436. [ <A HREF="http://www.s3graphics.com/">S3</A> ] - then click 'drivers'
  437. [ <A HREF="http://www.via.com.tw/en/products/graphics/">VIA</A> ]
  438. [ <A HREF="http://www.matrox.com/graphics/en/corpo/support/drivers/home.php">Matrox</A> ]
  439. [ <A HREF="http://www.creative.com/language.asp?sDestUrl=/support/downloads">Creative Labs</A> ]
  440. For others - or in general - if your graphics chip is made by Trident,
  441. for example, then try a <A HREF="http://www.google.com/">google</A> search for:
  442. Trident graphics driver
  443. Then click on "support", then "drivers" (or "downloads"), then
  444. "graphics driver", and so on.
  445. 2. [RE]INSTALL DIRECTX
  446. Make sure you have a quasi-recent version of <A HREF="http://www.microsoft.com/windows/directx/">Microsoft DirectX</A>
  447. installed. In reality, though, almost every PC in the world has
  448. DirectX 9 on it at this point, so this shouldn't be a problem.
  449. If you go to download it, you'll only be able to find DirectX 10 -
  450. this is fine to install, though, as it includes DirectX 9 inside
  451. it. As a last resort, though, if you are having problems,
  452. you could try re-installing DirectX to see if it helps.
  453. If you're having a non-critical problem, browse the following list of
  454. common problems and their causes and solutions. Note that for each symptom-
  455. cause-solution block, there can be multiple symptoms with the same cause and
  456. solution, and the same symptom might be listed in multiple blocks.
  457. If the solutions below don't work for you, please visit the forums at
  458. <A HREF="http://www.nullsoft.com/free/milkdrop">http://www.nullsoft.com/free/milkdrop</A>, where you can read the most
  459. recent troubleshooting issues and solutions.
  460. ENTRY 1
  461. SYMPTOM:
  462. -any error message saying "Failed to create ..."
  463. or "not enough memory...", or
  464. -only a portion of the screen displays correctly; the rest is
  465. either filled with garbage or badly flickering
  466. CAUSE:
  467. 1) Your video card might not have enough memory to run MilkDrop at
  468. the resolution (screen width and height) you've picked,
  469. 2) your drivers might be out of date,
  470. 3) you might need to reinstall DirectX (very very rare), or
  471. 4) your graphics card might be to crappy to *actually* run
  472. pixel shaders well.
  473. SOLUTION:
  474. 1) To battle video memory problems:
  475. Go to the config panel and try smaller video modes (e.g.,
  476. 320x240 is smaller than 640x480). Even better is to try
  477. a lower color bit depth; if you'd selected a 32-bit ("8888")
  478. video mode before, try a 16- ("565" or "555") or 24-bit ("888")
  479. one, for example. Note that it might only work in one of them;
  480. so make sure you try them all. Trying these things is especially
  481. important on laptops with limited video memory, or older video
  482. cards with a small amount of video memory.
  483. Finally, you can try locking the texture size (or "canvas size")
  484. to 256x256 pixels, just to see if that fixes the problem.
  485. If it does, try using a smaller fullscreen video mode to
  486. free up some memory, or if running windowed, close other
  487. graphics-hungry applications.
  488. 2,3) for instructions on how to reinstall DirectX or update
  489. drivers, <A HREF="#5">go here</A>.
  490. 4) Go to the MilkDrop config panel (hit ALT+K) and on the second tab,
  491. in the "Pixel Shaders" box, select "None." Now does MilkDrop run
  492. ok? If so, your video card probably just can't reliably run
  493. pixel shaders, due to either inferior hardware, or it could
  494. be the driver. You can always try setting "Pixel Shaders"
  495. back to "Auto" and then installing a newer (preferably WHQL)
  496. video driver.
  497. ENTRY 2
  498. SYMPTOM:
  499. -When I go to the Load Preset menu ('L') in MilkDrop, some of the
  500. presets on disk are missing.
  501. -I downloaded some new presets and put them in my Plugins\MilkDrop2\Presets
  502. directory, but I can't access them from within MilkDrop.
  503. CAUSE:
  504. You probably have an older video card that can't handle the pixel
  505. shaders needed to run some of the presets. MilkDrop automatically
  506. hides any presets from you that you can't run.
  507. SOLUTION:
  508. * You could buy a new graphics card - one that meets the minimum
  509. recommendation for MilkDrop 2. These cost less than $40.
  510. * You could try forcing MilkDrop to try to run these presets.
  511. Sometimes MilkDrop just hides them from you because it predicts
  512. they will run horribly slow on your graphics card; in case it
  513. is wrong about that, try this. Go into the MilkDrop config
  514. panel (ALT+K) and go to the More Settings tab. Under the
  515. "Pixel Shaders" option, change it from "Auto" to "Shader Model 2"
  516. or "Shader Model 3". Then try to run MilkDrop and see if the
  517. presets appear. If they do, you're in luck; if they don't, your
  518. GPU really doesn't support those shader models.
  519. ENTRY 3
  520. SYMPTOM:
  521. MilkDrop always looks the same - it's always showing the same
  522. preset, and it never changes to a new preset unless I tell it to.
  523. CAUSE:
  524. Scroll Lock is on.
  525. SOLUTION:
  526. The Scroll Lock key is how you tell MilkDrop to lock the current
  527. preset - i.e. don't randomly transition to a new preset unless you
  528. do it. The state of the Scroll Lock key is remembered when you
  529. start or stop MilkDrop, too, so be careful of that. If you are
  530. experiencing this problem, you can fix it in any of the following
  531. three ways:
  532. 1. hit Scroll Lock while MilkDrop is running (and the viz window is active);
  533. 2. load up the MilkDrop config panel (ALT+K), go to the More Settings
  534. tab, and uncheck the "Start milkdrop with preset lock (scroll lock)
  535. key ON" box;
  536. 3. if you're using a modern skin, there is a "random" button on
  537. the frame of the window, which is the inverse of the Scroll Lock
  538. state - i.e. you probably have Scroll Lock on and "random" off.
  539. Click the "Random" button to turn random transitions back on
  540. (and notice that scroll lock gets turned off as a result).
  541. ENTRY 4
  542. SYMPTOM:
  543. I was browsing for presets from within MilkDrop ('L') key and
  544. got lost. How do I get back to my presets?
  545. SOLUTION:
  546. Two ways to fix this. The easiest is to just reset MilkDrop
  547. to its defaults - hit ALT+K to load the MilkDrop config panel,
  548. then click the 'Defaults' button. The next time you launch
  549. MilkDrop, it will start you in the default preset directory.
  550. To fix it manually (and preserve all your settings), run
  551. MilkDrop, hit F8, and paste in this path:
  552. C:\Program Files\Winamp\Plugins\Milkdrop2\presets
  553. [or equivalent].
  554. Another way to fix it is to hit 'L', and browse all the way
  555. down to the root folder (repeatedly select ".."), then
  556. go into Program Files, Winamp, Plugins, MilkDrop2, and finally,
  557. presets.
  558. ENTRY 5
  559. SYMPTOM:
  560. -things flicker through (such as my AIM window ticker, taskbar
  561. clock, web page animations, etc.) when I'm running MilkDrop
  562. in fullscreen mode.
  563. CAUSE:
  564. You're probably running MilkDrop fullscreen at the same
  565. resolution & color depth as your desktop, and Windows isn't
  566. properly handling MilkDrop's request for exclusive access to the
  567. screen, and is still letting other applications paint (draw)
  568. themselves.
  569. SOLUTION:
  570. Change either your Windows desktop resolution or color depth, or
  571. MilkDrop's fullscreen resolution or color depth, so that there
  572. is some difference between the two. (To change your Windows
  573. display settings, go to the Start Menu -> Settings -> Control
  574. Panel -> Display -> Settings tab, and then change the "colors"
  575. or "screen area" settings from there.) Also make sure you're
  576. not using "fake" fullscreen mode (...uncheck this box on the
  577. main screen of the config panel).
  578. <A NAME="6">
  579. <B>6. Known Issues / Misc. / Tips:</B>
  580. ---------------
  581. a. Tip for video capture: if you'd like to save sequences of video
  582. from this plugin, there are several programs out there that will
  583. let you do this. Warning: you will need a ton of free hard drive
  584. space, and a fast CPU helps. A few of these programs are:
  585. "FRAPS" <A HREF="http://www.fraps.com/">http://www.fraps.com/</A>
  586. "Hypercam" <A HREF="http://www.hyperionics.com">http://www.hyperionics.com</A>
  587. b. Close other apps:
  588. For the best graphics performance, try to close as many other
  589. applications as you can, before running the plugin, especially
  590. those that tend to work in the background, such as anti-virus
  591. or file-swapping software. Also, if you must leave other
  592. applications open, try to minimize them (i.e. shrink the window
  593. down to the taskbar) so that they stay out of the painting loop.
  594. c. Windows Vista / Winamp with per-user settings
  595. Be aware that if you're running Vista as a non-admin user,
  596. you can't write to (or delete from) files in the Program Files
  597. directory, which is were MilkDrop 2 is installed. So, anything
  598. you try to write or save (like milkdrop's settings file, milk2.ini;
  599. or presets) will probably end up deep in some user-specific,
  600. virtualized "Program Files" directory somewhere on your hard
  601. drive. Yell at Microsoft for this one!
  602. Also, if you installed Winamp with per-user settings (instead of
  603. shared settings) - on any OS, not just Vista - be aware that your
  604. .INI files (milk2.ini, milk2_img.ini, milk2_cfg.ini) are all
  605. stored in a folder like this:
  606. C:\Documents and Settings\<username>\Application Data\Winamp\Plugins
  607. (Note that 'Application Data' is a hidden folder.) However,
  608. presets, textures, and things like that are all shared between
  609. users, in the real [c:\Program Files]\winamp\plugins\milkdrop2 folder.
  610. If you want to keep your presets separate, you can still do that,
  611. though - just put them in a personal folder, and then seek to it
  612. from within MilkDrop. If you're using per-user settings in Winamp,
  613. it will remember which folder you last used.
  614. <A NAME="7">
  615. <B>7. Using Line-In</B>
  616. -----------------------
  617. If you want to use your sound card's Line-In or CD Audio inputs for
  618. sound data (instead of mp3 files), you can do this. Do the following:
  619. 1. CONNECT WIRES
  620. Connect your audio source (a stereo, a live feed, whatever) into
  621. the line-in (or microphone) 1/8" jack on your sound card. You
  622. might want to test & verify that your cable is good before doing
  623. this.
  624. 2. SELECT SOUND INPUT CHANNEL & ADJUST VOLUME
  625. In Windows, double-click the speaker icon in your systray (where
  626. the clock is). Then, on the menu, go to Options -> Properties
  627. and select the "Recording" option. Then make sure the Line In
  628. (or Microphone) input channel (whichever is appropriate for
  629. your case) is SELECTED (with a check mark) and that the volume
  630. is close to, or at, the maximum. Hit OK.
  631. 3. TELL WINAMP TO USE LINE-IN
  632. Open Winamp, and hit CTRL+L (the "Open Location" hotkey). Now
  633. type in "linein://" as the location you want to open. (Leave out
  634. the quotes and make sure you use FORWARD slashes.) Hit PLAY
  635. ('x' key for the lazy), and the little built-in oscilloscope (or
  636. spectrum analyzer) in Winamp should start showing your signal.
  637. 4. RUN MILKDROP
  638. Run MilkDrop as usual. If the waves are too small or large,
  639. either adjust the volume from Windows' Volume Control, or adjust
  640. the sound level at the source.
  641. If you are doing shows using live audio, and if you have a multiple monitor
  642. setup, you might also want to use the "VJ mode" feature, which lets you
  643. control MilkDrop (even editing shaders on the fly, etc.) via a separate monitor.
  644. <A NAME="8">
  645. <B>8. Acknowledgements</B>
  646. -----------------------
  647. A very special thanks & triple word scores out to Francis Gastellu
  648. and Justin Frankel for the use of their quite-excellent
  649. realtime mathematical expression evaluation library, evallib.
  650. A huge thanks to Rovastar for running milkdrop.co.uk and all
  651. of the work and passion he has put into making MilkDrop great.
  652. Also, a super special thanks go out to the following preset
  653. authors for their excellent artistic & mathematical work:
  654. Aderrasi
  655. Bill Melgren
  656. Che
  657. CTho
  658. Idiot
  659. Illusion
  660. Krash
  661. Mstress
  662. Rovastar
  663. Rozzor
  664. Studiomusic
  665. Telek
  666. Tobias Wolf Boi
  667. Unchained
  668. Zylot
  669. ...and to everyone else who has contributed.
  670. <A NAME="9">
  671. <B>9. Version History</B>
  672. -----------------------
  673. 2.2 - November 2009
  674. - updated to use ns-eel2 (thanks Justin)
  675. 2.1 - January 2009
  676. -pixel shader 2.0 & 3.0 support tweaks
  677. -unicode support for F2 key feature
  678. -removed some older Milkdrop presets and added some newer ones to Winamp installer
  679. 2.0e - August 2008
  680. -added localization support
  681. -unicode support for milkdrop playlist and title
  682. -tweaked menus
  683. 2.0d - January 2008
  684. -worked around colossal Intel driver bugs. See (or skip) long description in next item.
  685. -tightened up various uses of the DX9 api, to decrease the chances of bugs due to poor DX9 compliance
  686. by drivers for lower-end graphics chips (namely Intel integrated graphics). Most importantly,
  687. all Intel drivers seem to implement DrawIndexedPrimitiveUP() incorrectly, which was killing
  688. MilkDrop. Since Intel has has this collosal failure in their driver for eons, I decided to work
  689. around it, and removed all calls to this function. MilkDrop should now run properly on Intel
  690. graphics chips.
  691. -also did the following little things to help decrease chances of buggy driver interactions:
  692. -now using more exact D3DFVF_TEXCOORDSIZE2(0,1,2) specifiers, in addition to _TEX2, etc.
  693. -cleaned up headers (vertex declarations) in data\*.fx files to more closely match the vertex buffers.
  694. -set z==0 for all vertices during the composite shader
  695. -fixed some bugs w/giant mesh sizes
  696. 2.0c - December 2007 (bundled with winamp 5.51)
  697. -if a texture (used in a shader) is not found, MilkDrop now also looks in the current preset folder
  698. to try and find it. This makes it so that preset downloaders can be lazy and just put
  699. the presets, along with the textures that come with them, into the same directory.
  700. -fixed a bug where blur textures weren't always being sampled with bilinear filtering
  701. -fixed a bug where it would sometimes crash when exiting fullscreen mode while using a modern skin
  702. (needed to tell Winamp that we were the viz window, via SET_EMBED_GUID(avs_guid))
  703. -desktop mode no longer causes explorer to crash in Windows Vista; it instead just shuts
  704. off the icon-re-creation code.
  705. -desktop mode: fixed default placement of icons, when taskbar is on the left/top side of the screen.
  706. -removed Winamp version check, so people can run it with older winamps (within reason)
  707. -if warand() function can't be found (older winamps), it calls a wrapper fn to rand()
  708. -fixed font face for custom messages - was errantly using song title font face for custom msgs
  709. -song title texture size is now based on max of screen width vs. height, rather than just width.
  710. -simple waveform no longer draws itself when its alpha is less than 1/256 (0.004).
  711. -added some cool new presets / filtered out some old crummy ones & repeats
  712. -changes of note for preset authors:
  713. -added "pixelsx" and "pixelsy" to preset's main per-frame and per-vertex equations.
  714. (equiv. of "texsize.xy" in shaders)
  715. -custom waves: you can now vary the # of samples from the custom wave per-frame code.
  716. Added new var, "samples", to custom wave init code [read only] and per-frame code [r/w] -
  717. tells you (and lets you set) the # of samples to draw for the wave.
  718. -'time' value in shaders now wraps back to 0, after 10,000 seconds spent on a preset
  719. (to avoid precision jitters)
  720. -fixed bug where 'Draw Thick' was never working for custom waves.
  721. -added "#define tex3d tex3D" to include.fx
  722. ---( changes after this point were made in v2.0a, 25 Oct 2007, which wasn't officially released... )---
  723. -Preset list scan (when milkdrop launches) now happens in a background thread,
  724. so there is no drop in framerate while the scan is done.
  725. -added instancing to custom shapes!!
  726. -you can now set the # of instances for each of the 4 custom shapes
  727. [1..1024]
  728. -the per-frame code will actually be called 'num_inst' times,
  729. and each time, the variable 'instance' will increment (0,1,2,... num_inst-1).
  730. -lots of new presets
  731. -plugin no longer has a taskbar icon when running in desktop mode
  732. -shader writing: tex2d() now works (before only tex2D() worked)
  733. -fixed default fullscreen display mode (...if you'd never gone to the config
  734. panel and saved your settings, it defaulted you to 1024x768; now it
  735. defaults you to your desktop res).
  736. -fixed a few blending bugs (and greatly cleaned up the code)
  737. for transitioning between presets with mixed pixel shader versions
  738. -transitions: when booleans from the old comp shader interpolate
  739. during a blend, if the old & new shaders did & didn't use a comp shader
  740. (or vice versa), then it will now be smart about when it switches the
  741. boolean, so you don't see any avoidable jumps. (mostly for darken,
  742. video echo orientation, brighten, solarize, etc.)
  743. -presets now save with a few less decimal places for most of the values (less waste)
  744. -finally fixed seldom-seen wave bug; it was due to per-frame code "wave_mystery = time*0.03;" when used with wave types 0,1,4. Now those wave types repeat the waveparam value in the [-1..1] range, so it always looks good.
  745. -fixed preset list selected pos after preset delete
  746. -found and fixed bug with custom wave/shape import
  747. -Fixes to documentation, driver link updates, etc.
  748. -Fixed bug with the 'texture wrap' and 'sustain level' menu items'
  749. visibility (...they should, and now only do, show if the current preset
  750. doesn't use pixel shaders).
  751. -fixed bug with 'edit sprites' and 'edit custom messages' buttons on the config
  752. panel - they were trying to edit the milkdrop 1.0 ini files (milk_*.ini
  753. rather than milk2_*.ini).
  754. -fixed bug with desktop mode - when paused, if you dragged the mouse around
  755. on the desktop, milkdrop would update [new] frames instead of just redrawing
  756. the exact same last [paused] frame.
  757. -fixed bug with desktop mode - if you made winamp run just in the systray,
  758. then ran MD2 in desktop mode, then minimized winamp to the systray,
  759. then used a global hotkey to pause the song, then clicked on some
  760. random window (say, calc.exe) and then clicked back on milkdrop,
  761. the taskbar would disappear. This no longer happens because the
  762. viz window, in desktop mode, now only covers the visible portion
  763. of the desktop, and not the area occupied by the taskbar.
  764. -docs: updated links & text for drivers section
  765. 2.0 - 10 October 2007 (bundled with winamp 5.5)
  766. -MilkDrop has been upgraded from DirectX 8 to DirectX 9.
  767. -This means it now supports Pixel Shaders.
  768. -Each preset can now have two shaders in it: a warp shader
  769. and a composite shader.
  770. -The "warp" shader performs the frame-to-frame image-warping operation.
  771. -The "composite" shader performs the final display of the feedback
  772. image to the user.
  773. -See the <A HREF="milkdrop_preset_authoring.html">preset authoring guide</A> for more information.
  774. -Added a "back" button for presets! You can now use the 'backspace' key
  775. to go back to up to 64 presets that recently played.
  776. -Presets can now load textures (jpg, png, etc.) from disk and use them
  777. (in shaders) for whatever they want.
  778. -Also added several built-in 2D and 3D procedural noise textures.
  779. -You can edit the warp & composite shaders on-screen.
  780. -Per-pixel equations have been renamed to per-vertex equations, because
  781. that's what they really were. These equations determine how each point
  782. moves - on a big grid that covers the screen. For all the pixels in between,
  783. the motion was interpolated. Now, that motion data comes into the warp
  784. shader as a "uv" coordinate, and you can use it like before, or you can
  785. do more work on top of it - but because the pixel shader truly executes
  786. (independently) on each pixel, the warp shader truly operates at a "per-pixel"
  787. resolution.
  788. -When editing per You can now copy and paste to and from the *Windows* clipboard.
  789. CTRL+C copy
  790. CTRL+X cut
  791. CTRL+V paste
  792. -The internal canvas (texture) size is no longer locked to power-of-2 squares;
  793. it can now match the window size perfectly (...or you can override it
  794. to use the old NP2 method).
  795. -Max gridsize is up from 128 to 192.
  796. -Added 'A' key (aggregate) - loads a random preset, then loads the warp shader
  797. from another random preset, and then loads the composite shader from
  798. a third random preset.
  799. -Added 'D' key - cycles between various lock-states for the warp and
  800. composite shaders. When one of these shaders is locked,
  801. loading a new preset will load everything *except* the
  802. locked shaders, creating a mix between the two presets.
  803. -Ditched 'stereo 3D' mode. It never worked that well anyway.
  804. -Added "aspectx" and "aspecty" (read-only) to per-frame and per-vertex variables,
  805. to help presets deal with widescreen display modes properly.
  806. Multiply an X,Y coord by these to make it fit the window properly.
  807. -The q1-q8 variables have been expanded; the range is now q1-q32.
  808. 1.04L - 04 May 2007
  809. -added localization support
  810. -fixed Milkdrop DEP incompatibility
  811. -fixed theming of preferences under XP+
  812. 1.04d - 13 February 2007
  813. -fixed some multi-user issues
  814. 1.04c - 21 June 2006
  815. -added missing files to Winamp installer
  816. -added multi user support
  817. -fixed 100% cpu usage when paused
  818. -added over 200 new Milkdrop presets to Winamp installer!
  819. 1.04b - 10 October 2003
  820. -slimmed down the presets for bundling w/Winamp 5
  821. -fixed blurry text when running in wa5 w/skinning,
  822. before first window resize
  823. -can now start plugin w/o music (Winamp 5+)
  824. -(hopefully Justin shrank the DLL some, too)
  825. 1.04 - 31 July 2003
  826. -upgraded to VMS (VisMegaSDK) 1.05 and DirectX 8. That means a revolutionized
  827. Desktop Mode, better driver support, better multimon support, winamp
  828. skinning (when running in windowed mode), increased general stability,
  829. and much, much more.
  830. -added CUSTOM SHAPES and CUSTOM WAVEFORMS.
  831. -added the following variables for per-frame scripting: (all booleans, except
  832. 'gamma') wave_usedots, wave_thick, wave_additive, wave_brighten
  833. gamma, darken_center, wrap, invert, brighten, darken, solarize
  834. (also, note that echo_zoom, echo_alpha, and echo_orient were already in there,
  835. but weren't covered in the documentation!)
  836. -added 'meshx' and 'meshy' [read-only] variables to the preset init, per-frame,
  837. and per-pixel equations
  838. -cranked max. mesh size up to 128x96
  839. -added alphanumeric seeking to the playlist; while playlist is up,
  840. you can now press A-Z and 0-9 to seek to the next song in the playlist
  841. that starts with that character. SHIFT+A-Z seeks upward (while lowercase/
  842. regular a-z seeks downward).
  843. -added some options to config panel
  844. -sprites & custom messages: added 'kill' keys
  845. -CTRL+K kills all running sprites
  846. -CTRL+T kills current song title anim
  847. -CTRL+Y kills current custom message
  848. -sprites:
  849. -for sprites, color key can't be a range anymore; it's
  850. now limited to just a single color. 'colorkey_lo' and
  851. 'colorkey_hi' have been replaced with just one setting,
  852. 'colorkey'.
  853. -also, behavior of the 'burn' variable has changed; now,
  854. a sprite can be burned in on any frame, not just on the
  855. last frame before it dies. See the sample sprite config
  856. file, milk_img.ini, for more information.
  857. -preset ratings are no longer read in all at once; instead, they are scanned in
  858. 1 per frame until they're all in. This fixes the long pauses when you switch
  859. to a directory that has many hundreds of presets. If you want to switch
  860. back to the old way (read them all in at once), there is an option for it
  861. in the config panel.
  862. -internal texture size now has a little more bias toward a finer texture,
  863. based on the window size, when set to 'Auto'. (Before, for example,
  864. to reach 1024x1024, the window had to be 768x768 or greater; now, it
  865. only has to be 640x640 (25% of the way there). I adjusted it because
  866. before, at in-between resolutions like 767x767, it looked very grainy;
  867. now it will always look nice and crisp, at any window size, but still
  868. won't cause too much aliasing (due to downsampling for display).
  869. -..and much many massive amounts of more!
  870. 1.03 final - 19 June 2002
  871. -fixed bug with motion vectors; when there were 64 of them on X
  872. and 48 and Y (the upper limits), stray lines would sometimes
  873. be drawn along the top and right edges of the screen.
  874. -revamped the help screen
  875. -added some cool new presets
  876. -touched up the documentation
  877. 1.03 beta 3 - 15 May 2002
  878. -letter 'g' no longer gets cut off in custom messages
  879. -(oops... it's 'wave_mode', not 'wave_type'.)
  880. -fixed 'q1'..'q8' in the preset init code.
  881. -revamped the way presets are loaded & blended; transitions
  882. should be cleaner now.
  883. -made motion vectors morph more smoothly during transitions;
  884. if the old preset had motion vectors on but the new one
  885. doesn't, then the #, drift speed, length, and color
  886. of motion vectors does not change as they fade out;
  887. and vice versa if the mv's are fading in.
  888. -added optional 'burn-in' for sprites, so when they are finished,
  889. they leave an imprint in the background. The sprite will
  890. burn into the background at the end of its lifetime
  891. if the variable 'burn' is set to a nonzero value; if 'burn'
  892. is zero, the sprite will not burn in.
  893. -motion vectors: reverted to 1.02 functionality, following
  894. krash's advice. So mv's should now be backwards-compatible
  895. (with 1.02 versions and earlier). Now, dx and dy are constant
  896. offsets for the motion vectors; if you want them to scroll,
  897. alter dx and dy based on the time (or frame).
  898. -finished writing critical notes in milk_img.ini.
  899. -revamped the keyboard interface for custom messages & sprites.
  900. see the documentation. The realtime help screen won't
  901. provide too useful, though (not enough space to lay it all
  902. down there).
  903. 1.03 beta 2 - 1 May 2002
  904. -preset comments are in; start them with '//' anywhere on the line,
  905. and the rest of the line will be ignored.
  906. -added variables:
  907. -fps (read-only)
  908. -video echo options: echo_zoom (0..1..+inf), echo_alpha (0..1),
  909. echo_orient (0,1,2,3)
  910. -motion vector drift: mv_dx, mv_dy (a la geiss)
  911. -wave_mode[0-7], wave_a(0..?)
  912. -fixed texel alignment
  913. -nVidia: dx|dy += -1/(texsize*2)
  914. -same for: http://forums.winamp.com/showthread.php?threadid=83401
  915. All nVidia Cards (Many confirmed tested),
  916. 3dfx Voodoo Cards (Voodoo 3 confirmed tested),
  917. ATI Cards (ATI All-In-Wonder confirmed Tested)
  918. Kyro II Confirmed Tested
  919. even Illusion's antiquated Intel Card needs it.
  920. -(untested: the matrox cards)
  921. -super thanks to Rovastar for researching & cracking this one
  922. -added option for thicker waves; see wave menu.
  923. -note: only takes effect when texture size is >= 512x512!
  924. -modified presets for new texel alignment fix:
  925. -Zylot - Tunnel of Illusion
  926. -Zylot - S. Pulse Virus
  927. -Most of Krash' s presets
  928. -Illusion and Rovastar - Grand Odyssey Mod
  929. -Unchained: Goo Kung Foo and Perverted dialect.
  930. -optimized some, thanks to Rovastar for pointing out lines in
  931. per-pixel code that could be migrated into per-frame code.
  932. -many of my own: made waveforms thick
  933. -some new presets
  934. -(bipolar 4,5; supernova 2; calligraphy; others from milkdrop.co.uk)
  935. -fixed bug with sound analysis where sound variables in expressions
  936. (bass, bass_att, treb, etc.) could be NAN on the first frame
  937. that milkdrop ran. (symptoms could be bad if the value was
  938. used over & over in subsequent frames!)
  939. -saved about 100k on the installer by updating to NSIS 1.98 and
  940. using the new bzip2 compression. (thanks again to rovastar)
  941. -made the texture used for song titles & custom messages take 1/4
  942. as much video memory (was square before, blech - now it tries
  943. 4:1; if that fails it tries 2:1; then 1:1 as a last resort.)
  944. -added config panel option to mute all errors/warnings that might
  945. appear in the upper-right corner.
  946. -revamped the configuration for desktop mode w/software blit.
  947. Now, you have a choice of 3 different ways to bring the image
  948. across the bus (from video to system memory). Then the image
  949. is converted from RGB to YUV on the cpu, and then you also get
  950. to select how to send the image across the bus again, back to
  951. video memory, for display on the desktop. The 3 methods are
  952. 1) copy the data using an mmx-accelerated memory copy routine
  953. (never-fail cornbread)
  954. 2) use directx to blit from one surface to another
  955. (sometimes drivers flake out on this)
  956. 3) skip it; read/write directly to/from video memory
  957. (never-fail cornbread)
  958. Regarding 1 vs. 3: they'll both always work; usually #1 is
  959. faster going from video to system memory, and #3 is faster
  960. going from system back to video; but not always. Try different
  961. combinations out on your card and see what happens.
  962. -sprites!
  963. users can edit 'milk_img.ini' and write their own code to control
  964. the sprites. Each sprite is an instance of a jpeg image from disk,
  965. displayed according to the code in the .ini file. Up to 16 sprites
  966. can be running at once.
  967. -stole Y + K keys for use with custom messages & sprites.
  968. Hit 'y' to enter custom message mode, then enter two-digit
  969. codes to launch custom messages. Hit 'k' to enter sprite
  970. mode, then enter three-digit codes to launch sprites.
  971. -added 'preset initialization code', so you can initialize
  972. your custom variables when the preset is first loaded.
  973. -increased number of 'q' variables from 5 to 8. (q1..q8 are
  974. used to carry values from the per-frame equations to the
  975. per-pixel equations. Note that they can now also carry
  976. values from the preset init equations, on to the per-frame
  977. AND per-pixel equations!)
  978. -automated the brightness slider in the config panel; now there's
  979. a checkbox that says, 'guess, based on my video card'. Currently,
  980. the auto-brightness algorithm is simple: if you have an nVidia
  981. card, it will set it to 2; otherwise, it sets it to 0.
  982. 1.02 - 2/7/02
  983. -added CUSTOM MESSAGES - you can edit them in the file MILK_MSG.INI in your
  984. WINAMP\PLUGINS directory. They are displayed by either keying in their
  985. 2-digit numerical code ('##') at runtime, or randomly if you choose this
  986. option from the config panel (see the 'More Options' dialog).
  987. -also added RANDOMIZATION FOR SONG TITLE ANIMATIONS (also see the 'More
  988. Options' dialog from the config panel).
  989. -added INSTANT HARD CUT HOTKEY: 'H'
  990. -for preset authors:
  991. -per_frame and per_pixel code use to get cut off if they didn't fit
  992. on the screen; this is now fixed (flips to next page as needed)
  993. -when editing per-frame/per-pixel equations, the line that the cursor
  994. is on is now highlighted!
  995. -fixed an old bug where if the per-pixel or per-frame code had nothing
  996. in it except spaces & linefeeds, it would display an error message
  997. saying "error in per-{pixel|frame} code".
  998. -added a 'trail length' parameter to the motion vectors.
  999. -added a bunch of per-frame variables to control the motion vectors:
  1000. mv_x, mv_y, mv_l, mv_r, mv_g, mv_b, mv_a. Also got rid of the
  1001. motion vectors on/off setting; now the opacity controls this.
  1002. -cranked up max. # of user variables from 23 to 33. (Added 16 slots,
  1003. but used 6 of them for motion vectors.)
  1004. -added a per-frame variable called 'monitor'. Set the value of this
  1005. variable in the per-frame code, and then press 'N' to monitor (show)
  1006. its value in the top-right corner of the screen. Should be very
  1007. useful for debugging. (Thanks to Krash for the great suggestion
  1008. on how to implement this!)
  1009. -added the int() function, which turns the argument into an integer
  1010. (whole number). Rounding is toward zero. Examples:
  1011. int(-1.1) -> -1, int(-1) -> -1, int(-0.9) -> 0;
  1012. int(0.9) -> 0, int (1.0) -> 1, int(1.1) -> 1;
  1013. int (2.1) -> 2.
  1014. -improved 3D mode:
  1015. -drastically improved quality of stereo 3D images by changing default
  1016. 3d colors to CYAN (full green + blue; was just full blue) for the
  1017. left eye and RED for the right eye. It turns out that this provides
  1018. an equivalent 3d image, but gives you the full range of colors for
  1019. all presets, which in turn probably makes the 3Dness more visible
  1020. to your brain anyway.
  1021. -also, when in 3D mode, made the waveforms 60% white and 40% their
  1022. original color (used to be 100% white because so much color was lost
  1023. in the green channel).
  1024. -song titles:
  1025. -(added randomization, as mentioned above)
  1026. -improved max. resolution of song titles by increasing the max.
  1027. allowable GDI font size
  1028. -fixed longstanding bug with the "burning in" of song titles after
  1029. they're done displaying; the old, floating location wouldn't exactly
  1030. match where the title would be burned into the background & melt away.
  1031. -timing & animation:
  1032. -protected against milkdrop's animation running super-fast because the
  1033. clock jumped way ahead when no frames were rendered (i.e. milkdrop
  1034. got stalled somehow).
  1035. -smoothed the animation by assuming the time for each frame to be 80%
  1036. of 1/fps and 20% the actual time reported.
  1037. -misc:
  1038. -converted ANSI_CHARSET to DEFAULT_CHARSET in CreateFont() calls (should
  1039. fix some display of funky/foreign character sets)
  1040. -added 'R' key to toggle random vs. sequential order for loading presets
  1041. -fixed alphanumeric sorting of presets (used to have minor errors such
  1042. as putting "galaxy 2" before "galaxy", and so forth - unfortunately
  1043. this is how strcmp() - even Windows Explorer - sorts them. I rewrote
  1044. strcmp() to make it sort in a more 'natural' order.)
  1045. -'&' characters in preset filenames no longer show up as an '_' character,
  1046. although it still looks funny if you try to save one with an '&' already
  1047. in it, but don't worry, it will preserve the '&' (even though it looks
  1048. messed up). Note that you still can't type a *new* '&' into the filename
  1049. when you go to save a preset. It is safe to rename it from outside
  1050. MilkDrop, though, and use it in MilkDrop later.
  1051. -fixed preset-to-preset blending bugs for the 10 border variables.
  1052. -fixed a bug in blending from a preset using waveform #7 (two horizontal
  1053. waveforms) to waveform #0 (a circular waveform), where the right edge
  1054. of the top horizonal wave would get connected (via a straight line)
  1055. to the left edge of the bottom horizontal wave, as soon as the blend
  1056. began.
  1057. -m_debug.txt: added some caps detection info at init time; screened out
  1058. logging of WM_MOUSEMOVE, WM_NCHITTEST, and WM_SETCURSOR messages.
  1059. -improved motion vector motion prediction so that the tips of the motion
  1060. vectors should be perfectly matched from frame to frame, when the
  1061. trail length is set to 1. **Note that it defaults to 0.9, so that
  1062. the look is similar to the old, mismatched version! (so the presets
  1063. are backwards compatible.) **Also note that for video cards that
  1064. do not support anti-aliased edges, there could be up to 1 pixel of
  1065. error here. Check m_debug.txt for whether or not your driver/card
  1066. supports anti-aliased edges for lines.)
  1067. 1.01 - 12/7/01
  1068. -playlist feature ('p' key) no longer crashes on Windows ME/98SE.
  1069. -fixed problems with ampersand ('&') character in song titles/playlist
  1070. -fixed bug with previous max. of 23 user variables per session. (Now,
  1071. it's a max of 23 user variables per preset, as it should be.)
  1072. 1.0 - 10/30/01
  1073. -added a section to the documentation on using "line-in" as your
  1074. audio source (instead of mp3's)
  1075. -lowered minimum frame time (enforced by winamp) from 25 ms to 10ms,
  1076. so now, the max. possible fps is 100 instead of 40.
  1077. -tightened A/V sync by 5 ms (raised audio latency from 25 to 30 ms).
  1078. -fixed &'s in song titles (as displayed when you hit F2)
  1079. -F7,F8 were switched in the help screen (F1)
  1080. -when running in desktop mode, if you have a pattern on your windows
  1081. background, it gets nuked. Before, if you had a pattern, the
  1082. pattern would remain and you'd only be able to see milkdrop through
  1083. the small boxes of your desktop icons' background text. I didn't
  1084. bother restoring the pattern upon exit because I am lazy and assume
  1085. that nobody intentionally uses these things anymore. =)
  1086. -improved warning message for windowed/desktop modes, when auto-texture-
  1087. size is scaled down due to insufficient video memory. It previously
  1088. just reported the downsizing, but now, it also recommends that you
  1089. drop your color depth to 16 bits (if you haven't already) and that
  1090. you try decreasing your screen resolution.
  1091. -might have fixed a bug with the playlist feature ('p') crashing people's
  1092. machines.
  1093. 0.99g - 9/11/01
  1094. -added playlist browsing (hit 'p')
  1095. -added checkbox to fix slow text (finally!)
  1096. -song titles fixed too (on some cards, they were garbled) (also, in low
  1097. video mem. situations, they might have never appeared - that's fixed too)
  1098. -added checkbox to allow double buffering for desktop mode; default is
  1099. UNCHECKED; can provide significant speed boost, but you might see some
  1100. tearing during the vertical retrace; if so, enable double-buffering.
  1101. It used to always be double-buffered, which is slower, though it is
  1102. page-tearing-artifact-free.
  1103. -added always-on-top option for windowed mode
  1104. -added "page x of y" footnote to the preset and playlist menus
  1105. -improved the auto-texture-size management code, so users will be less
  1106. likely to get the "couldn't create offscreen surface #1" (or #2) error.
  1107. Instead, the textures are continally downsized until there is enough
  1108. memory for them. This might mean blockier images, but at least it will run.
  1109. -desktop mode can now do software blit when an RGB overlay surface is created.
  1110. (before, software blit was really only available for YUV-type overlays.)
  1111. -desktop mode compatibility improved: more likely to work at higher resolutions now
  1112. -desktop mode: fixed YUV-type *non-mmx* software blits when Windows is in 16-bit color.
  1113. (weren't implemented before; it just assumed windows was in 32-bit color,
  1114. and the result would look munged.)
  1115. -improved mmx memcpy: will now copy as long as the (difference between two
  1116. pointers) % 8 is zero. (before, they both had to be a multiple of 8).
  1117. -reorganized the config panel; nice
  1118. -centered the config panel on the screen (by removing winamp as hwndparent - der)
  1119. -centered the 3 color picker dialogs (by specifying current dialog window
  1120. as the parent - der)
  1121. -(also cleaned up redundant code for color picker dialogs)
  1122. -super-slight optimizations to speed of waveform blending
  1123. -tweaked the way the "clear screen at startup" option works, since some
  1124. users had problems with it
  1125. -fixed aspect ratio, so when window is at an extreme AR, it clips the extra
  1126. (instead of fitting the image to the window)
  1127. -fixed a fullscreen lost surface bug introduced in 0.99f that blacked
  1128. the screen out if you ALT-TABBED out of milkdrop & returned.
  1129. -fixed bug where tooltips were lost on some systems (left variable in,
  1130. but no way to change it - locked to TRUE for now)
  1131. -fixed bug where 'try for RGB overlay...' and 'try for YUV overlay...'
  1132. checkboxes were disabled when software blit was on. (Don't know what
  1133. I was thinking there!)
  1134. -tweaked presets; added some cool shift-on-beat effects
  1135. 0.99f - 8/22/01
  1136. -added graphical song titles
  1137. -added screen borders; can be used to create interesting feedback patterns when
  1138. zooming out
  1139. -waveforms now blend smoothly!
  1140. -finally gave milkdrop an application icon
  1141. -added 'U' key to toggle winamp's shuffle feature on/off
  1142. -fixed bug with handling of 'r' key when preset menu is up; now, to rename a file,
  1143. use INSERT
  1144. -fixed a 1-frame-delay bug for warping (caused a lag for audio-driven 'warps')
  1145. -fixed bug where 'progress' variable's value was always 0 in per-pixel eq's
  1146. (thanks rovastar)
  1147. -removed "F7: show tooltips for menu items" hotkey (needed it for title animations)
  1148. -removed U, I keys (for warp)
  1149. -moved T key (for zoom) to I (i=zoom in, I=zoom out) (T is now used for song titles)
  1150. -speed optimization: now using memcpy_MMX to copy 576*2*4=4608 bytes of sound data
  1151. per frame
  1152. -size optimizations: painstakingly shaved 8k off the .dll
  1153. -in windowed mode, when a user resizes the window to a size that's too large and
  1154. there's not enough video memory and MilkDrop closes, it now resets the size
  1155. of the window for the next time you run MilkDrop. (before it would just try
  1156. to start the next time with the same window position/size and keep failing.)
  1157. -added 'try for RGB overlay before trying YUV-types' checkbox
  1158. -added 'try for YUY2 overlay surface before trying UYVY' checkbox
  1159. -added "stereo 3d always on" option (unchecked by default)
  1160. -added "clear screen at startup" option (checked by default)
  1161. -made soft cut timer reset on hard cuts
  1162. 0.99e - 7/5/01
  1163. -added beat-driven HARD CUTS; very cool
  1164. -added a VJ mode, where you can make all the text draw in a separate
  1165. window instead of to the main graphics display; should be very
  1166. handy for concerts
  1167. -added preset rating; use + and - keys (volume control is only available
  1168. w/up,down arrows now); use F6 to show rating of current preset
  1169. -you can now use any color lenses for left/right stereo vision; just tell
  1170. it what color you've got (by speaking aloud)
  1171. -desktop mode optimization: block copy from video memory is now optional,
  1172. because on 5-10% of systems, it actually makes things slower.
  1173. -transitions between 2 presets both using video echo, but in different
  1174. orientations, are now smooth
  1175. -added 'progress' variable to per-frame and per-pixel equations; tells you
  1176. how far through the preset you are (temporally) (0..1), so you can make
  1177. gradually-shifting effects
  1178. -added mystery param to per-frame eq's (variable name is 'wave_mystery')
  1179. -settings such as showing song titles, times, fps, ratings, tooltips, etc.
  1180. are all now preserved from session to session
  1181. -when Load menu is up, added seeking by typing in first char of name
  1182. -also disabled left/right arrows when Load menu is up, so music
  1183. won't skip on you
  1184. -windowed mode now remembers the window's final size, position between sessions
  1185. -safe for 2nd monitor, too
  1186. -fixed bug with ALT-TABBING in and out of fullscreen mode
  1187. -fixed bug with vertical spacing of song title/time readout when the fancy
  1188. font size was set to anything but "normal"
  1189. -plugin listing (in Winamp prefs screen) and the window title now show the
  1190. version #
  1191. -fonts now scale with the window
  1192. -protected against trying to run MilkDrop while the config panel is still open
  1193. -fixed the 1-pixel-wide garbage that sometimes sat at the right and bottom
  1194. edges, in windowed mode
  1195. -fixed bug where after going to another app, fullscreen, while in Desktop Mode,
  1196. upon your return from fullscreen the overlay surface was lost (and just sat
  1197. there, black).
  1198. -stopped sending WM_KEYUPs to Winamp (oops; never sent WM_KEYDOWNS to begin
  1199. with anyway)
  1200. -load menu: '[..]' now reads '[..] (parent directory)'
  1201. -config panel: broke some stuff off into a 'more options' dialog
  1202. 0.99d - 6/5/01
  1203. -desktop mode is officially in
  1204. -added new waveforms
  1205. -added temporal wave alignment
  1206. -added fps limiting
  1207. -added "view documentation" button to config panel
  1208. -added UP/DOWN keys for volume up/down
  1209. -improved seeking for CTRL-LEFT, CTRL_RIGHT: now seeks by breaks between groups of
  1210. alphabetic characters, instead of just looking for spaces.
  1211. -added 5 new variables (q1..q5) for passing values from the per-frame to the per-pixel
  1212. equations (user-defined variables don't carry over like permanent variables)
  1213. -added brighten (square root), darken (square), invert, and solarize filters
  1214. -tweak: made transitions slightly sharper (10% more toward a cosine curve than a
  1215. linear curve now)
  1216. -now setting D3DRENDERSTATE_SHADEMODE to D3DSHADE_GOURAUD (used to be FLAT,
  1217. and combined with per-vertex coloration, which seemed to be asking for trouble)
  1218. -added warning messagebox for if first call to SetRenderTarget fails
  1219. -fixed bugs with the values of "x" and "y" for per-pixel equations
  1220. -x: range was -1..1; should have been 0..1
  1221. -y: range was 0..2; should have been 0..1
  1222. -(all presets using x,y in their per-pixel equations had to be adjusted)
  1223. -fixed bug where if the previous preset folder disappeared, you couldn't hit 'L'
  1224. to browse to a new folder
  1225. -fixed a potential bug with dither not being a hardware capability
  1226. -fixed a bug with scroll lock (didn't reset the LED state when MilkDrop started)
  1227. -fixed a bug with loading presets with blank lines in the per-frame or per-pixel
  1228. equations
  1229. -(the blank line, and everything after it, would not be read in)
  1230. -revamped gamma loop
  1231. 0.99c - 5/21/01
  1232. -added red-blue stereo; use F9 to toggle it on/off
  1233. -note: you need those cheesy glasses with the red & blue plastic
  1234. lenses for this to work!
  1235. -added a bunch of 3D presets in the \3D subdir
  1236. -added the ability to browse the directory structure
  1237. -added F8 to jump to new directory (or drive)
  1238. -changed the 'fix pink/white color saturation artifact' checkbox
  1239. into a simple brightness slider, so you have more freedom with it
  1240. -"+", "-" keys now work for the numeric keypad and regular keys.
  1241. -fixed a video memory leak for windowed mode (the manually-created backbuffer wasn't
  1242. being released; once you exited winamp, though, the memory was freed)
  1243. -fixed a bug with closing Winamp while milkdrop was running in windowed mode
  1244. -fixed a weird bug with hitting ESC from the config panel sometimes doing nothing
  1245. -fixed a weird bug where when milkdrop was launched in windowed mode,
  1246. keystrokes to winamp don't work until you moused-over the winamp window
  1247. 0.99b - 5/16/01
  1248. -added windowed mode
  1249. -added +/- keys for volume control
  1250. -added SHIFT + left/right arrows to rewind/ffwd 30 seconds
  1251. -improved various error messages
  1252. -protected vs. running config panel while MilkDrop is running
  1253. -protected vs. running milkdrop without music playing
  1254. 0.99 - 5/11/01
  1255. -first version
  1256. <A HREF="#milkdrop_top">return to top</A>
  1257. </PRE>
  1258. </BODY>
  1259. </HTML>