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
7 - fixed a gcc 3.2 compilation bug - thanks to
8 Adam Duck <duck@informatik.uni-frankfurt.de>
11 - Fixed a compilation bug ocurring on big endian systems only.
12 - Fixed the built-in wav loading routines for big endian systems (again).
13 - Finally traced down and fixed a long outstanding bug in the dial widget,
14 the background of the dials is now drawn correctly.
15 - Ported terminatorX to gtk+ Version 2. The code for gtk2 will be enabled
16 when gtk2 is detected by configure. To force terminatorX to use the good
17 old gtk 1.2.x (x>=5) run configure with the '--disable-gtk2' switch.
18 WARNING: gdkxft-users: gtk2 applications segfault when preloading
19 libgdk_xft.so! So unset LD_PRELOAD and set GDK_USE_XFT=1 instead.
20 - Applied a patch from Adrian that brings lots of new stuff:
21 - Debian package support (removed - Mike Furr now maintains an official
22 Debain package for terminatorX)
23 - enhanced GNOME integration
24 - a manpage for terminatorX
25 - Included another gcc3 fix thanks to Gregor Riepl <seto-kun@freesurf.ch>
26 - Improved configure's compatibilty - it should detect pthreads more reliably
27 and it should detect ladspa.h when located in /usr/local/include without
28 /usr/local/include being contained in the include path.
29 - This release should compile and run on FreeBSD systems and possibly
30 OpenBSD, too. Thanks for help and testing this goes to
31 Tilman Linneweh <tilman@arved.de>.
32 - Sequencer now refuses to play when no events available - and displays
33 a dialog that suggests running the audio engine.
34 - De-uglified the terminatorX note dialog.
35 - Fixed gtk+2 signals for load file dialog
36 - Pre-listen support for mpg321
37 - Added a new auto-hiding "panel-bar" to which turntable control and audio
38 panels can be minimized to.
39 - Cleaned up the turntables' audio panel for better looks and easier usage
40 - Rewrote the engine thread completely - unlike before the engine thread
41 is created on startup and kept alive until termination.
42 - terminatorX can now be run suid root - and it might even be safe. After
43 creating the engine thread both terminatorX threads drop root privileges
44 before evaluating any parameters or reading/writing files, etc. The problem
45 is the pthread "manager thread" is out of control of terminatorX code - so
46 I cannot tell that thread to drop privileges.
47 - Fixed Drag'n'Drop for GNOME 2
48 - To enhance the loading of audiofiles terminatorX now contains code to use
49 mad (MPEG Audio Decoder), libvorbis and libaudiofile directly instead of
50 pipeing audio data through mpg123, ogg123 or sox. As a result the new routines
51 bring following advantages:
52 - tX loads audiofiles significantly faster
53 - tX now honours the samplerate of an audiofile
54 (by adjusting the pitch of the turntable)
55 - tX provides much better feedback on the loading progress
56 Although the old loading-methods are still available (and piped loading has
57 been improved, too) I highly recommend installing the libraries above as the
58 new routines simply work better.
59 - Deleted tons of old outdated code in tX_engine.cc and tX_mastergui.cc
62 - Applied a patch from Matthew Evans <activesx@hotmail.com> that introduces
63 support for Ogg Vorbis audiofiles. It requires ogg123 > RC2 and sox to work.
64 Autodetection is supported via configure (--enable-ogg123).
65 - Experimental support for input devices other than the core-pointer
66 under XFree86 > 4. This uses the xsetpointer executable that comes with
67 XFree86. configure should autodetect this correctly, in case it doesn't
68 use the --enable-xetpointer switch.
69 - Adrian sent me a patch introducing two new buttons: mute and solo. As it
70 didn't fully harmonize with the sequencer I rewrote parts of it and added new
71 functionality to the turntables: They can now be switched to mix_solo or
72 mix_mute - these settings affect current mixing only - their values will
73 neither be saved nor will changes to those control be recorded in the
74 sequencer - if you want to record muting events either use the mute button
75 from the turntable's trigger menu, the keyboard short-cuts (alt/strg), or
76 your middle mouse button.
77 - fixed a bug that produced corrupt wavfiles on big endian machines
78 - some minor fixes to make terminatorX compile with newer gcc releases
79 - Well, I am allowed to change my mind, aren't I? Anyway, 3DNow! is back.
80 Nevertheless newer gcc releases seem to have a bug in handling movq and
81 the current 3DNow! stereo implementation does not seem to be very efficient.
82 So use --enable-3dnow only if you want to help me improve perfomance.
83 - Modified the mpg123 loader in order to make it work with mpg321, too.
84 mpg321 lacks support for mpg123's -m switch ("singlemix") therefor
85 mpg?2?'s output is now piped into sox to convert the signal to mono.
86 For this reason mpg?2? support now requires sox to be installed, too.
87 - added a workaround for a gtk+ bug that causes empty labels when strings
88 contain umlauts - unluckily my name features one of these so I had to write
92 - applied a big patch from Adrian Reber (adrian@lisas.de). This patch includes:
93 o compile fixes for the newer gcc releases
94 o enhancements to the commandline switches (try --help for more details)
95 o bug fixes for tX_global.c
96 - the bigNewThang (TM) is STEREO output. The Pan-Buttons now actually do what
97 you'd expect them to. Therefore your soundcard must have stereo support of
98 course but I guess in 2001 this really shouldn't be a problem, right?
99 The recorded wavfiles will now be stereo wavfiles of course.
100 Note that stereo output means double audio-bandwith, so if you tuned your
101 old terminatorX setup to smallest latency you might get clicks now. You can
102 easily fix this by increasing the buffer size in the options dialog by one -
103 this will result in the same latency as before btw.
104 - The echo effect has undergone some enhancements to profit from the new stereo
105 output. It's signal will now be mixed seperately so you can choose a different
106 stereo panorama position for the echo signal. So the new echo effect now
107 features it's own PAN-knob. This does have some sideeffects though, for more
108 details on this check the manual.
109 Additionally the echo effect now has it's own volume setting to influence
110 the dry/wet ratio of this effect.
111 - Some LADSPA effects tend to create NAN (Not A Number) float values under
112 certain conditions. This is bad as all following operations will result in
113 NANs, so there will be no audio output no more. Now I will not introduce code
114 to check for NANs as this is a waste of CPU-power, producing NANs is IMHO
115 a faulty behaviour for LADSPA plugins and it should be fixed in there.
116 Now a problem with the previous release was that the echo and lowpass effects
117 "ate" those NANs resulting in NANs in those effects' buffers. So once a NAN
118 got in there these effects caused the whole audio output to mute (forever).
119 Which is why I now introduced some code to clear the buffers in echo and
120 lowpass whenever you dis- and reenable them.
121 - The GUI does have two master vu-meters now. The turntable's still have one
122 vu-meter only. Note that the echo-signal is *not* included in the turntable's
123 vu-meter now, as it's mixed seperately.
124 - The 3DNow!-Optimizations are gone. And they'll proabably never come back as
125 I don't have time to maintain the same algorithm twice.
126 - The documentation has been updated to meet the new features. A lot of typos
127 have been fixed as well.
130 - this list may be incomplete
131 - This release brings support for LADSPA plugins. These plugins can be inserted
132 into any turntable's effect chain at any position. You can edit the the
133 effect sequence with the two tiny blue arrows. The builtin effects reside in
134 the same effect chain as LADSPA plugins, but unlike LADSPA plugins they cannot
135 be removed (nor multi-instanciated).
136 The LADSPA plugins have to "fit" into the effect chain, which is why
137 terminatorX supports *mono* plugins (plugins that have one audio-in and one
138 audio-out port) only. For the plugin's control ports, termintatorX supports
139 all HINTS except for LADSPA_HINT_LOGARITHMIC. Some control ports might be
140 hard to handle as LAPDSA control ports can have very wide value ranges. It is
141 possible to enter precise values though.
142 Get LADSPA and the CMT plugins from http://www.ladspa.org
143 All parameters for LADSPA-plugins are "sequencable parameters", so you can
144 record parameter-change events for the plugin's knobs just as for the
146 - GUI re-design to support dynamic plugin GUIs. The audiofile-display is now
147 seperated from the turntable's controls. The groups are split in to panels
148 which can be minimized if not required (orange arrow). The panels'
149 minimized-status will be saved within the set files.
150 To add a plugin effect into the turntables effect chain click on the "FX"-
151 button and choose the plugin of your choice. To get more info on the
152 plugin effects click on their panel's label.
153 NOTE: The panning-control is not working yet. It'll work as soon as stereo
155 - As always when introducing something new, the set-file file-format has
157 - The parameter-to-mouse-axis mapping has been moved from hardcoded to
158 dynamic. You can now map any parameter that's considered "mappable" to the
159 mouse-axis of your choice (for each turntable separately). This is true
160 for the control ports of LADSPA-plugins, too.
161 - Josh Steiner <joschi@eds.org> has joined terminatorX development. For this
162 release he has added some startup parameters for terminatorX, some of them
163 aiming for future MIDI support, and therefor not functional yet. Run
164 "terminatorX --help" to get more details.
165 - I know write the "manual" in SGML with the DocBook DTD. The distribution
166 contains the HTML and the postscript version. These transformation have been
167 created using James Clark's jade (DSSSL-processor) and Norman Walsh's DSSSL
168 stylesheets for DocBook.
169 - Removed obsolete "number of vtts"-option from the options dialog.
170 - Applied a patch from Josh that fixes running the soundfile editor for files
171 including a blank in their filename.
172 - New tooltips for the complete GUI.
175 - applied a tiny patch from Atsushi Yamagata <yamagata@plathome.co.jp>
176 to set locale on startup.
179 - terminatorX has a sequencer now. Warning: with the current design the
180 sequencer will correctly play back recorded events only when the buffer size
181 (of the audio device) is set to the same size as it was when recording the
182 events. I know this is annoying and I will try to find a solution to this.
183 Please take a look at the README to find out how the sequencer works.
184 - fixed a bug causing the lowpass filter produce a constant signal
185 - fixed the load file / drag'n'drop segfault bug
186 - fixed the prelisten zombie processes bug
187 - fixed the segfault on termination bug (with the audio engine running)
188 - hacked the mixer code to use 3DNow! too. This improves 3DNow! performance gain
189 from previously ~6% to more than 20% (depending on compiler optimizations)
190 - extended the set-file-format to allow storing of sequencer events. This
191 release allows loading old tX-sets too.
192 - some gui icons. Choose Text/Icon / Icon only / Text only display of these
193 icons in the Options dialog. You'll have to restart tX to see the changes
195 - "soundfile-editor support": Enter the soundfile-editor of your choice in the
196 tX-Options dialog (Still looking for an editor? Checkout Dave's Linux
197 Sound and MIDI Pages: http://www.bright.net/~dlphilp/linuxsound/).
198 Click the edit button in the Main-Panel to start your editor with the
199 turntable's soundfile - edit ;) - save and click the reload button.
200 - big endian bug fixes by Scott C. Knight <scknight@indiana.edu>
201 - --enable-benchmark will now produce a benchmark binary. This takes a set file
202 as a parameter (that set file should autotrigger all tables, else the
203 benchmark will measure how fast tX can generate zeros ;) WARNING: the
204 benchmark binary is not a usable terminatorX binary.
205 - a new dial-widget. I created this for the upcoming GUI-redesign - and decided
206 I let you debug it right now ;) If you don't want it run configure with the
207 --disable-dial switch.
208 - some gui redesign. The volume scales are now located near their corresponding
209 "flash"-widget. This release fits into very small windows - so it should be
210 usable on smaller displays as well.
211 - Adrian told me configure doesn´t have to check for glib after checking for
212 gtk+ - I guess he´s right so the glib-test has gone.
216 - implemented "sequenceable parameters" (see tX_seqpar.*). This means the
217 groundwork for the sequencer is done. Although this release does not yet
218 feature a sequencer - there's still a profit: you can now see the GUI (e.g.
219 the lowpass-freq slider) update while you change that value with your mouse in
220 dga grab mode (e.g. up/down with the default X/Y-Control settings).
221 - fixed (libmmx) mmx.h to work with gcc 2.95 and above
222 - fixed compilation problems for big endian machines. still runtime probs
224 - fixed configure-script as the new bash complains about == in string compares
225 - fixed some gui segfaults
226 - added an ugly GNOME-mimetype installer. This installs the ".tX"-mime type, an
227 terminatorX-application icon and a ".tX"-icon. I could use some hints on how
228 I could make automake install that instead of an extra script.
230 - added Drag'n Drop support. Works with the great gmc. Drop an audio file over
231 the filename-button or the wavdisplay of a turntable to load it into that
232 table. Drop an audiofile over the "Add Turntable" Button to create a new
233 turntable and load that file into that turntable. Drop a tX-set file over the
234 "Load Set" button to load the set.
237 - fixes the load_piped() compilation error if you use neither sox nor mpg123.
238 Note that you have no "pre-listening" without mpg123 for mp3s and no
239 "pre-listening" for any other file without sox.
242 - Yet another redesign ;) Oh well this project moved from c++/multithreaded
243 to c++/singlethreaded, to c/multithreaded and now, finally, back to
244 c++/multithreaded. This shows quite some foresight, I'd say ;)
245 - Due to the redesign I had to change a lot (everything?) again so this document
246 can impossibly hold all changes. but let's see:
247 - tX now uses floats instead of doubles for a lot of parameters. Therefore the
248 old .terminatorXrc.bin is now called .terminatorX3rc.bin to allow parallel
249 use of older releases. But you'll have to configure the new release again
250 the first time you run it.
251 - tX now supports an unlimited no of turntables. The only limit is your display
253 - Each of these turntables has their own pitch / volume settings and a
254 dedicated lowpass and echo effect section.
255 - You can now map mouse motion to a function of your choice (scratching/
256 volume/cutoff/echo-feedback and nothing)
257 - Recording will now happen straight to disk. You'll have to specify a filename
258 before you start recording.
259 - You can sync the turntables to one master turntable.
260 - There are two master settings for pitch and volume available to modify all
261 turntables. The turntable pitch is relative to the master pitch.
262 - You can save a complete set (of turntables and settings) to a .tX set file.
263 The audiofile data will *not* be saved within that file, but it'll contain
264 the absolut filename to these files. I know this makes the act of exchanging
265 sets over the net more complex so if somebody wants to code set files with
266 integrated audio data... ;)
267 - The way audiofiles are loaded has been redesigned too: the builtin wav
268 routines, the sox support and mpg123 are no longer connected. This means
269 you can use mpg123 support without sox support and still have the builtin
270 wav routines enabled. If you have the builtin wav reader and sox enabled, tX
271 will try try to use the builtin routines first, and if they fail sox will be
272 used as a fallback which is of course slower as you know... There's some
273 support for Benno Senoner's brilliant 3.2-mmap() patch but the patch still
275 - You can now select which parameter to map to a mouse axis.
276 - experimental 3DNow! support (works with gcc < 2.95 only)
277 - tX-windows now have an icon, thanks Michael!
280 - implemented 2D-Scratching ;) You can now use the other axis of your mouse
281 two modify the cutoff frequency of the lowpass filter (if enabled). The
282 resonance factor can be set via the slider underneath "LP Filter". Seems
283 to eat quite some CPU power though...
284 - Updated THANKS, AUTHORS
285 - as most people seem to use sox/mpg123 anyway and as I still get "I want mp3"
286 emails I changed the configure script slightly: It now automatically enables
287 the use of sox and mpg123 if these are available. If you still want 'em good
288 old 16Bit/44.1Khz/Mono builtin routines you have to specify --enable-wavonly
289 with your configure cmdline.
290 - Prepared the tarball for the Win32 port. You can now compile tX with cygwin
291 and the Makefile.cygwin in the src directory if you have all the required
292 libs (gtk, pthreads etc...). The resulting exe will run BUT is completely
293 unusable for now... Stou Sandalski <tangui@cell2000.net> and I are planning
294 to make it usable in the future.
295 - The About-Dialog now contains some info on how the binary was compiled
298 - Optimized audio-rendering code for speed (might run on some machines
299 with smaller buffsize (-> lower latency) than pre-3.1) - Hey, tX now uses
300 less than 10% CPU (says kpm) with mixing enabled on my i586-200MMX machine!!
301 - "fixed" stdout-output. Due to the pipe-buffering realtime schratching can
302 not be considered usable for now :(
303 - Added config option --enable-scheduler, which will cause the terminatorX
304 engine-thread to run with FIFO scheduling policy and highest priority. This
305 might enable some machines to use smaller buffsizes. It requries root
306 privileges though - either run terminatorX as root - or make terminatorX
307 suid root WHICH IS A BAD IDEA FOR MULTI-USER SYSTEMS IF OTHER USERS CAN
308 ACCESS THE BINARY ;) You only have to think about this when you experience
309 buffer underruns with your desired latency. And it might not even help...
310 - Rehacked the de-clicking (fading) code. The old one tried to be much more
311 intelligent - and failed fading out the signal sometimes. The new code
312 is much simpler (faster) and is much more reliable.
313 - added common sense to the warp feature (f-key in scratch mode). The warping
314 speed is still connected to the mouse speed but it's now adjusted to the
315 sample size as well: you can warp through any sample completely with the same
317 - added debug configure switch. Enables (very few) debug messages for now. I
318 decided not to enable the old V2.X messages as they are sent to stdout, which
319 would sound pretty strange to people who use the stdout-option.
322 - Fixed Adrian's name in the THANKS file. Sorry, Adrian.
323 - Corrected Makefile.am for license.c that did not build correctly on some
324 systems - Thanks to Michael Pruett <mikep@ugcs.caltech.edu>
327 - fixed a bug that caused terminatorX to crash without --enable-sox or
331 - Changed everything ;)
332 - switched from C++ to C for gtk's sake
333 - switched back two multithreading
334 - implemented new gtk+ gui and dialogs
335 - new mouse-sampling code now uses DGA's DirectMouse
336 - implemented "initalizing"-support for XInput devices.
337 - new (alpha) "pre-listening" feature in scratch/loop dialogs
338 - hacked vtt for click-free audio. Might be problematic with big
339 kernel level buffersizes but scratching with big buffsize is no
341 - options are now stored in ~/.terminatorXrc.bin automatically (on exit)
342 as well as windowsize and the last used filenames
343 - terminatorX now comes with a configure script - no more Makefile hacking
344 required (nor a good idea ;) )
345 - new wavdisplay-widget update frequency is now configureable
346 - new position-display is much more visible which allows more precise
348 - new mute-feature allows you to silence the scratch-playback completely
349 while the loop keeps playing (press either <m>-key or right mouse-button.
350 - support for mouse buttons:
351 o 1. (left) button: same as <SPACE>, do scratch
352 o 2. (right) button: mute scratch
353 o 3. (middle) button: stop
354 - wrote support for sox and mpg123. This enables terminatorX to read close
355 to any audiofile. You need to have sox and mp3 and this feature (as it is
356 still alpha) needs to be enabled via configure-switches see INSTALL
357 - licmak now is an awk script. Thanks Christian! I was also received two perl
358 scripts (Thanks, guys!) but I now use the awk script as it is the smallest.
359 - introduced <F>-key to "warp" through scratch-sample (just check it out)
360 - dropped commandline arguments
361 - dropped old X-Code + Mouse warping madness
362 - bug fixes (less than bug introduces though ;) )
366 - implemented a time counter
367 - licmak now finally is what it should be: a perl script (licmak.pl)
368 it was contributed by: Adam Sjøgren <asjo@diku.dk>. Thanks!
371 - X-Window background fixed
372 - wavfile overreading fixed by Andrew C. Bul+hac?k (acb@zikzak.net)
373 - Using portable type definitions now where required. If you don't
374 have a <sys/types.h> on your system and your machines type sizes
375 equal those of an X86-machine you can specify -DUSE_X86_TYPES in
376 Makefile to compile without <sys/types.h>
377 - Slight change in audiodevice-handling that fixes improper buffsize
378 settings on some soundcards (e.g. GUS)
379 - Implemented "keep device open"-feature. Needs to be enabled via the
380 -DKEEP_DEV_OPEN switch in Makefile
381 - Added some comments to the Makefile for easier editing
382 - Added Big Endian support. Use -DBIG_ENDIAN_MACHINE for big endian hosts
383 like ultrapenguin suns or linux ppc. There's also -DBIG_ENDIAN_AUDIO
384 for big endian audio hardware (rare?) available, although proabably
385 nobody will need this.
386 - Changed mix behaviour: Mix is now automatically turned on on startup if
387 the user has specified a proper loop file. (with the --loop or -l switch)
388 - New mixing routine. You can now set the loop to scratch volume ratio with
389 the cursor keys (left/right). If you modify the volumes while recording
390 these action's will not be recorded. Saving happens with the currently
392 - Fixed README-Bug said <m> instead of <x>
395 - first released version
396 - added colors. more standard use of X11.
397 - added loop support.
398 - added statusbar with mode/status display
399 - added commandline options and help (on usage and keys)
400 - added raw/mixed save scratch feature
401 - added licmak to include license into binary
402 - new handling of XAutoRepeat, only turned off now when SPACE pressed.
403 - modified wave display (faster + nicer + incorrect (who cares anyway))
404 - Makefile fixed by Adrian Reber (adreit00@fht-esslingen.de)
410 - added recording, playback of recording functionality
413 - moved from multithreaded to singlethreaded
419 - no more position display due to pthread/X probs
425 - accelerating vtt via sinus