Fixes and startup-notification - Alex
[terminatorX.git] / ChangeLog
1 terminatorX - ChangeLog
2 All changes were done by me (Alexander König) if not stated otherwise.
3 This is not a GNU-style ChangeLog but you sort of get the idea what was
4 changed.
5
6 [v3.82] (pre-release)
7 - applied a fix from Juha Erkkila <erkkila@cc.jyu.fi> that makes tX work on
8   systems that don't have procfs mounted.
9 - added an optional Dry/Wet control for all LADSPA plugins. Simply click on the
10   plugin's label to add or remove the additional control.
11 - added an additional stereo effects queue that allows loading stereo LADPSA 
12   plugins. The stereo effects are located below the mono effects - to add a new
13   instance press the "Stereo FX" button and select the plugin of your choice.
14 - fixed the plugin menu - empty categories no longer get a menu entry.
15 - plugins that do not qualify as realtime capable will now be disabled.
16 - I'm fed up with terminatorX related security postings, so the old suid-root
17   method had to go. To achieve realtime scheduling you now have two options:
18    a) run terminatorX as root (obviously dangerous and not recommended)
19    b) build terminatorX with capabilities enabled and install it suid-root.
20       Due to the use of PR_SET_KEEPCAPS this will work on Linux _only_.
21    c) use the JACK backend with "POSIX draft capabilities" (see jackd manpage)
22 - Loading sets with missing LADPSA plugins no longer crash tX.
23 - Fixed a bug that made reading error messages impossible with the load dialog
24   open.
25 - The engine now handles audiodevices that break down when already in playback
26   mode more gracefully. This really necessary when jack decides to kick us out.
27 - All vu meters are stereo now. Having a mono widget for a stereo thing just
28   didn't make any sense anymore.
29 - modified the render loop to comply with LADSPA V1.1: 0 db is now at 1.0f. This
30   makes a lot of plugins work with terminatorX that haven't worked with previous
31   releases.
32 - data send to the JACK backend no goes through the "Anti-Clip-Device", too. 
33   Unless you #define TX_DO_CLIP of course.
34 - I've drawn some new icons with the wonderful inkscape. They're now being 
35   built into terminatorX as gdk-pixbuf c-source code, so they actually do alpha
36   blending.
37 - Wrote support for gtk+'s new FileChooser widget - will be enabled 
38   automatically when configure finds a gtk+ >= 2.4.0
39 - Fixed the buffer overflows detected by c0wboy <c0wboy@tiscali.it> in his 
40   outsiders-terminatorX-001.txt advisory.
41 - Support for gtk+ startup notification.
42 - "README.GNOME" was outdated so it had to go.
43 - merged parts of a patch graciously contributed by Adam King <aking@lgh.com.au>
44   - Simpler min/maximization for the control panels
45   - Bugfix for sequencer menu crash
46   - The panel formally known as "Trigger" is now known as "Playback"
47   - TODO: complete this entry?
48 - created some new icons for the GUI with the cool inkscape. 
49 - added cpu-overload detection - currently disabled
50
51 [v3.81]
52 - JACK doesn't seem to like SCHED_FIFO clients so I added a little test that
53   will set SCHED_OTHER when jack output was selected. This will work for true
54   root or a capabilities-enabled suid-root binary only.
55 - removed the disfunctional "Cancel" button from the load-progress dialog.
56 - switched default MIDI mapping to non-destructive. (previous settings will not
57   be overwritten now).
58 - added a default MIDI mapping accessible via the "Turntables" menu. The actual
59   mapping is documented in the manual.
60 - fixed a bug that caused enabling sync-client setting via MIDI to fail.
61 - when compiled with rt-scheduling suppport terminatorX will now display the 
62   resulting scheduling policy in the "About" dialog.
63 - if terminatorX was setup to use realtime priority for the audio engine thread
64   but you dont want it - disable realtime scheduling in the Preferences dialog.
65   This works with capabilities _ONLY_.
66 - if you don't want to confirm program termination every time you can now
67   disable "Ask for Quit confirmation" in the Preferences.
68 - added support for Linux' POSIX capabilities. This allows a suid-root installed
69   terminatorX binary to drop root privileges much earlier than with the old
70   approach (so it should be more secure). Requires the libcap library.
71 - obligatory documentation updates - clicking on the sub-sections should now 
72   work.
73 - removed gtk+ 1.2 cruft - terminatorX now compiles with gtk+ 2.2 and
74   *_DISABLE_DEPRECATED macros enabled. To verfiy that you can run 
75   configure with --disable-deprecated.
76 - terminatorX now has a JACK backend. Currently it works like this: on startup
77   tX will connect to the JACK daemon - if the daemon is not available on 
78   startup JACK output is not available. When the audio engine is turned off,
79   tX emits silence via the JACK ports, so you can leave the ports connected. 
80 - sick of green - you can now configure the colors terminatorX should use for 
81   the audio display as well as the vu meters in the Preferences dialog.
82 - hopefully fixed wrong setting of the master volume when loading set files.
83 - some ALSA installations seem to core on snd_pcm_hw_params_free() after sound
84   device init. So freeing the hw_params can now be explicitly disabled in
85   the Preferences - if terminatorX crashes right after hitting the "Power On"
86   button it might be necessary to activate this for your ALSA setup. This
87   probably results in a tiny memory leak - but on leak vs core you might decide
88   for leak. Note: I even enabled the leak by default now.
89 - fixed a bug that caused turntable 1 to get the focus on entering Mouse Grab
90   mode even when it's audio panel was minimized.
91 - MIDI mappings can now have "bounds", meaning that the incoming MIDI signals
92   can modify the parameter within the given range only.
93 - introduced a new way of assigning MIDI controllers to parameters: simply 
94   right-click on a parameter's control: a menu with "MIDI Learn" and 
95   "Remove MIDI Binding" will pop up - select "MIDI Learn" and send the 
96   corresponding MIDI event.
97 - fixed a bug in the MIDI callback thanks to David Hamilton 
98   <daham2@student.monash.edu>
99 - running suid root (the old way) was reported exploitable by Andrew Griffiths
100   <andrewg@felinemenace.org> - the described environment variable based exploit 
101   was fixed - however there are possibly other ways to exploit it. So the 
102   old method of running suid root has been disabled by default. On Linux 
103   systems you really should use the capabilities based approach (see above).
104   If really want to use the old suid-root solution run configure with 
105   --enable-suidroot.
106 - often, you record events and mess things up - in this case I'd often prefer 
107   dropping the complete take instead of recording a bad perfomance - which is 
108   why you now can activate "Confirm Recorded Events" from the "Sequencer" menu.
109   When enabled terminatorX will ask whether to actually record or drop the 
110   events created for the last take. The setting for this flag is stored in your
111   ~/.terminatorXrc.
112 - introduced a new "Sequencer" menu that allows to delete events of a specific
113   type (all, all for certain turntable, all for a certain parameter) from the
114   sequencer. Events can be deleted for the complete song, upto the current song
115   position or from the current song position. Yeah, I know, termintorX is 
116   lacking a proper event-editor here, so where's your patch? ;)
117 - switching the X11 mouse cursor when the user has to wait for terminatorX to 
118   finish some operation
119 - fixed a sequencer bug: the events for master pitch and volume weren't erased
120   correctly when another set was loaded
121 - fixed FreeBSD issues with the configure script
122 - fixed compilation issues for gcc 2.95.x
123
124 [v3.80]
125 - I've invested quite some time in valgrinding this release, among other things
126   a major mem leak showed up - the sample memory wasn't being free'd correctly
127   which is now corrected along with many other things. valgrind is a very 
128   helpful tool indeed.
129 - Added a new Pitch Calculator that allows adjusting a turntable's pitch to that 
130   of the master turntable. This makes synchronizing finely cut loop samples
131   really easy
132 - XML based set files can get rather huge when they contain a lot of sequencer
133   events - to solve this terminatorX now uses zlib to save compressed set
134   files if enabled in the preferences dialog.
135 - I hacked support for Steve Harris' cool liblrdf - if you've got that library
136   setup correctly and you use Steve's wonderful plugin collection with RDF 
137   description you should get a nicely structured menu when clicking on the
138   "FX" button. All plugins not categorized through RDF files go to the 
139   "Unclassified" category.
140 - I'm no longer including the html and ps versions of the manual - it's now
141   attached in it's XML/DocBook source and will be installed via scrollkeeper.
142   terminatorX offers a menu entry to start gnome-help to display the manual.
143 - Reworked the Preferences dialog - I now use glade-2 to create that code -
144   I'm fed up with copy'n'pasting gtk+ code so now I'll let glade-2 do this 
145   whereever possible. The glade project files are included with this tarball
146   in case you want to mess with them.
147 - Switched to a fixed blocksize (1 ms) for rendering. This finally allows to
148   playback set files with events recorded on machines with small buffer sizes
149   on slow machines with large buffer sizes. The buffersize of the audiodevice
150   has no effect on the "operating" blocksize anymore.
151   Note that the samlping rate has a - very small - effect though. Depending on
152   the sampling rate terminatorX will try to find a blocksize that fits exactly
153   1 ms - while this is easy for "straight" sampling rates (22000 32000 48000)
154   this results in "44.1" samples for 44100 Hz.
155 - Finally hacked a native ALSA backend. It's in "Works For Me" TM state.
156 - Added "Remove Binding" button
157 - MIDI now uses a GIOCallback so the effect of MIDI controllers is visible
158   even without the audio engine turned on.
159 - Reworked the mastergui for better usabilty and less space consumption, yes,
160   terminatorX now features a boring menubar - which helps using it on small
161   displays quite a bit, and should be easier to handle for first-time users.
162 - Implemented a suggestion from Darrick Servis <darrick@dcn.davis.ca.us> that
163   stops clipping in the mixer routine. The outgoing signal is now limited as it
164   should be, which improves the output quality for signals too loud
165   significantly.
166 - MIDI mappings are now stored within the (new) tX set files.
167 - Applied a patch from Arthur Peters <amp@singingwizard.org> which brings
168   preliminary MIDI support to terminatorX. This is realized via the ALSA
169   sequencer interface, so in order for it to compile you have to have
170   the ALSA devel packages installed. ./configure will autodetect them.
171 - Fixed a bug in XML serialization that dropped strings' contents.
172 - You can now hit "F11" to turn fullscreen mode on/off - this will help using
173   terminatorX on small DJ laptops. Note that the key will have no effect in 
174   scratch mode - hit it before you enter grab mode. This feature requires a 
175   NETWM compliant window manager.
176 - terminatorX now stores set files as XML documents, too - so terminatorX has
177   become terminatorXML finally. Note: for sets with a large number of events
178   recorded into the sequencer - the XML based set files can grow significally
179   larger than the old ones (see "compression" above)
180 - The old code to support the obsolete binary tX file formats has now been
181   scheduled for deletion. It's been moved into the tX_legacy* source files and 
182   it will be built only when "--enable-legacy" was used on configuring
183   terminatorX (which is the default). Expect this to become disabled and then
184   totally removed from the sources in future.
185 - Enhanced audio data display - you can now zoom into the audio signal, which
186   should allow much more precise scratching with larger audio files (ie 
187   complete tracks). On playback terminatorX will scroll the displayed area
188   to ensure you always see the area of the sample in which you're currently
189   scratching on.
190 - I have not backported the new code to the old gtk+ 1.2 - so this release no
191   longer builds with gtk+ 1.2 - you have to upgrade to gtk+ Version 2 to be
192   able to build terminatorX.
193 - fixed a nasty gcc 3.2 compilation bug - thanks to 
194   Adam Duck <duck@informatik.uni-frankfurt.de> and other reporters
195
196 [v3.73]
197 - Fixed a compilation bug ocurring on big endian systems only.
198 - Fixed the built-in wav loading routines for big endian systems (again).
199 - Finally traced down and fixed a long outstanding bug in the dial widget,
200   the background of the dials is now drawn correctly.
201 - Ported terminatorX to gtk+ Version 2. The code for gtk2 will be enabled
202   when gtk2 is detected by configure. To force terminatorX to use the good
203   old gtk 1.2.x (x>=5) run configure with the '--disable-gtk2' switch.
204   WARNING: gdkxft-users: gtk2 applications segfault when preloading
205   libgdk_xft.so! So unset LD_PRELOAD and set GDK_USE_XFT=1 instead.
206 - Applied a patch from Adrian that brings lots of new stuff:
207   - Debian package support (removed - Mike Furr now maintains an official 
208                             Debain package for terminatorX)
209   - enhanced GNOME integration
210   - a manpage for terminatorX
211 - Included another gcc3 fix thanks to Gregor Riepl <seto-kun@freesurf.ch>
212 - Improved configure's compatibilty - it should detect pthreads more reliably
213   and it should detect ladspa.h when located in /usr/local/include without
214   /usr/local/include being contained in the include path.
215 - This release should compile and run on FreeBSD systems and possibly
216   OpenBSD, too. Thanks for help and testing this goes to 
217   Tilman Linneweh <tilman@arved.de>.
218 - Sequencer now refuses to play when no events available - and displays
219   a dialog that suggests running the audio engine.
220 - De-uglified the terminatorX note dialog.
221 - Fixed gtk+2 signals for load file dialog
222 - Pre-listen support for mpg321
223 - Added a new auto-hiding "panel-bar" to which turntable control and audio
224   panels can be minimized to.
225 - Cleaned up the turntables' audio panel for better looks and easier usage
226 - Rewrote the engine thread completely - unlike before the engine thread 
227   is created on startup and kept alive until termination.
228 - terminatorX can now be run suid root - and it might even be safe. After
229   creating the engine thread both terminatorX threads drop root privileges
230   before evaluating any parameters or reading/writing files, etc. The problem
231   is the pthread "manager thread" is out of control of terminatorX code - so
232   I cannot tell that thread to drop privileges.
233 - Fixed Drag'n'Drop for GNOME 2
234 - To enhance the loading of audiofiles terminatorX now contains code to use
235   mad (MPEG Audio Decoder), libvorbis and libaudiofile directly instead of 
236   pipeing audio data through mpg123, ogg123 or sox. As a result the new routines
237   bring following advantages:
238         - tX loads audiofiles significantly faster
239         - tX now honours the samplerate of an audiofile
240           (by adjusting the pitch of the turntable)
241         - tX provides much better feedback on the loading progress
242   Although the old loading-methods are still available (and piped loading has
243   been improved, too) I highly recommend installing the libraries above as the
244   new routines simply work better.
245 - Deleted tons of old outdated code in tX_engine.cc and tX_mastergui.cc
246
247 [v3.72]
248 - Applied a patch from Matthew Evans <activesx@hotmail.com> that introduces 
249   support for Ogg Vorbis audiofiles. It requires ogg123 > RC2 and sox to work.
250   Autodetection is supported via configure (--enable-ogg123).
251 - Experimental support for input devices other than the core-pointer
252   under XFree86 > 4. This uses the xsetpointer executable that comes with
253   XFree86. configure should autodetect this correctly, in case it doesn't
254   use the --enable-xetpointer switch.
255 - Adrian sent me a patch introducing two new buttons: mute and solo. As it
256   didn't fully harmonize with the sequencer I rewrote parts of it and added new
257   functionality to the turntables: They can now be switched to mix_solo or
258   mix_mute - these settings affect current mixing only - their values will
259   neither be saved nor will changes to those control be recorded in the
260   sequencer - if you want to record muting events either use the mute button
261   from the turntable's trigger menu, the keyboard short-cuts (alt/strg), or
262   your middle mouse button.
263 - fixed a bug that produced corrupt wavfiles on big endian machines
264 - some minor fixes to make terminatorX compile with newer gcc releases
265 - Well, I am allowed to change my mind, aren't I? Anyway, 3DNow! is back.
266   Nevertheless newer gcc releases seem to have a bug in handling movq and
267   the current 3DNow! stereo implementation does not seem to be very efficient.
268   So use --enable-3dnow only if you want to help me improve perfomance.
269 - Modified the mpg123 loader in order to make it work with mpg321, too.
270   mpg321 lacks support for mpg123's -m switch ("singlemix") therefor 
271   mpg?2?'s output is now piped into sox to convert the signal to mono.
272   For this reason mpg?2? support now requires sox to be installed, too.
273 - added a workaround for a gtk+ bug that causes empty labels when strings
274   contain umlauts - unluckily my name features one of these so I had to write
275   this workaround.
276
277 [v3.71]
278 - applied a big patch from Adrian Reber (adrian@lisas.de). This patch includes:
279   o compile fixes for the newer gcc releases
280   o enhancements to the commandline switches (try --help for more details)
281   o bug fixes for tX_global.c
282 - the bigNewThang (TM) is STEREO output. The Pan-Buttons now actually do what
283   you'd expect them to. Therefore your soundcard must have stereo support of
284   course but I guess in 2001 this really shouldn't be a problem, right? 
285   The recorded wavfiles will now be stereo wavfiles of course.
286   Note that stereo output means double audio-bandwith, so if you tuned your
287   old terminatorX setup to smallest latency you might get clicks now. You can
288   easily fix this by increasing the buffer size in the options dialog by one - 
289   this will result in the same latency as before btw.
290 - The echo effect has undergone some enhancements to profit from the new stereo
291   output. It's signal will now be mixed seperately so you can choose a different
292   stereo panorama position for the echo signal. So the new echo effect now 
293   features it's own PAN-knob. This does have some sideeffects though, for more
294   details on this check the manual.
295   Additionally the echo effect now has it's own volume setting to influence
296   the dry/wet ratio of this effect.
297 - Some LADSPA effects tend to create NAN (Not A Number) float values under
298   certain conditions. This is bad as all following operations will result in 
299   NANs, so there will be no audio output no more. Now I will not introduce code
300   to check for NANs as this is a waste of CPU-power, producing NANs is IMHO
301   a faulty behaviour for LADSPA plugins and it should be fixed in there.
302   Now a problem with the previous release was that the echo and lowpass effects
303   "ate" those NANs resulting in NANs in those effects' buffers. So once a NAN
304   got in there these effects caused the whole audio output to mute (forever). 
305   Which is why I now introduced some code to clear the buffers in echo and
306   lowpass whenever you dis- and reenable them.
307 - The GUI does have two master vu-meters now. The turntable's still have one
308   vu-meter only. Note that the echo-signal is *not* included in the turntable's
309   vu-meter now, as it's mixed seperately.
310 - The 3DNow!-Optimizations are gone. And they'll proabably never come back as
311   I don't have time to maintain the same algorithm twice.
312 - The documentation has been updated to meet the new features. A lot of typos
313   have been fixed as well.
314
315 [v3.70]
316 - this list may be incomplete
317 - This release brings support for LADSPA plugins. These plugins can be inserted
318   into any turntable's effect chain at any position. You can edit the the
319   effect sequence with the two tiny blue arrows. The builtin effects reside in
320   the same effect chain as LADSPA plugins, but unlike LADSPA plugins they cannot
321   be removed (nor multi-instanciated).
322   The LADSPA plugins have to "fit" into the effect chain, which is why
323   terminatorX supports *mono* plugins (plugins that have one audio-in and one
324   audio-out port) only. For the plugin's control ports, termintatorX supports
325   all HINTS except for LADSPA_HINT_LOGARITHMIC. Some control ports might be 
326   hard to handle as LAPDSA control ports can have very wide value ranges. It is
327   possible to enter precise values though.
328   Get LADSPA and the CMT plugins from http://www.ladspa.org
329   All parameters for LADSPA-plugins are "sequencable parameters", so you can
330   record parameter-change events for the plugin's knobs just as for the
331   standard parameters.
332 - GUI re-design to support dynamic plugin GUIs. The audiofile-display is now 
333   seperated from the turntable's controls. The groups are split in to panels
334   which can be minimized if not required (orange arrow). The panels'
335   minimized-status will be saved within the set files.
336   To add a plugin effect into the turntables effect chain click on the "FX"-
337   button and choose the plugin of your choice. To get more info on the
338   plugin effects click on their panel's label.
339   NOTE: The panning-control is not working yet. It'll work as soon as stereo
340   is done.
341 - As always when introducing something new, the set-file file-format has
342   changed.
343 - The parameter-to-mouse-axis mapping has been moved from hardcoded to
344   dynamic. You can now map any parameter that's considered "mappable" to the
345   mouse-axis of your choice (for each turntable separately). This is true
346   for the control ports of LADSPA-plugins, too.
347 - Josh Steiner <joschi@eds.org> has joined terminatorX development. For this 
348   release he has added some startup parameters for terminatorX, some of them
349   aiming for future MIDI support, and therefor not functional yet. Run
350   "terminatorX --help" to get more details.
351 - I know write the "manual" in SGML with the DocBook DTD. The distribution
352   contains the HTML and the postscript version. These transformation have been
353   created using James Clark's jade (DSSSL-processor) and Norman Walsh's DSSSL
354   stylesheets for DocBook.
355 - Removed obsolete "number of vtts"-option from the options dialog.
356 - Applied a patch from Josh that fixes running the soundfile editor for files
357   including a blank in their filename.
358 - New tooltips for the complete GUI.
359
360 [v3.61] (unreleased)
361 - applied a tiny patch from Atsushi Yamagata <yamagata@plathome.co.jp>
362   to set locale on startup.
363
364 [v3.60]
365 - terminatorX has a sequencer now. Warning: with the current design the
366   sequencer will correctly play back recorded events only when the buffer size
367   (of the audio device) is set to the same size as it was when recording the
368   events. I know this is annoying and I will try to find a solution to this. 
369   Please take a look at the README to find out how the sequencer works.
370 - fixed a bug causing the lowpass filter produce a constant signal
371 - fixed the load file / drag'n'drop segfault bug
372 - fixed the prelisten zombie processes bug
373 - fixed the segfault on termination bug (with the audio engine running)
374 - hacked the mixer code to use 3DNow! too. This improves 3DNow! performance gain
375   from previously ~6% to more than 20% (depending on compiler optimizations)
376 - extended the set-file-format to allow storing of sequencer events. This
377   release allows loading old tX-sets too.
378 - some gui icons. Choose Text/Icon / Icon only / Text only display of these
379   icons in the Options dialog. You'll have to restart tX to see the changes
380   though.
381 - "soundfile-editor support": Enter the soundfile-editor of your choice in the
382   tX-Options dialog (Still looking for an editor? Checkout Dave's Linux
383   Sound and MIDI Pages: http://www.bright.net/~dlphilp/linuxsound/).
384   Click the edit button in the Main-Panel to start your editor with the
385   turntable's soundfile - edit ;) - save and click the reload button.
386 - big endian bug fixes by Scott C. Knight <scknight@indiana.edu>
387 - --enable-benchmark will now produce a benchmark binary. This takes a set file
388   as a parameter (that set file should autotrigger all tables, else the
389   benchmark will measure how fast tX can generate zeros ;) WARNING: the
390   benchmark binary is not a usable terminatorX binary.
391 - a new dial-widget. I created this for the upcoming GUI-redesign - and decided
392   I let you debug it right now ;) If you don't want it run configure with the
393   --disable-dial switch.
394 - some gui redesign. The volume scales are now located near their corresponding
395   "flash"-widget. This release fits into very small windows - so it should be
396   usable on smaller displays as well.
397 - Adrian told me configure doesn�t have to check for glib after checking for
398   gtk+ - I guess he�s right so the glib-test has gone.
399 - more minor fixes
400   
401 [v3.55]
402 - implemented "sequenceable parameters" (see tX_seqpar.*). This means the
403   groundwork for the sequencer is done. Although this release does not yet
404   feature a sequencer - there's still a profit: you can now see the GUI (e.g.
405   the lowpass-freq slider) update while you change that value with your mouse in
406   dga grab mode (e.g. up/down with the default X/Y-Control settings).
407 - fixed (libmmx) mmx.h to work with gcc 2.95 and above
408 - fixed compilation problems for big endian machines. still runtime probs
409   reported though.
410 - fixed configure-script as the new bash complains about == in string compares
411 - fixed some gui segfaults
412 - added an ugly GNOME-mimetype installer. This installs the ".tX"-mime type, an
413   terminatorX-application icon and a ".tX"-icon. I could use some hints on how
414   I could make automake install that instead of an extra script.
415   (see README.GNOME)
416 - added Drag'n Drop support. Works with the great gmc. Drop an audio file over 
417   the filename-button or the wavdisplay of a turntable to load it into that
418   table. Drop an audiofile over the "Add Turntable" Button to create a new 
419   turntable and load that file into that turntable. Drop a tX-set file over the
420   "Load Set" button to load the set. 
421
422 [v3.51]
423 - fixes the load_piped() compilation error if you use neither sox nor mpg123.
424   Note that you have no "pre-listening" without mpg123 for mp3s and no 
425   "pre-listening" for any other file without sox.
426
427 [v3.5]
428 - Yet another redesign ;) Oh well this project moved from c++/multithreaded
429   to c++/singlethreaded, to c/multithreaded and now, finally, back to
430   c++/multithreaded. This shows quite some foresight, I'd say ;)
431 - Due to the redesign I had to change a lot (everything?) again so this document
432   can impossibly hold all changes. but let's see:
433 - tX now uses floats instead of doubles for a lot of parameters. Therefore the
434   old .terminatorXrc.bin is now called .terminatorX3rc.bin to allow parallel
435   use of older releases. But you'll have to configure the new release again
436   the first time you run it.
437 - tX now supports an unlimited no of turntables. The only limit is your display
438   really.
439 - Each of these turntables has their own pitch / volume settings and a 
440   dedicated lowpass and echo effect section.
441 - You can now map mouse motion to a function of your choice (scratching/
442   volume/cutoff/echo-feedback and nothing)
443 - Recording will now happen straight to disk. You'll have to specify a filename
444   before you start recording.
445 - You can sync the turntables to one master turntable.
446 - There are two master settings for pitch and volume available to modify all
447   turntables. The turntable pitch is relative to the master pitch.
448 - You can save a complete set (of turntables and settings) to a .tX set file.
449   The audiofile data will *not* be saved within that file, but it'll contain
450   the absolut filename to these files. I know this makes the act of exchanging
451   sets over the net more complex so if somebody wants to code set files with
452   integrated audio data... ;)
453 - The way audiofiles are loaded has been redesigned too: the builtin wav
454   routines, the sox support and mpg123 are no longer connected. This means
455   you can use mpg123 support without sox support and still have the builtin
456   wav routines enabled. If you have the builtin wav reader and sox enabled, tX
457   will try try to use the builtin routines first, and if they fail sox will be
458   used as a fallback which is of course slower as you know... There's some 
459   support for Benno Senoner's brilliant 3.2-mmap() patch but the patch still
460   needs to be ported.
461 - You can now select which parameter to map to a mouse axis.
462 - experimental 3DNow! support (works with gcc < 2.95 only)
463 - tX-windows now have an icon, thanks Michael!
464
465 [v3.2]
466 - implemented 2D-Scratching ;) You can now use the other axis of your mouse
467   two modify the cutoff frequency of the lowpass filter (if enabled). The
468   resonance factor can be set via the slider underneath "LP Filter". Seems
469   to eat quite some CPU power though...
470 - Updated THANKS, AUTHORS
471 - as most people seem to use sox/mpg123 anyway and as I still get "I want mp3"
472   emails I changed the configure script slightly: It now automatically enables
473   the use of sox and mpg123 if these are available. If you still want 'em good
474   old 16Bit/44.1Khz/Mono builtin routines you have to specify --enable-wavonly
475   with your configure cmdline.
476 - Prepared the tarball for the Win32 port. You can now compile tX with cygwin
477   and the Makefile.cygwin in the src directory if you have all the required
478   libs (gtk, pthreads etc...). The resulting exe will run BUT is completely
479   unusable for now... Stou Sandalski <tangui@cell2000.net> and I are planning
480   to make it usable in the future.
481 - The About-Dialog now contains some info on how the binary was compiled
482
483 [v3.1]
484 - Optimized audio-rendering code for speed (might run on some machines
485   with smaller buffsize (-> lower latency) than pre-3.1) - Hey, tX now uses
486   less than 10% CPU (says kpm) with mixing enabled on my i586-200MMX machine!!  
487 - "fixed" stdout-output. Due to the pipe-buffering realtime schratching can
488   not be considered usable for now :(
489 - Added config option --enable-scheduler, which will cause the terminatorX
490   engine-thread to run with FIFO scheduling policy and highest priority. This
491   might enable some machines to use smaller buffsizes. It requries root
492   privileges though - either run terminatorX as root - or make terminatorX
493   suid root WHICH IS A BAD IDEA FOR MULTI-USER SYSTEMS IF OTHER USERS CAN
494   ACCESS THE BINARY ;) You only have to think about this when you experience
495   buffer underruns with your desired latency. And it might not even help...
496 - Rehacked the de-clicking (fading) code. The old one tried to be much more
497   intelligent - and failed fading out the signal sometimes. The new code
498   is much simpler (faster) and is much more reliable.
499 - added common sense to the warp feature (f-key in scratch mode). The warping
500   speed is still connected to the mouse speed but it's now adjusted to the
501   sample size as well: you can warp through any sample completely with the same
502   mouse distance.
503 - added debug configure switch. Enables (very few) debug messages for now. I
504   decided not to enable the old V2.X messages as they are sent to stdout, which
505   would sound pretty strange to people who use the stdout-option.
506     
507 [v3.02] (unreleased)
508 - Fixed Adrian's name in the THANKS file. Sorry, Adrian.
509 - Corrected Makefile.am for license.c that did not build correctly on some 
510   systems - Thanks to Michael Pruett <mikep@ugcs.caltech.edu>
511
512 [v3.01]
513 - fixed a bug that caused terminatorX to crash without --enable-sox or
514   mpg123input.
515
516 [v3.0]
517 - Changed everything ;)
518 - switched from C++ to C for gtk's sake
519 - switched back two multithreading
520 - implemented new gtk+ gui and dialogs
521 - new mouse-sampling code now uses DGA's DirectMouse
522 - implemented "initalizing"-support for XInput devices.
523 - new (alpha) "pre-listening" feature in scratch/loop dialogs
524 - hacked vtt for click-free audio. Might be problematic with big
525   kernel level buffersizes but scratching with big buffsize is no
526   fun anyway.
527 - options are now stored in ~/.terminatorXrc.bin automatically (on exit)
528   as well as windowsize and the last used filenames
529 - terminatorX now comes with a configure script - no more Makefile hacking
530   required (nor a good idea ;) )
531 - new wavdisplay-widget update frequency is now configureable
532 - new position-display is much more visible which allows more precise
533   scratching
534 - new mute-feature allows you to silence the scratch-playback completely
535   while the loop keeps playing (press either <m>-key or right mouse-button.
536 - support for mouse buttons:
537   o 1. (left) button: same as <SPACE>, do scratch
538   o 2. (right) button: mute scratch
539   o 3. (middle) button: stop
540 - wrote support for sox and mpg123. This enables terminatorX to read close
541   to any audiofile. You need to have sox and mp3 and this feature (as it is
542   still alpha) needs to be enabled via configure-switches see INSTALL
543 - licmak now is an awk script. Thanks Christian! I was also received two perl
544   scripts (Thanks, guys!) but I now use the awk script as it is the smallest.
545 - introduced <F>-key to "warp" through scratch-sample (just check it out)
546 - dropped commandline arguments
547 - dropped old X-Code + Mouse warping madness
548 - bug fixes (less than bug introduces though ;) )
549
550
551 [v2.4] (unreleased)
552 - implemented a time counter
553 - licmak now finally is what it should be: a perl script (licmak.pl)
554   it was contributed by: Adam Sj�gren <asjo@diku.dk>. Thanks!
555
556 [v2.3]
557 - X-Window background fixed
558 - wavfile overreading fixed by Andrew C. Bul+hac?k (acb@zikzak.net)
559 - Using portable type definitions now where required. If you don't
560   have a <sys/types.h> on your system and your machines type sizes
561   equal those of an X86-machine you can specify -DUSE_X86_TYPES in
562   Makefile to compile without <sys/types.h>
563 - Slight change in audiodevice-handling that fixes improper buffsize
564   settings on some soundcards (e.g. GUS)
565 - Implemented "keep device open"-feature. Needs to be enabled via the
566   -DKEEP_DEV_OPEN switch in Makefile
567 - Added some comments to the Makefile for easier editing
568 - Added Big Endian support. Use -DBIG_ENDIAN_MACHINE for big endian hosts
569   like ultrapenguin suns or linux ppc. There's also -DBIG_ENDIAN_AUDIO
570   for big endian audio hardware (rare?) available, although proabably
571   nobody will need this.
572 - Changed mix behaviour: Mix is now automatically turned on on startup if
573   the user has specified a proper loop file. (with the --loop or -l switch)
574 - New mixing routine. You can now set the loop to scratch volume ratio with
575   the cursor keys (left/right). If you modify the volumes while recording
576   these action's will not be recorded. Saving happens with the currently
577   set level.
578 - Fixed README-Bug said <m> instead of <x>
579   
580 [v2.2]
581 - first released version
582 - added colors. more standard use of X11.
583 - added loop support.
584 - added statusbar with mode/status display
585 - added commandline options and help (on usage and keys)
586 - added raw/mixed save scratch feature
587 - added licmak to include license into binary
588 - new handling of XAutoRepeat, only turned off now when SPACE pressed.
589 - modified wave display (faster + nicer + incorrect (who cares anyway))
590 - Makefile fixed by Adrian Reber (adreit00@fht-esslingen.de)
591 - bug fixes
592
593 [prerelease]
594
595 [v2.1]
596 - added recording, playback of recording functionality
597
598 [v2.0]
599 - moved from multithreaded to singlethreaded
600 - position feedback
601 - bug fixes
602
603 [v1.0]
604 - mouse support
605 - no more position display due to pthread/X probs
606 - bug fixes
607
608 [v0.5]
609 - first version
610 - no mouse handling
611 - accelerating vtt via sinus
612 - multithreaded
613 - sound aliasing