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