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