diff options
author | Michiel Van Der Kolk <not.valid@email.address> | 2005-03-17 20:50:03 +0000 |
---|---|---|
committer | Michiel Van Der Kolk <not.valid@email.address> | 2005-03-17 20:50:03 +0000 |
commit | 27be5bc72855a0fbbdae230bc144624c9eb85f5e (patch) | |
tree | b553f1321df924c4b744ffcab48dce5f4f081f7d /apps/codecs/dumb/release.txt | |
parent | 7e7662bb716917ca431204f0113d400c1014f2e8 (diff) | |
download | rockbox-27be5bc72855a0fbbdae230bc144624c9eb85f5e.tar.gz rockbox-27be5bc72855a0fbbdae230bc144624c9eb85f5e.zip |
Initial check in dumb 0.9.2 - has a few usages of floating point that should
be rewritten to fixed point. seems to compile cleanly for iriver.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6197 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/dumb/release.txt')
-rw-r--r-- | apps/codecs/dumb/release.txt | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/apps/codecs/dumb/release.txt b/apps/codecs/dumb/release.txt new file mode 100644 index 0000000000..eff4b8ded8 --- /dev/null +++ b/apps/codecs/dumb/release.txt | |||
@@ -0,0 +1,406 @@ | |||
1 | /* _______ ____ __ ___ ___ | ||
2 | * \ _ \ \ / \ / \ \ / / ' ' ' | ||
3 | * | | \ \ | | || | \/ | . . | ||
4 | * | | | | | | || ||\ /| | | ||
5 | * | | | | | | || || \/ | | ' ' ' | ||
6 | * | | | | | | || || | | . . | ||
7 | * | |_/ / \ \__// || | | | ||
8 | * /_______/ynamic \____/niversal /__\ /____\usic /| . . ibliotheque | ||
9 | * / \ | ||
10 | * / . \ | ||
11 | * release.txt - Release notes for DUMB. / / \ \ | ||
12 | * | < / \_ | ||
13 | * | \/ /\ / | ||
14 | * \_ / > / | ||
15 | * | \ / / | ||
16 | * | ' / | ||
17 | * \__/ | ||
18 | */ | ||
19 | |||
20 | |||
21 | ****************************************** | ||
22 | *** DUMB v0.9.2, released 2 April 2003 *** | ||
23 | ****************************************** | ||
24 | |||
25 | Yes, there really has been a release. This is not a day-late April fools' | ||
26 | joke. | ||
27 | |||
28 | DUMB's full name has changed! The old "Dedicated Universal Music | ||
29 | Bastardisation" was rather silly, and not much more than a forced attempt at | ||
30 | finding words beginning with D, U, M and B. I spent weeks and weeks browsing | ||
31 | dictionaries and hopelessly asking others for bright ideas, until the | ||
32 | brilliant Chris "Kitty Cat" Robinson came up with "Dynamic". I decided to | ||
33 | keep the U as Universal, since a DUH struct can hold digital music in any | ||
34 | format. Now all that remained was the B, but it didn't take me long to come | ||
35 | up with Bibliotheque, which, despite looking French, is indeed considered an | ||
36 | English word by Oxford English Dictionary Online, to which my university has | ||
37 | a subscription. So there you have it - the name now makes sense. | ||
38 | |||
39 | The two most significant additions to the project would have to be the new | ||
40 | thread safety (with an important restriction, detailed in docs/dumb.txt), and | ||
41 | the new build system. The silly 'makeall' and 'makecore' scripts are gone. If | ||
42 | you are a GCC user, all you need do now is run 'make' and 'make install', as | ||
43 | for other projects. You don't even have to run a 'fix' script any more! There | ||
44 | are some caveats, which are covered in readme.txt. If you use Microsoft | ||
45 | Visual C++ 6, you no longer need to obtain GCC and GNU Make - there is a | ||
46 | project file just for you. | ||
47 | |||
48 | Huge thanks go to Steve Terry for testing on Windows XP - about five times - | ||
49 | and to lillo for testing on BeOS and Mac OS X. Thanks also to X-G for testing | ||
50 | on a Windows system that has consistently posed problems for DUMB's old | ||
51 | makefiles. | ||
52 | |||
53 | There was a bug whereby al_poll_duh() would sometimes cause the music to | ||
54 | resume playing if you called it after al_pause_duh(). Whether this was DUMB's | ||
55 | fault for misusing Allegro's API, or a bug in Allegro, is unclear, but this | ||
56 | release makes it work. | ||
57 | |||
58 | In one of my projects, I found that my AL_DUH_PLAYER stopped playing when | ||
59 | there were lots of other sound effects. In order to fix this, I programmed | ||
60 | DUMB to set the priority of the stream's voice to 255, the maximum. I also | ||
61 | added al_duh_set_priority(), so you can set the priority yourself if you need | ||
62 | to. | ||
63 | |||
64 | The resampling code has undergone a transformation. The bad news is that the | ||
65 | linear average code is no longer in use. The good news is that where DUMB's | ||
66 | resamplers used to require three extra samples' worth of memory to be | ||
67 | allocated and initialised, it now copes with just the sample data. And it | ||
68 | does a very good job at bouncing off loop points and otherwise hurtling | ||
69 | around the sample. The resampling code is considerably more complicated, but | ||
70 | the code that uses the resamplers is considerably simpler - and if you | ||
71 | noticed a slight click in some bidirectionally looping samples, you'll be | ||
72 | pleased to know that that click is gone! | ||
73 | |||
74 | I have also devoted some effort to optimisation. It seemed hopeless for a | ||
75 | while, but then I actually figured out a way of making it faster AND more | ||
76 | accurate at the same time! DUMB is now quite a bit faster than it was, and it | ||
77 | mixes not with 16-bit precision, but with 24-bit precision. (It used 32-bit | ||
78 | integers all along, but the difference is that it now makes use of 256 times | ||
79 | as much of the integer's range.) | ||
80 | |||
81 | There have been the usual improvements to playback. The last release occurred | ||
82 | rather too soon after I had fixed the XM effect memories; EAx and EBx, fine | ||
83 | volume ramps, had been neglected. These are now handled properly. | ||
84 | |||
85 | In previous versions of DUMB, muted channels in IT were actually played with | ||
86 | surround sound panning (where the right-hand channel is inverted). This has | ||
87 | been fixed, so muted channels will really be muted now. | ||
88 | |||
89 | There were also some subtle problems with the way DUMB handled New Note | ||
90 | Actions for IT files. It turned out that, in all releases of DUMB so far, | ||
91 | pitch, filter and panning envelopes and sample vibrato were not being | ||
92 | processed for any note that was forced into the background by a new note on | ||
93 | the same channel! This only affected IT files. Not only has this been fixed, | ||
94 | but envelope interpolation is much more accurate. Long trailing envelope- | ||
95 | driven fade-outs sound a lot better now! | ||
96 | |||
97 | Since panning and filter envelopes are more precise, extra fields have been | ||
98 | added to the DUMB_IT_CHANNEL_STATE struct, used by | ||
99 | dumb_it_sr_get_channel_state(). These fields hold the 'decimal' parts of the | ||
100 | pan and filter cut-off. See dumb.txt for details. | ||
101 | |||
102 | Mxx (set channel volume) now correctly only modifies the last note played on | ||
103 | the channel, not any previous notes that have been forced into the background | ||
104 | by New Note Actions, and filter effect processing is now closer to what | ||
105 | Impulse Tracker does. | ||
106 | |||
107 | The XM loader was slightly flawed and could crash on files containing samples | ||
108 | with out-of-range loop points. One such file was given to me. This has been | ||
109 | fixed. | ||
110 | |||
111 | Finally, the legal stuff. Julien Cugniere has been added to the list of | ||
112 | copyright owners. He deserves it, for all the work he did on the XM support! | ||
113 | And the licence has been changed. You are no longer required to include a | ||
114 | link to DUMB in a project that uses DUMB; the reasons for this relaxation are | ||
115 | explained in licence.txt. However, the request is still there ... | ||
116 | |||
117 | As usual, enjoy! | ||
118 | |||
119 | |||
120 | ********************************************** | ||
121 | *** DUMB v0.9.1, released 19 December 2002 *** | ||
122 | ********************************************** | ||
123 | |||
124 | Hi again! Lots to say this time, so I shall cut right to the chase. | ||
125 | |||
126 | DUMB now supports Impulse Tracker's low-pass resonant filters! Huge thanks go | ||
127 | to Jeffrey Lim, author of Impulse Tracker, for giving me what information he | ||
128 | still had regarding the algorithm; to cut a long story short, modifying | ||
129 | ModPlug Tracker's source code (which is in the Public Domain) led to an | ||
130 | algorithm whose output matched Impulse Tracker's perfectly. | ||
131 | |||
132 | Please note that ModPlug Tracker's filters as they stand do not match Impulse | ||
133 | Tracker's, and I have no interest in supporting ModPlug Tracker's variant | ||
134 | (especially not the integer rounding problems). Please see docs/modplug.txt, | ||
135 | new in this release, for details. | ||
136 | |||
137 | Thanks also go to Fatso Huuskonen for motivating me to add filter support, | ||
138 | and providing me with several great IT files to test it with! | ||
139 | |||
140 | The other important feature added for this release is click removal. Up until | ||
141 | now, DUMB has generated clicks when cutting notes, starting samples in the | ||
142 | middle, and so on. This version of DUMB will remove any such clicks. Note | ||
143 | that DUMB does not use volume ramps to accomplish this; the algorithm will | ||
144 | not take the bite out of the music! | ||
145 | |||
146 | In other news, DUMB now supports sample vibrato for IT files, and instrument | ||
147 | vibrato for XM files. A slight bug in New Note Action handling for IT files | ||
148 | has been fixed; Note Fade will not break the sustain loops of the sample and | ||
149 | envelope, as it did before. Tremor handling (Ixy) had a strange bug in it, | ||
150 | which has been fixed. | ||
151 | |||
152 | Support for XM files has been greatly enhanced. The XM envelope handling new | ||
153 | in the last release contained a huge bug, resulting in notes seeming not to | ||
154 | stop when they should; this has been fixed. Some XM files crashed DUMB, while | ||
155 | others failed to load; these problems have been solved. Effect memories now | ||
156 | work properly for XM and MOD files, to the best of my knowledge. Some other | ||
157 | differences between IT and XM have been accounted for, most notably the | ||
158 | Retrigger Note effects, Rxy and E9x. | ||
159 | |||
160 | DUMB's sound quality and accuracy are not the only areas that have been | ||
161 | enhanced. The API has been expanded, at last. You can now detect when a | ||
162 | module loops, or make it play through just once. You can ask DUMB to inform | ||
163 | you every time it generates some samples; this is useful for visualisation. | ||
164 | For IT files, you can intercept the MIDI messages generated by Zxx macros, | ||
165 | enabling you to synchronise your game with the music to some extent. (There | ||
166 | is no such method for XM, S3M or MOD files yet; sorry. Also note that the | ||
167 | function will be called before you actually hear the sound; I cannot improve | ||
168 | this until DUMB has its own sound drivers, which won't be for a while.) You | ||
169 | can query the current order and row. Finally, operations like changing the | ||
170 | speed and tempo are now possible, and you can query the playback state on | ||
171 | each channel. | ||
172 | |||
173 | Some parts of DUMB's API have been deprecated. Simple programs that use | ||
174 | Allegro will be unaffected, but if you get some compiler warnings or errors, | ||
175 | please review docs/deprec.txt. This file explains why those parts of the API | ||
176 | were deprecated, and tells you how to adapt your code; the changes you need | ||
177 | to make are straightforward. Sorry for the inconvenience. | ||
178 | |||
179 | For various reasons, I have made DUMB's makefiles use different compiler | ||
180 | flags depending on your GCC version (unless you are using MSVC). There is no | ||
181 | elegant way of getting the makefiles to detect when GCC is upgraded. If you | ||
182 | upgrade GCC, you should execute 'make clean' in order to make DUMB detect the | ||
183 | GCC version again. Otherwise you may get some annoying error messages. (It is | ||
184 | wise to do this in any case, so that all the object files are built with the | ||
185 | same GCC version.) | ||
186 | |||
187 | DUMB's example players have been unified into a single player called | ||
188 | 'dumbplay'. The player has been enhanced to display messages when the music | ||
189 | loops, and when XM and MOD files freeze (effect F00; more information on this | ||
190 | in docs/howto.txt). | ||
191 | |||
192 | Finally, as noted on DUMB's website, the release notes from the last release | ||
193 | were inaccurate. It has been verified that DUMBOGG v0.5 does still work with | ||
194 | that release, and still works with this release. The esoteric DUMBOGG v0.6 | ||
195 | has not been created yet, since DUMBOGG v0.5 still works. | ||
196 | |||
197 | Please scroll down and read through the indented paragraphs in the notes for | ||
198 | the last release; they are relevant for this release too. | ||
199 | |||
200 | That's all folks! Until next time. | ||
201 | |||
202 | |||
203 | ******************************************* | ||
204 | *** DUMB v0.9, released 16 October 2002 *** | ||
205 | ******************************************* | ||
206 | |||
207 | MOD support is here! DUMB now supports all four of the common module formats. | ||
208 | As usual, there have also been some improvements to the way modules are | ||
209 | played back. Most notably, handling of tone portamento in IT files has been | ||
210 | improved a lot, and XM envelopes are now processed correctly. | ||
211 | |||
212 | The other major change is that DUMB now does a dummy run through each module | ||
213 | on loading. It stores the playback state at thirty-second intervals. It stops | ||
214 | when the module first loops, and then stores the playback time. This results | ||
215 | in a slightly longer load time and a greater memory overhead, but seeking is | ||
216 | faster (to any point before the module first loops) and the length is | ||
217 | calculated! duh_get_length() will return this and is now documented in | ||
218 | docs/howto.txt and docs/dumb.txt. | ||
219 | |||
220 | DUMB's build process has been changed to use 'mingw' wherever it used | ||
221 | 'mingw32' before; some directories have been renamed, and the 'fix' command | ||
222 | you had to run for MinGW has been changed from 'fix mingw32' to 'fix mingw'. | ||
223 | |||
224 | Last time, I directed you to scroll down and read the notes from a past | ||
225 | release, but ignore this point, and that point applies to something else, and | ||
226 | so on. Did anyone do so? Well, if you're reading this at all, you probably | ||
227 | did. Nevertheless, this time I shall be much less confusing and restate any | ||
228 | relevant information. So the least you can do is read it! | ||
229 | |||
230 | - If your program ever aborts with exit code 37 while loading an IT file, | ||
231 | PLEASE LET ME KNOW! The IT file in question has a stereo compressed sample | ||
232 | in it, and the format is unspecified for this case (Impulse Tracker itself | ||
233 | doesn't use stereo samples at all). I will need the IT file in question, | ||
234 | and any information you can give me about how the IT file was created (e.g. | ||
235 | what program). (If you don't get to see an exit code, let me know anyway.) | ||
236 | |||
237 | - If your program ever outputs a line resembling "Inst 01 Env: 0,64 8,32 | ||
238 | 15,48" to stderr while loading an IT file, PLEASE LET ME KNOW! You have an | ||
239 | old IT file (saved by an Impulse Tracker version older than 2.00), and | ||
240 | support for such files is STILL untested. | ||
241 | |||
242 | - Not all parts of DUMB's API are documented yet. You will find some | ||
243 | functions in dumb.h which are not listed in docs/dumb.txt; the reason is | ||
244 | that these functions still need work and will probably change. If you | ||
245 | really, really want to use them, talk to me first (IRC EFnet #dumb is a | ||
246 | good place for this; see readme.txt for details on using IRC). I intend to | ||
247 | finalise and document the whole of DUMB's API for Version 1.0. | ||
248 | |||
249 | There have been some changes to the naming conventions in DUMB's undocumented | ||
250 | API. DUMBOGG v0.5 will not work with this and subsequent releases of DUMB; | ||
251 | please upgrade to DUMBOGG v0.6. These changes should not break anything in | ||
252 | your own code, since you didn't use those parts of the API, did you ;) | ||
253 | |||
254 | There is still a great deal of work to be done before DUMB's API can be | ||
255 | finalised, and thus it will be a while before DUMB v1.0 comes out. It should | ||
256 | be worth the wait. In the meantime, there will be 0.9.x releases with | ||
257 | additional functionality, improved playback, and possibly support for some | ||
258 | extra file formats. | ||
259 | |||
260 | Finally I should like to offer an apology; there is a strong possibility that | ||
261 | some of DUMB's official API will change in the near future. There will not be | ||
262 | any drastic changes, and the corresponding changes to your source code will | ||
263 | be simple enough. If I didn't make these changes, DUMB's API would start to | ||
264 | become limited, or messy, or both, so it's for the better. I apologise in | ||
265 | advance for this. | ||
266 | |||
267 | Now scroll down and read the notes for the first r... oh wait, we already did | ||
268 | that. I guess that's it then. You can stop reading now. | ||
269 | |||
270 | Right after you've read this. | ||
271 | |||
272 | And this. | ||
273 | |||
274 | Off you go. | ||
275 | |||
276 | Bye. | ||
277 | |||
278 | |||
279 | ******************************************** | ||
280 | *** DUMB v0.8.1, released 11 August 2002 *** | ||
281 | ******************************************** | ||
282 | |||
283 | This is a minor release that fixes a few bugs. One of these bugs, however, | ||
284 | was pretty serious. dumb_register_dat_xm() was never coded! It was prototyped | ||
285 | in aldumb.h, so code would compile, but there would be an unresolved symbol | ||
286 | at the linking stage. This has been fixed. | ||
287 | |||
288 | Platforms other than Unix did not have a working 'make veryclean' target; | ||
289 | this has been fixed. In addition, the makefiles now use 'xcopy' instead of | ||
290 | 'copy', since on some systems GNU Make seems to have trouble calling commands | ||
291 | built in to the shell. | ||
292 | |||
293 | Contrary to the errata that was on the DUMB website, the makeall.sh and | ||
294 | makecore.sh scripts actually DID install in /usr. This has now been | ||
295 | corrected, and regardless of whether you use these scripts or call make | ||
296 | directly, the files will now be installed to /usr/local by default. | ||
297 | |||
298 | The XM loader used to treat stereo samples as mono samples with the data for | ||
299 | the right channel positioned after the data for the left channel. This | ||
300 | generally resulted in an unwanted echo effect. This has been fixed. | ||
301 | |||
302 | When playing XM files, specifying an invalid instrument would cause an old | ||
303 | note on that channel to come back (roughly speaking). Fast Tracker 2 does not | ||
304 | exhibit this behaviour. This has been fixed. | ||
305 | |||
306 | The GCC makefiles used -mpentium, which is deprecated in gcc 3.x. This was | ||
307 | generating warnings, and has now been fixed. | ||
308 | |||
309 | In XM files, the length of a sample is stored in bytes. DUMB was assuming | ||
310 | that the length of a 16-bit sample would be even. I had two XM files where | ||
311 | this was not the case, and DUMB was unable to load them. This has been fixed. | ||
312 | |||
313 | In order to accommodate the extra part of the version number, | ||
314 | DUMB_REVISION_VERSION has been added. DUMB_VERSION has also been added in | ||
315 | order to facilitate checking if the version of DUMB installed is sufficient. | ||
316 | See docs/dumb.txt for details. | ||
317 | |||
318 | As a last-minute fix, the XM "Break to row" effect is now loaded properly. It | ||
319 | was necessary to convert from binary-coded decimal to hexadecimal (those who | ||
320 | have experience with Fast Tracker 2 will know what I mean). In short, this | ||
321 | means the effect will now work properly when breaking to row 10 or greater. | ||
322 | |||
323 | DUMB v0.8 had faulty release date constants; DUMB_MONTH and DUMB_DAY were | ||
324 | swapped! For this reason, DUMB_DATE should not be compared against any date | ||
325 | in 2002. This note has been added to docs/dumb.txt and also to dumb.h. | ||
326 | |||
327 | Please scroll to the end and read the release notes for the first version, | ||
328 | DUMB v0.7. Most of them apply equally to this release. However, the | ||
329 | non-portable code was rewritten for DUMB v0.8, so that point does not apply. | ||
330 | The point about length not being calculated also applies to XM files. | ||
331 | |||
332 | Enjoy :) | ||
333 | |||
334 | |||
335 | **************************************** | ||
336 | *** DUMB v0.8, released 14 June 2002 *** | ||
337 | **************************************** | ||
338 | |||
339 | Welcome to the second release of DUMB! | ||
340 | |||
341 | In addition to these notes, please read below the release notes for the | ||
342 | previous version, DUMB v0.7. Most of them apply equally to this release. | ||
343 | However, the non-portable code has been rewritten; DUMB should now port to | ||
344 | big-endian platforms. | ||
345 | |||
346 | The main improvement in this release of DUMB is the support for XM files. | ||
347 | Enormous thanks go to Julien Cugniere for working on this while I had to | ||
348 | revise for my exams! | ||
349 | |||
350 | There was a mistake in the makefiles in the last release. The debugging | ||
351 | Allegro interface library was mistakenly named libaldmbd.a instead of | ||
352 | libaldmd.a, meaning you had to compile with -laldmbd, contrary to what the | ||
353 | docs said. Apologies to everyone who lost sleep trying to work out what was | ||
354 | wrong! The reason for using libaldmd.a is to maintain compatibility with | ||
355 | plain DOS, where filenames are limited to eight characters (plus a three- | ||
356 | letter extension). The makefiles have now been changed to match the | ||
357 | information in the docs, so you may have to alter your project files | ||
358 | accordingly. | ||
359 | |||
360 | The example programs were faulty, and crashed on Windows if they were unable | ||
361 | to load the file. It was also difficult to work out how to exit them (you had | ||
362 | to click the taskbar button that didn't have a window, then press a key). | ||
363 | They have been improved in both these respects. | ||
364 | |||
365 | I have now added a docs/faq.txt file (Frequently Asked Questions), which is | ||
366 | based on problems and misconceptions people have had with the first release. | ||
367 | Please refer to it before contacting me with problems. | ||
368 | |||
369 | Thanks to networm for touching up the Unix makefile and writing the | ||
370 | instructions on using it. | ||
371 | |||
372 | Incidentally, today (Friday 14 June) is the Robinson College May Ball at | ||
373 | Cambridge Uni. God knows why it's called a May Ball if it's in June. I'm not | ||
374 | going myself (72 GBP, and I'd have to wear a suit, ugh), but with all the | ||
375 | noise outside I shall enjoy pumping up the speakers tonight! | ||
376 | |||
377 | |||
378 | **************************************** | ||
379 | *** DUMB v0.7, released 2 March 2002 *** | ||
380 | **************************************** | ||
381 | |||
382 | This is the first release of DUMB, and parts of the library are not | ||
383 | crystallised. Don't let this put you off! Provided you don't try to use any | ||
384 | features that aren't documented in docs/dumb.txt, the library should be rock | ||
385 | solid and you should be able to upgrade more or less without problems. | ||
386 | |||
387 | Here are some notes on this release: | ||
388 | |||
389 | - There is some non-portable code in this release of DUMB. It is likely that | ||
390 | the library will fail to load IT files with compressed samples on | ||
391 | big-endian machines such as the Apple Macintosh. | ||
392 | |||
393 | - If your program ever aborts with exit code 37 while loading an IT file, | ||
394 | PLEASE LET ME KNOW! The IT file in question has a stereo compressed sample | ||
395 | in it, and the format is unspecified for this case (Impulse Tracker itself | ||
396 | doesn't use stereo samples at all). I will need the IT file in question, | ||
397 | and any information you can give me about how the IT file was created (e.g. | ||
398 | what program). (If you don't get to see an exit code, let me know anyway.) | ||
399 | |||
400 | - If your program ever outputs a line resembling "Inst 01 Env: 0,64 8,32 | ||
401 | 15,48" to stderr while loading an IT file, PLEASE LET ME KNOW! You have an | ||
402 | old IT file (saved by an Impulse Tracker version older than 2.00), and | ||
403 | support for such files is untested. | ||
404 | |||
405 | - The length of IT and S3M files is not currently calculated. It is just set | ||
406 | to ten minutes. | ||