ae9bab130a0ac95296df5f5f2e8ad6439659596a
[terminatorX.git] / website / changelog.xml
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE section SYSTEM "./tX.dtd">
3 <section name="changelog">
4  <changelog>
5   <version name="3.82" unreleased="true">
6    <listitem>
7     <para class="screen"> 
8         fixed compilation issues with g++ >= 3.4.
9         </para>
10    </listitem>
11    <listitem>
12     <para class="screen"> 
13         added reverse mapping of MIDI parameters which can be turned on/off
14         via the parameter menu. This allows setting up a MIDI controller
15         as a crossfader.
16         </para>
17    </listitem>
18    <listitem>
19     <para class="screen">
20          in order to have a SPAM protected online version of the ChangeLog this 
21          document is now generated from XML sources.
22          </para>
23    </listitem>
24    <listitem>
25     <para class="screen">
26      merged a patch from <person>
27       <name>Martin Habets</name>
28       <email>errandir_news@mph.eclipse.co.uk</email>
29      </person> that fixes big endian audio playback with ALSA.</para>
30    </listitem>
31    <listitem>
32     <para class="screen">
33      applied a fix from <person>
34       <name>Juha Erkkila</name>
35       <email>erkkila@cc.jyu.fi</email>
36      </person> that makes tX work on systems that don't have procfs mounted.</para>
37    </listitem>
38    <listitem>
39     <para class="screen">
40      added an optional Dry/Wet control for all LADSPA plugins. Simply click on
41      the plugin's label to add or remove the additional control.</para>
42    </listitem>
43    <listitem>
44     <para class="screen">
45      added an additional stereo effects queue that allows loading stereo LADPSA
46      plugins. The stereo effects are located below the mono effects - to add a
47      new instance press the "Stereo FX" button and select the plugin of your
48      choice.</para>
49    </listitem>
50    <listitem>
51     <para class="screen">
52      fixed the plugin menu - empty categories no longer get a menu entry</para>
53    </listitem>
54    <listitem>
55     <para class="screen">
56      plugins that do not qualify as realtime capable will now be disabled.</para>
57    </listitem>
58    <listitem>
59     <para class="screen">
60      I'm fed up with terminatorX related security postings, so the old suid-root
61      method had to go. To achieve realtime scheduling you now have three
62      options:<itemizedlist>
63       <listitem>
64        <para class="screen">
65         a) run terminatorX as root (obviously dangerous and not recommended)</para>
66       </listitem>
67       <listitem>
68        <para class="screen">
69         b) build terminatorX with capabilities enabled and install it suid-root.
70         Due to the use of PR_SET_KEEPCAPS this will work on Linux _only_</para>
71       </listitem>
72       <listitem>
73        <para class="screen">
74         c) use the JACK backend with "POSIX draft capabilities" (see jackd
75         manpage)</para>
76       </listitem>
77      </itemizedlist></para>
78    </listitem>
79    <listitem>
80     <para class="screen">
81      Loading sets with missing LADPSA plugins no longer crash tX.</para>
82    </listitem>
83    <listitem>
84     <para class="screen">
85      Fixed a bug that made reading error messages impossible with the load
86      dialog open.</para>
87    </listitem>
88    <listitem>
89     <para class="screen">
90      The engine now handles audiodevices that break down when already in
91      playback mode more gracefully. This really necessary when jack decides to
92      kick us out.</para>
93    </listitem>
94    <listitem>
95     <para class="screen">
96      All vu meters are stereo now. Having a mono widget for a stereo thing just
97      didn't make any sense anymore.</para>
98    </listitem>
99    <listitem>
100     <para class="screen">
101      modified the render loop to comply with LADSPA V1.1: 0 db is now at 1.0f.
102      This makes a lot of plugins work with terminatorX that haven't worked with
103      previous releases.</para>
104    </listitem>
105    <listitem>
106     <para class="screen">
107      data send to the JACK backend no goes through the "Anti-Clip-Device", too.
108      Unless you #define TX_DO_CLIP of course.</para>
109    </listitem>
110    <listitem>
111     <para class="screen">
112      I've drawn some new icons with the cool 
113          <link ref="http://www.inkscape.org">inkscape</link>.
114          They're now being built into terminatorX as gdk-pixbuf c-source code, so they
115      actually do alpha blending.</para>
116    </listitem>
117    <listitem>
118     <para class="screen">
119      Wrote support for gtk+'s new FileChooser widget - will be enabled
120      automatically when configure finds a gtk+ >= 2.4.0</para>
121    </listitem>
122    <listitem>
123     <para class="screen">
124      Fixed the buffer overflows detected by <person>
125       <name>c0wboy</name>
126       <email>c0wboy@tiscali.it</email>
127      </person> in his outsiders-terminatorX-001.txt advisory.</para>
128    </listitem>
129    <listitem>
130     <para class="screen">
131      Support for gtk+ startup notification.</para>
132    </listitem>
133    <listitem>
134     <para class="screen">
135      "README.GNOME" was outdated so it had to go.</para>
136    </listitem>
137    <listitem>
138     <para class="screen">
139      merged parts of a patch graciously contributed by <person>
140       <name>Adam King</name>
141       <email>aking@lgh.com.au</email>
142      </person><itemizedlist>
143       <listitem>
144        <para class="screen">
145         Simpler min/maximization for the control panels</para>
146       </listitem>
147       <listitem>
148        <para class="screen">
149         Bugfix for sequencer menu crash</para>
150       </listitem>
151       <listitem>
152        <para class="screen">
153         The panel formally known as "Trigger" is now known as "Playback"></para>
154       </listitem>
155      </itemizedlist></para>
156    </listitem>
157    <listitem>
158     <para class="screen">
159      added cpu-overload detection - currently disabled</para>
160    </listitem>
161   </version>
162   <version name="3.81">
163    <listitem>
164     <para class="screen">
165      JACK doesn't seem to like SCHED_FIFO clients so I added a little test that
166      will set SCHED_OTHER when jack output was selected. This will work for true
167      root or a capabilities-enabled suid-root binary only.</para>
168    </listitem>
169    <listitem>
170     <para class="screen">
171      removed the disfunctional "Cancel" button from the load-progress dialog.</para>
172    </listitem>
173    <listitem>
174     <para class="screen">
175      switched default MIDI mapping to non-destructive. (previous settings will
176      not be overwritten now).</para>
177    </listitem>
178    <listitem>
179     <para class="screen">
180      added a default MIDI mapping accessible via the "Turntables" menu. The
181      actual mapping is documented in the manual.</para>
182    </listitem>
183    <listitem>
184     <para class="screen">
185      fixed a bug that caused enabling sync-client setting via MIDI to fail.</para>
186    </listitem>
187    <listitem>
188     <para class="screen">
189      when compiled with rt-scheduling suppport terminatorX will now display the
190      resulting scheduling policy in the "About" dialog.</para>
191    </listitem>
192    <listitem>
193     <para class="screen">
194      if terminatorX was setup to use realtime priority for the audio engine
195      thread but you dont want it - disable realtime scheduling in the
196      Preferences dialog. This works with capabilities _ONLY_.</para>
197    </listitem>
198    <listitem>
199     <para class="screen">
200      if you don't want to confirm program termination every time you can now
201      disable "Ask for Quit confirmation" in the Preferences.</para>
202    </listitem>
203    <listitem>
204     <para class="screen">
205      added support for Linux' POSIX capabilities. This allows a suid-root
206      installed terminatorX binary to drop root privileges much earlier than with
207      the old approach (so it should be more secure). Requires the libcap
208      library.</para>
209    </listitem>
210    <listitem>
211     <para class="screen">
212      obligatory documentation updates - clicking on the sub-sections should now
213      work.</para>
214    </listitem>
215    <listitem>
216     <para class="screen">
217      removed gtk+ 1.2 cruft - terminatorX now compiles with gtk+ 2.2 and
218      *_DISABLE_DEPRECATED macros enabled. To verfiy that you can run configure
219      with --disable-deprecated.</para>
220    </listitem>
221    <listitem>
222     <para class="screen">
223      terminatorX now has a JACK backend. Currently it works like this: on
224      startup tX will connect to the JACK daemon - if the daemon is not available
225      on startup JACK output is not available. When the audio engine is turned
226      off, tX emits silence via the JACK ports, so you can leave the ports
227      connected.</para>
228    </listitem>
229    <listitem>
230     <para class="screen">
231      sick of green - you can now configure the colors terminatorX should use for
232      the audio display as well as the vu meters in the Preferences dialog.</para>
233    </listitem>
234    <listitem>
235     <para class="screen">
236      hopefully fixed wrong setting of the master volume when loading set files.</para>
237    </listitem>
238    <listitem>
239     <para class="screen">
240      some ALSA installations seem to core on snd_pcm_hw_params_free() after
241      sound device init. So freeing the hw_params can now be explicitly disabled
242      in the Preferences - if terminatorX crashes right after hitting the "Power
243      On" button it might be necessary to activate this for your ALSA setup. This
244      probably results in a tiny memory leak - but on leak vs core you might
245      decide for leak. Note: I even enabled the leak by default now.</para>
246    </listitem>
247    <listitem>
248     <para class="screen">
249      fixed a bug that caused turntable 1 to get the focus on entering Mouse Grab
250      mode even when it's audio panel was minimized.</para>
251    </listitem>
252    <listitem>
253     <para class="screen">
254      MIDI mappings can now have "bounds", meaning that the incoming MIDI signals
255      can modify the parameter within the given range only.</para>
256    </listitem>
257    <listitem>
258     <para class="screen">
259      introduced a new way of assigning MIDI controllers to parameters: simply
260      right-click on a parameter's control: a menu with "MIDI Learn" and "Remove
261      MIDI Binding" will pop up - select "MIDI Learn" and send the corresponding
262      MIDI event.</para>
263    </listitem>
264    <listitem>
265     <para class="screen">
266      fixed a bug in the MIDI callback thanks to <person>
267       <name>David Hamilton</name>
268       <email>daham2@student.monash.edu</email>
269      </person></para>
270    </listitem>
271    <listitem>
272     <para class="screen">
273      running suid root (the old way) was reported exploitable by <person>
274       <name>Andrew Griffiths</name>
275       <email>andrewg@felinemenace.org</email>
276      </person> - the described environment variable based exploit was fixed - however there are
277      possibly other ways to exploit it. So the old method of running suid root
278      has been disabled by default. On Linux systems you really should use the
279      capabilities based approach (see above). If really want to use the old
280      suid-root solution run configure with --enable-suidroot.</para>
281    </listitem>
282    <listitem>
283     <para class="screen">
284      often, you record events and mess things up - in this case I'd often prefer
285      dropping the complete take instead of recording a bad perfomance - which is
286      why you now can activate "Confirm Recorded Events" from the "Sequencer"
287      menu. When enabled terminatorX will ask whether to actually record or drop
288      the events created for the last take. The setting for this flag is stored
289      in your ~/.terminatorXrc.</para>
290    </listitem>
291    <listitem>
292     <para class="screen">
293      introduced a new "Sequencer" menu that allows to delete events of a
294      specific type (all, all for certain turntable, all for a certain parameter)
295      from the sequencer. Events can be deleted for the complete song, upto the
296      current song position or from the current song position. Yeah, I know,
297      termintorX is lacking a proper event-editor here, so where's your patch? ;)</para>
298    </listitem>
299    <listitem>
300     <para class="screen">
301      switching the X11 mouse cursor when the user has to wait for terminatorX to
302      finish some operation</para>
303    </listitem>
304    <listitem>
305     <para class="screen">
306      fixed a sequencer bug: the events for master pitch and volume weren't
307      erased correctly when another set was loaded</para>
308    </listitem>
309    <listitem>
310     <para class="screen">
311      fixed FreeBSD issues with the configure script</para>
312    </listitem>
313    <listitem>
314     <para class="screen">
315      fixed compilation issues for gcc 2.95.x</para>
316    </listitem>
317   </version>
318   <version name="3.80">
319    <listitem>
320     <para class="screen">
321      I've invested quite some time in valgrinding this release, among other
322      things a major mem leak showed up - the sample memory wasn't being free'd
323      correctly which is now corrected along with many other things. valgrind is
324      a very helpful tool indeed.</para>
325    </listitem>
326    <listitem>
327     <para class="screen">
328      Added a new Pitch Calculator that allows adjusting a turntable's pitch to
329      that of the master turntable. This makes synchronizing finely cut loop
330      samples really easy</para>
331    </listitem>
332    <listitem>
333     <para class="screen">
334      XML based set files can get rather huge when they contain a lot of
335      sequencer events - to solve this terminatorX now uses zlib to save
336      compressed set files if enabled in the preferences dialog.</para>
337    </listitem>
338    <listitem>
339     <para class="screen">
340      I hacked support for Steve Harris' cool liblrdf - if you've got that
341      library setup correctly and you use Steve's wonderful plugin collection
342      with RDF description you should get a nicely structured menu when clicking
343      on the "FX" button. All plugins not categorized through RDF files go to the
344      "Unclassified" category.</para>
345    </listitem>
346    <listitem>
347     <para class="screen">
348      I'm no longer including the html and ps versions of the manual - it's now
349      attached in it's XML/DocBook source and will be installed via scrollkeeper.
350      terminatorX offers a menu entry to start gnome-help to display the manual.</para>
351    </listitem>
352    <listitem>
353     <para class="screen">
354      Reworked the Preferences dialog - I now use glade-2 to create that code -
355      I'm fed up with copy'n'pasting gtk+ code so now I'll let glade-2 do this
356      whereever possible. The glade project files are included with this tarball
357      in case you want to mess with them.</para>
358    </listitem>
359    <listitem>
360     <para class="screen">
361      Switched to a fixed blocksize (1 ms) for rendering. This finally allows to
362      playback set files with events recorded on machines with small buffer sizes
363      on slow machines with large buffer sizes. The buffersize of the audiodevice
364      has no effect on the "operating" blocksize anymore. Note that the samlping
365      rate has a - very small - effect though. Depending on the sampling rate
366      terminatorX will try to find a blocksize that fits exactly 1 ms - while
367      this is easy for "straight" sampling rates (22000 32000 48000) this results
368      in "44.1" samples for 44100 Hz.</para>
369    </listitem>
370    <listitem>
371     <para class="screen">
372      Finally hacked a native ALSA backend. It's in "Works For Me" TM state.</para>
373    </listitem>
374    <listitem>
375     <para class="screen">
376      Added "Remove Binding" button</para>
377    </listitem>
378    <listitem>
379     <para class="screen">
380      MIDI now uses a GIOCallback so the effect of MIDI controllers is visible
381      even without the audio engine turned on.</para>
382    </listitem>
383    <listitem>
384     <para class="screen">
385      Reworked the mastergui for better usabilty and less space consumption, yes,
386      terminatorX now features a boring menubar - which helps using it on small
387      displays quite a bit, and should be easier to handle for first-time users.</para>
388    </listitem>
389    <listitem>
390     <para class="screen">
391      Implemented a suggestion from <person>
392       <name>Darrick Servis</name>
393       <email>darrick@dcn.davis.ca.us</email>
394      </person> that stops clipping in the mixer routine. The outgoing signal is now limited as
395      it should be, which improves the output quality for signals too loud
396      significantly.</para>
397    </listitem>
398    <listitem>
399     <para class="screen">
400      MIDI mappings are now stored within the (new) tX set files.</para>
401    </listitem>
402    <listitem>
403     <para class="screen">
404      Applied a patch from <person>
405       <name>Arthur Peters</name>
406       <email>amp@singingwizard.org</email>
407      </person> which brings preliminary MIDI support to terminatorX. This is realized via the
408      ALSA sequencer interface, so in order for it to compile you have to have
409      the ALSA devel packages installed. ./configure will autodetect them.</para>
410    </listitem>
411    <listitem>
412     <para class="screen">
413      Fixed a bug in XML serialization that dropped strings' contents.</para>
414    </listitem>
415    <listitem>
416     <para class="screen">
417      You can now hit "F11" to turn fullscreen mode on/off - this will help using
418      terminatorX on small DJ laptops. Note that the key will have no effect in
419      scratch mode - hit it before you enter grab mode. This feature requires a
420      NETWM compliant window manager.</para>
421    </listitem>
422    <listitem>
423     <para class="screen">
424      terminatorX now stores set files as XML documents, too - so terminatorX has
425      become terminatorXML finally. Note: for sets with a large number of events
426      recorded into the sequencer - the XML based set files can grow significally
427      larger than the old ones (see "compression" above)</para>
428    </listitem>
429    <listitem>
430     <para class="screen">
431      The old code to support the obsolete binary tX file formats has now been
432      scheduled for deletion. It's been moved into the tX_legacy* source files
433      and it will be built only when "--enable-legacy" was used on configuring
434      terminatorX (which is the default). Expect this to become disabled and then
435      totally removed from the sources in future.</para>
436    </listitem>
437    <listitem>
438     <para class="screen">
439      Enhanced audio data display - you can now zoom into the audio signal, which
440      should allow much more precise scratching with larger audio files (ie
441      complete tracks). On playback terminatorX will scroll the displayed area to
442      ensure you always see the area of the sample in which you're currently
443      scratching on.</para>
444    </listitem>
445    <listitem>
446     <para class="screen">
447      I have not backported the new code to the old gtk+ 1.2 - so this release no
448      longer builds with gtk+ 1.2 - you have to upgrade to gtk+ Version 2 to be
449      able to build terminatorX.</para>
450    </listitem>
451    <listitem>
452     <para class="screen">
453      fixed a nasty gcc 3.2 compilation bug - thanks to <person>
454       <name>Adam Duck</name>
455       <email>duck@informatik.uni-frankfurt.de</email>
456      </person> and other reporters</para>
457    </listitem>
458   </version>
459   <version name="3.73">
460    <listitem>
461     <para class="screen">
462      Fixed a compilation bug ocurring on big endian systems only.</para>
463    </listitem>
464    <listitem>
465     <para class="screen">
466      Fixed the built-in wav loading routines for big endian systems (again).</para>
467    </listitem>
468    <listitem>
469     <para class="screen">
470      Finally traced down and fixed a long outstanding bug in the dial widget,
471      the background of the dials is now drawn correctly.</para>
472    </listitem>
473    <listitem>
474     <para class="screen">
475      Ported terminatorX to gtk+ Version 2. The code for gtk2 will be enabled
476      when gtk2 is detected by configure. To force terminatorX to use the good
477      old gtk 1.2.x (x>=5) run configure with the '--disable-gtk2' switch.
478      WARNING: gdkxft-users: gtk2 applications segfault when preloading
479      libgdk_xft.so! So unset LD_PRELOAD and set GDK_USE_XFT=1 instead.</para>
480    </listitem>
481    <listitem>
482     <para class="screen">
483      Applied a patch from Adrian that brings lots of new stuff:<itemizedlist>
484       <listitem>
485        <para class="screen">
486         Debian package support (removed - Mike Furr now maintains an official
487         Debain package for terminatorX)</para>
488       </listitem>
489       <listitem>
490        <para class="screen">
491         enhanced GNOME integration</para>
492       </listitem>
493       <listitem>
494        <para class="screen">
495         a manpage for terminatorX</para>
496       </listitem>
497      </itemizedlist></para>
498    </listitem>
499    <listitem>
500     <para class="screen">
501      Included another gcc3 fix thanks to <person>
502       <name>Gregor Riepl</name>
503       <email>seto-kun@freesurf.ch></email>
504      </person></para>
505    </listitem>
506    <listitem>
507     <para class="screen">
508      Improved configure's compatibilty - it should detect pthreads more reliably
509      and it should detect ladspa.h when located in /usr/local/include without
510      /usr/local/include being contained in the include path.</para>
511    </listitem>
512    <listitem>
513     <para class="screen">
514      This release should compile and run on FreeBSD systems and possibly
515      OpenBSD, too. Thanks for help and testing this goes to <person>
516       <name>Tilman Linneweh</name>
517       <email>tilman@arved.de</email>
518      </person>.</para>
519    </listitem>
520    <listitem>
521     <para class="screen">
522      Sequencer now refuses to play when no events available - and displays a
523      dialog that suggests running the audio engine.</para>
524    </listitem>
525    <listitem>
526     <para class="screen">
527      De-uglified the terminatorX note dialog.</para>
528    </listitem>
529    <listitem>
530     <para class="screen">
531      Fixed gtk+2 signals for load file dialog</para>
532    </listitem>
533    <listitem>
534     <para class="screen">
535      Pre-listen support for mpg321</para>
536    </listitem>
537    <listitem>
538     <para class="screen">
539      Added a new auto-hiding "panel-bar" to which turntable control and audio
540      panels can be minimized to.</para>
541    </listitem>
542    <listitem>
543     <para class="screen">
544      Cleaned up the turntables' audio panel for better looks and easier usage</para>
545    </listitem>
546    <listitem>
547     <para class="screen">
548      Rewrote the engine thread completely - unlike before the engine thread is
549      created on startup and kept alive until termination.</para>
550    </listitem>
551    <listitem>
552     <para class="screen">
553      terminatorX can now be run suid root - and it might even be safe. After
554      creating the engine thread both terminatorX threads drop root privileges
555      before evaluating any parameters or reading/writing files, etc. The problem
556      is the pthread "manager thread" is out of control of terminatorX code - so
557      I cannot tell that thread to drop privileges.</para>
558    </listitem>
559    <listitem>
560     <para class="screen">
561      Fixed Drag'n'Drop for GNOME 2</para>
562    </listitem>
563    <listitem>
564     <para class="screen">
565      To enhance the loading of audiofiles terminatorX now contains code to use
566      mad (MPEG Audio Decoder), libvorbis and libaudiofile directly instead of
567      pipeing audio data through mpg123, ogg123 or sox. As a result the new
568      routines bring following advantages:<itemizedlist>
569       <listitem>
570        <para class="screen">
571         tX loads audiofiles significantly faster</para>
572       </listitem>
573       <listitem>
574        <para class="screen">
575         tX now honours the samplerate of an audiofile (by adjusting the pitch of
576         the turntable)</para>
577       </listitem>
578       <listitem>
579        <para class="screen">
580         tX provides much better feedback on the loading progress</para>
581       </listitem>
582      </itemizedlist>Although the old loading-methods are still available (and piped loading has been
583      improved, too) I highly recommend installing the libraries above as the new
584      routines simply work better.</para>
585    </listitem>
586    <listitem>
587     <para class="screen">
588      Deleted tons of old outdated code in tX_engine.cc and tX_mastergui.cc</para>
589    </listitem>
590   </version>
591   <version name="3.72">
592    <listitem>
593     <para class="screen">
594      Applied a patch from <person>
595       <name>Matthew Evans</name>
596       <email>activesx@hotmail.com</email>
597      </person> that introduces support for Ogg Vorbis audiofiles. It requires ogg123 > RC2 and
598      sox to work. Autodetection is supported via configure (--enable-ogg123).</para>
599    </listitem>
600    <listitem>
601     <para class="screen">
602      Experimental support for input devices other than the core-pointer under
603      XFree86 > 4. This uses the xsetpointer executable that comes with XFree86.
604      configure should autodetect this correctly, in case it doesn't use the
605      --enable-xetpointer switch.</para>
606    </listitem>
607    <listitem>
608     <para class="screen">
609      Adrian sent me a patch introducing two new buttons: mute and solo. As it
610      didn't fully harmonize with the sequencer I rewrote parts of it and added
611      new functionality to the turntables: They can now be switched to mix_solo
612      or mix_mute - these settings affect current mixing only - their values will
613      neither be saved nor will changes to those control be recorded in the
614      sequencer - if you want to record muting events either use the mute button
615      from the turntable's trigger menu, the keyboard short-cuts (alt/strg), or
616      your middle mouse button.</para>
617    </listitem>
618    <listitem>
619     <para class="screen">
620      fixed a bug that produced corrupt wavfiles on big endian machines</para>
621    </listitem>
622    <listitem>
623     <para class="screen">
624      some minor fixes to make terminatorX compile with newer gcc releases</para>
625    </listitem>
626    <listitem>
627     <para class="screen">
628      Well, I am allowed to change my mind, aren't I? Anyway, 3DNow! is back.
629      Nevertheless newer gcc releases seem to have a bug in handling movq and the
630      current 3DNow! stereo implementation does not seem to be very efficient. So
631      use --enable-3dnow only if you want to help me improve perfomance.</para>
632    </listitem>
633    <listitem>
634     <para class="screen">
635      Modified the mpg123 loader in order to make it work with mpg321, too.
636      mpg321 lacks support for mpg123's -m switch ("singlemix") therefor mpg?2?'s
637      output is now piped into sox to convert the signal to mono. For this reason
638      mpg?2? support now requires sox to be installed, too.</para>
639    </listitem>
640    <listitem>
641     <para class="screen">
642      added a workaround for a gtk+ bug that causes empty labels when strings
643      contain umlauts - unluckily my name features one of these so I had to write
644      this workaround.</para>
645    </listitem>
646   </version>
647   <version name="3.71">
648    <listitem>
649     <para class="screen">
650      applied a big patch from <person>
651       <name>Adrian Reber</name>
652       <email>adrian@lisas.de</email>
653      </person>. This patch includes:<itemizedlist>
654       <listitem>
655        <para class="screen">
656         compile fixes for the newer gcc releases</para>
657       </listitem>
658       <listitem>
659        <para class="screen">
660         enhancements to the commandline switches (try --help for more details)</para>
661       </listitem>
662      </itemizedlist></para>
663    </listitem>
664    <listitem>
665     <para class="screen">
666      the bigNewThang (TM) is STEREO output. The Pan-Buttons now actually do what
667      you'd expect them to. Therefore your soundcard must have stereo support of
668      course but I guess in 2001 this really shouldn't be a problem, right? The
669      recorded wavfiles will now be stereo wavfiles of course. Note that stereo
670      output means double audio-bandwith, so if you tuned your old terminatorX
671      setup to smallest latency you might get clicks now. You can easily fix this
672      by increasing the buffer size in the options dialog by one - this will
673      result in the same latency as before btw.</para>
674    </listitem>
675    <listitem>
676     <para class="screen">
677      The echo effect has undergone some enhancements to profit from the new
678      stereo output. It's signal will now be mixed seperately so you can choose a
679      different stereo panorama position for the echo signal. So the new echo
680      effect now features it's own PAN-knob. This does have some sideeffects
681      though, for more details on this check the manual. Additionally the echo
682      effect now has it's own volume setting to influence the dry/wet ratio of
683      this effect.</para>
684    </listitem>
685    <listitem>
686     <para class="screen">
687      Some LADSPA effects tend to create NAN (Not A Number) float values under
688      certain conditions. This is bad as all following operations will result in
689      NANs, so there will be no audio output no more. Now I will not introduce
690      code to check for NANs as this is a waste of CPU-power, producing NANs is
691      IMHO a faulty behaviour for LADSPA plugins and it should be fixed in there.
692      Now a problem with the previous release was that the echo and lowpass
693      effects "ate" those NANs resulting in NANs in those effects' buffers. So
694      once a NAN got in there these effects caused the whole audio output to mute
695      (forever). Which is why I now introduced some code to clear the buffers in
696      echo and lowpass whenever you dis- and reenable them.</para>
697    </listitem>
698    <listitem>
699     <para class="screen">
700      The GUI does have two master vu-meters now. The turntable's still have one
701      vu-meter only. Note that the echo-signal is *not* included in the
702      turntable's vu-meter now, as it's mixed seperately.</para>
703    </listitem>
704    <listitem>
705     <para class="screen">
706      The 3DNow!-Optimizations are gone. And they'll proabably never come back as
707      I don't have time to maintain the same algorithm twice.</para>
708    </listitem>
709    <listitem>
710     <para class="screen">
711      The documentation has been updated to meet the new features. A lot of typos
712      have been fixed as well.</para>
713    </listitem>
714   </version>
715   <version name="3.70">
716    <listitem>
717     <para class="screen">
718      this list may be incomplete</para>
719    </listitem>
720    <listitem>
721     <para class="screen">
722      This release brings support for LADSPA plugins. These plugins can be
723      inserted into any turntable's effect chain at any position. You can edit
724      the the effect sequence with the two tiny blue arrows. The builtin effects
725      reside in the same effect chain as LADSPA plugins, but unlike LADSPA
726      plugins they cannot be removed (nor multi-instanciated). The LADSPA plugins
727      have to "fit" into the effect chain, which is why terminatorX supports
728      *mono* plugins (plugins that have one audio-in and one audio-out port)
729      only. For the plugin's control ports, termintatorX supports all HINTS
730      except for LADSPA_HINT_LOGARITHMIC. Some control ports might be hard to
731      handle as LAPDSA control ports can have very wide value ranges. It is
732      possible to enter precise values though. Get LADSPA and the CMT plugins
733      from <link ref="http://www.ladspa.org">http://www.ladspa.org</link>.
734          All parameters for LADSPA-plugins are "sequencable parameters", so you can
735      record parameter-change events for the plugin's knobs just as for the
736      standard parameters.</para>
737    </listitem>
738    <listitem>
739     <para class="screen">
740      GUI re-design to support dynamic plugin GUIs. The audiofile-display is now
741      seperated from the turntable's controls. The groups are split in to panels
742      which can be minimized if not required (orange arrow). The panels'
743      minimized-status will be saved within the set files. To add a plugin effect
744      into the turntables effect chain click on the "FX"- button and choose the
745      plugin of your choice. To get more info on the plugin effects click on
746      their panel's label. NOTE: The panning-control is not working yet. It'll
747      work as soon as stereo is done.</para>
748    </listitem>
749    <listitem>
750     <para class="screen">
751      As always when introducing something new, the set-file file-format has
752      changed.</para>
753    </listitem>
754    <listitem>
755     <para class="screen">
756      The parameter-to-mouse-axis mapping has been moved from hardcoded to
757      dynamic. You can now map any parameter that's considered "mappable" to the
758      mouse-axis of your choice (for each turntable separately). This is true for
759      the control ports of LADSPA-plugins, too.</para>
760    </listitem>
761    <listitem>
762     <para class="screen">
763      <person>
764       <name>Josh Steiner</name>
765       <email>joschi@eds.org</email>
766      </person> has joined terminatorX development. For this release he has added some startup
767      parameters for terminatorX, some of them aiming for future MIDI support,
768      and therefor not functional yet. Run "terminatorX --help" to get more
769      details.</para>
770    </listitem>
771    <listitem>
772     <para class="screen">
773      I know write the "manual" in SGML with the DocBook DTD. The distribution
774      contains the HTML and the postscript version. These transformation have
775      been created using James Clark's jade (DSSSL-processor) and Norman Walsh's
776      DSSSL stylesheets for DocBook.</para>
777    </listitem>
778    <listitem>
779     <para class="screen">
780      Removed obsolete "number of vtts"-option from the options dialog.</para>
781    </listitem>
782    <listitem>
783     <para class="screen">
784      Applied a patch from Josh that fixes running the soundfile editor for files
785      including a blank in their filename.</para>
786    </listitem>
787    <listitem>
788     <para class="screen">
789      New tooltips for the complete GUI.</para>
790    </listitem>
791   </version>
792   <version name="3.61" unreleased="true">
793    <listitem>
794     <para class="screen">
795      applied a tiny patch from <person>
796       <name>Atsushi Yamagata</name>
797       <email>yamagata@plathome.co.jp</email>
798      </person> to set locale on startup.</para>
799    </listitem>
800   </version>
801   <version name="3.60">
802    <listitem>
803     <para class="screen">
804      terminatorX has a sequencer now. Warning: with the current design the
805      sequencer will correctly play back recorded events only when the buffer
806      size (of the audio device) is set to the same size as it was when recording
807      the events. I know this is annoying and I will try to find a solution to
808      this. Please take a look at the README to find out how the sequencer works.</para>
809    </listitem>
810    <listitem>
811     <para class="screen">
812      fixed a bug causing the lowpass filter produce a constant signal</para>
813    </listitem>
814    <listitem>
815     <para class="screen">
816      fixed the load file / drag'n'drop segfault bug</para>
817    </listitem>
818    <listitem>
819     <para class="screen">
820      fixed the prelisten zombie processes bug</para>
821    </listitem>
822    <listitem>
823     <para class="screen">
824      fixed the segfault on termination bug (with the audio engine running)</para>
825    </listitem>
826    <listitem>
827     <para class="screen">
828      hacked the mixer code to use 3DNow! too. This improves 3DNow! performance
829      gain from previously ~6% to more than 20% (depending on compiler
830      optimizations)</para>
831    </listitem>
832    <listitem>
833     <para class="screen">
834      extended the set-file-format to allow storing of sequencer events. This
835      release allows loading old tX-sets too.</para>
836    </listitem>
837    <listitem>
838     <para class="screen">
839      some gui icons. Choose Text/Icon / Icon only / Text only display of these
840      icons in the Options dialog. You'll have to restart tX to see the changes
841      though.</para>
842    </listitem>
843    <listitem>
844     <para class="screen">
845      "soundfile-editor support": Enter the soundfile-editor of your choice in
846      the tX-Options dialog (Still looking for an editor? Checkout Dave's Linux
847      Sound and MIDI Pages: http://www.bright.net/~dlphilp/linuxsound/). Click
848      the edit button in the Main-Panel to start your editor with the turntable's
849      soundfile - edit ;) - save and click the reload button.</para>
850    </listitem>
851    <listitem>
852     <para class="screen">
853      big endian bug fixes by <person>
854       <name>Scott C. Knight</name>
855       <email>scknight@indiana.edu</email>
856      </person></para>
857    </listitem>
858    <listitem>
859     <para class="screen">
860      --enable-benchmark will now produce a benchmark binary. This takes a set
861      file as a parameter (that set file should autotrigger all tables, else the
862      benchmark will measure how fast tX can generate zeros ;) WARNING: the
863      benchmark binary is not a usable terminatorX binary.</para>
864    </listitem>
865    <listitem>
866     <para class="screen">
867      a new dial-widget. I created this for the upcoming GUI-redesign - and
868      decided I let you debug it right now ;) If you don't want it run configure
869      with the --disable-dial switch.</para>
870    </listitem>
871    <listitem>
872     <para class="screen">
873      some gui redesign. The volume scales are now located near their
874      corresponding "flash"-widget. This release fits into very small windows -
875      so it should be usable on smaller displays as well.</para>
876    </listitem>
877    <listitem>
878     <para class="screen">
879      Adrian told me configure doesn't have to check for glib after checking for
880      gtk+ - I guess he's right so the glib-test has gone.</para>
881    </listitem>
882    <listitem>
883     <para class="screen">
884      more minor fixes</para>
885    </listitem>
886   </version>
887   <version name="3.55">
888    <listitem>
889     <para class="screen">
890      implemented "sequenceable parameters" (see tX_seqpar.*). This means the
891      groundwork for the sequencer is done. Although this release does not yet
892      feature a sequencer - there's still a profit: you can now see the GUI (e.g.
893      the lowpass-freq slider) update while you change that value with your mouse
894      in dga grab mode (e.g. up/down with the default X/Y-Control settings).</para>
895    </listitem>
896    <listitem>
897     <para class="screen">
898      fixed (libmmx) mmx.h to work with gcc 2.95 and above</para>
899    </listitem>
900    <listitem>
901     <para class="screen">
902      fixed compilation problems for big endian machines. still runtime probs
903      reported though.</para>
904    </listitem>
905    <listitem>
906     <para class="screen">
907      fixed configure-script as the new bash complains about == in string
908      compares</para>
909    </listitem>
910    <listitem>
911     <para class="screen">
912      fixed some gui segfaults</para>
913    </listitem>
914    <listitem>
915     <para class="screen">
916      added an ugly GNOME-mimetype installer. This installs the ".tX"-mime type,
917      an terminatorX-application icon and a ".tX"-icon. I could use some hints on
918      how I could make automake install that instead of an extra script. (see
919      README.GNOME)</para>
920    </listitem>
921    <listitem>
922     <para class="screen">
923      added Drag'n Drop support. Works with the great gmc. Drop an audio file
924      over the filename-button or the wavdisplay of a turntable to load it into
925      that table. Drop an audiofile over the "Add Turntable" Button to create a
926      new turntable and load that file into that turntable. Drop a tX-set file
927      over the "Load Set" button to load the set.</para>
928    </listitem>
929   </version>
930   <version name="3.51">
931    <listitem>
932     <para class="screen">
933      fixes the load_piped() compilation error if you use neither sox nor mpg123.
934      Note that you have no "pre-listening" without mpg123 for mp3s and no
935      "pre-listening" for any other file without sox.</para>
936    </listitem>
937   </version>
938   <version name="3.5">
939    <listitem>
940     <para class="screen">
941      Yet another redesign ;) Oh well this project moved from c++/multithreaded
942      to c++/singlethreaded, to c/multithreaded and now, finally, back to
943      c++/multithreaded. This shows quite some foresight, I'd say ;)</para>
944    </listitem>
945    <listitem>
946     <para class="screen">
947      Due to the redesign I had to change a lot (everything?) again so this
948      document can impossibly hold all changes. but let's see:</para>
949    </listitem>
950    <listitem>
951     <para class="screen">
952      tX now uses floats instead of doubles for a lot of parameters. Therefore
953      the old .terminatorXrc.bin is now called .terminatorX3rc.bin to allow
954      parallel use of older releases. But you'll have to configure the new
955      release again the first time you run it.</para>
956    </listitem>
957    <listitem>
958     <para class="screen">
959      tX now supports an unlimited no of turntables. The only limit is your
960      display really.</para>
961    </listitem>
962    <listitem>
963     <para class="screen">
964      Each of these turntables has their own pitch / volume settings and a
965      dedicated lowpass and echo effect section.</para>
966    </listitem>
967    <listitem>
968     <para class="screen">
969      You can now map mouse motion to a function of your choice (scratching/
970      volume/cutoff/echo-feedback and nothing)</para>
971    </listitem>
972    <listitem>
973     <para class="screen">
974      Recording will now happen straight to disk. You'll have to specify a
975      filename before you start recording.</para>
976    </listitem>
977    <listitem>
978     <para class="screen">
979      You can sync the turntables to one master turntable.</para>
980    </listitem>
981    <listitem>
982     <para class="screen">
983      There are two master settings for pitch and volume available to modify all
984      turntables. The turntable pitch is relative to the master pitch.</para>
985    </listitem>
986    <listitem>
987     <para class="screen">
988      You can save a complete set (of turntables and settings) to a .tX set file.
989      The audiofile data will *not* be saved within that file, but it'll contain
990      the absolut filename to these files. I know this makes the act of
991      exchanging sets over the net more complex so if somebody wants to code set
992      files with integrated audio data... ;)</para>
993    </listitem>
994    <listitem>
995     <para class="screen">
996      The way audiofiles are loaded has been redesigned too: the builtin wav
997      routines, the sox support and mpg123 are no longer connected. This means
998      you can use mpg123 support without sox support and still have the builtin
999      wav routines enabled. If you have the builtin wav reader and sox enabled,
1000      tX will try try to use the builtin routines first, and if they fail sox
1001      will be used as a fallback which is of course slower as you know... There's
1002      some support for Benno Senoner's brilliant 3.2-mmap() patch but the patch
1003      still needs to be ported.</para>
1004    </listitem>
1005    <listitem>
1006     <para class="screen">
1007      You can now select which parameter to map to a mouse axis.</para>
1008    </listitem>
1009    <listitem>
1010     <para class="screen">
1011      experimental 3DNow! support (works with gcc &lt; 2.95 only)</para>
1012    </listitem>
1013    <listitem>
1014     <para class="screen">
1015      tX-windows now have an icon, thanks Michael!</para>
1016    </listitem>
1017   </version>
1018   <version name="3.2">
1019    <listitem>
1020     <para class="screen">
1021      implemented 2D-Scratching ;) You can now use the other axis of your mouse
1022      two modify the cutoff frequency of the lowpass filter (if enabled). The
1023      resonance factor can be set via the slider underneath "LP Filter". Seems to
1024      eat quite some CPU power though...</para>
1025    </listitem>
1026    <listitem>
1027     <para class="screen">
1028      Updated THANKS, AUTHORS</para>
1029    </listitem>
1030    <listitem>
1031     <para class="screen">
1032      as most people seem to use sox/mpg123 anyway and as I still get "I want
1033      mp3" emails I changed the configure script slightly: It now automatically
1034      enables the use of sox and mpg123 if these are available. If you still want
1035      'em good old 16Bit/44.1Khz/Mono builtin routines you have to specify
1036      --enable-wavonly with your configure cmdline.</para>
1037    </listitem>
1038    <listitem>
1039     <para class="screen">
1040      Prepared the tarball for the Win32 port. You can now compile tX with cygwin
1041      and the Makefile.cygwin in the src directory if you have all the required
1042      libs (gtk, pthreads etc...). The resulting exe will run BUT is completely
1043      unusable for now... <person>
1044       <name>Stou Sandalski</name>
1045       <email>tangui@cell2000.net</email>
1046      </person> and I are planning to make it usable in the future.</para>
1047    </listitem>
1048    <listitem>
1049     <para class="screen">
1050      The About-Dialog now contains some info on how the binary was compiled</para>
1051    </listitem>
1052   </version>
1053   <version name="3.1">
1054    <listitem>
1055     <para class="screen">
1056      Optimized audio-rendering code for speed (might run on some machines with
1057      smaller buffsize (-> lower latency) than pre-3.1) - Hey, tX now uses less
1058      than 10% CPU (says kpm) with mixing enabled on my i586-200MMX machine!!</para>
1059    </listitem>
1060    <listitem>
1061     <para class="screen">
1062      &quot;fixed&quot; stdout-output. Due to the pipe-buffering realtime
1063      schratching can not be considered usable for now :(</para>
1064    </listitem>
1065    <listitem>
1066     <para class="screen">
1067      Added config option --enable-scheduler, which will cause the terminatorX
1068      engine-thread to run with FIFO scheduling policy and highest priority. This
1069      might enable some machines to use smaller buffsizes. It requries root
1070      privileges though - either run terminatorX as root - or make terminatorX
1071      suid root WHICH IS A BAD IDEA FOR MULTI-USER SYSTEMS IF OTHER USERS CAN
1072      ACCESS THE BINARY ;) You only have to think about this when you experience
1073      buffer underruns with your desired latency. And it might not even help...</para>
1074    </listitem>
1075    <listitem>
1076     <para class="screen">
1077      Rehacked the de-clicking (fading) code. The old one tried to be much more
1078      intelligent - and failed fading out the signal sometimes. The new code is
1079      much simpler (faster) and is much more reliable.</para>
1080    </listitem>
1081    <listitem>
1082     <para class="screen">
1083      added common sense to the warp feature (f-key in scratch mode). The warping
1084      speed is still connected to the mouse speed but it's now adjusted to the
1085      sample size as well: you can warp through any sample completely with the
1086      same mouse distance.</para>
1087    </listitem>
1088    <listitem>
1089     <para class="screen">
1090      added debug configure switch. Enables (very few) debug messages for now. I
1091      decided not to enable the old V2.X messages as they are sent to stdout,
1092      which would sound pretty strange to people who use the stdout-option.</para>
1093    </listitem>
1094   </version>
1095   <version name="3.02">
1096    <listitem>
1097     <para class="screen">
1098      Fixed Adrian's name in the THANKS file. Sorry, Adrian.</para>
1099    </listitem>
1100    <listitem>
1101     <para class="screen">
1102      Corrected Makefile.am for license.c that did not build correctly on some
1103      systems - Thanks to <person>
1104       <name>Michael Pruett</name>
1105       <email>mikep@ugcs.caltech.edu</email>
1106      </person></para>
1107    </listitem>
1108   </version>
1109   <version name="3.01">
1110    <listitem>
1111     <para class="screen">
1112      fixed a bug that caused terminatorX to crash without --enable-sox or
1113      mpg123input.</para>
1114    </listitem>
1115   </version>
1116   <version name="3.0">
1117    <listitem>
1118     <para class="screen">
1119      Changed everything ;)</para>
1120    </listitem>
1121    <listitem>
1122     <para class="screen">
1123      switched from C++ to C for gtk's sake</para>
1124    </listitem>
1125    <listitem>
1126     <para class="screen">
1127      switched back two multithreading</para>
1128    </listitem>
1129    <listitem>
1130     <para class="screen">
1131      implemented new gtk+ gui and dialogs</para>
1132    </listitem>
1133    <listitem>
1134     <para class="screen">
1135      new mouse-sampling code now uses DGA's DirectMouse</para>
1136    </listitem>
1137    <listitem>
1138     <para class="screen">
1139      implemented "initalizing"-support for XInput devices.</para>
1140    </listitem>
1141    <listitem>
1142     <para class="screen">
1143      new (alpha) "pre-listening" feature in scratch/loop dialogs</para>
1144    </listitem>
1145    <listitem>
1146     <para class="screen">
1147      hacked vtt for click-free audio. Might be problematic with big kernel level
1148      buffersizes but scratching with big buffsize is no fun anyway.</para>
1149    </listitem>
1150    <listitem>
1151     <para class="screen">
1152      options are now stored in ~/.terminatorXrc.bin automatically (on exit) as
1153      well as windowsize and the last used filenames</para>
1154    </listitem>
1155    <listitem>
1156     <para class="screen">
1157      terminatorX now comes with a configure script - no more Makefile hacking
1158      required (nor a good idea ;) )</para>
1159    </listitem>
1160    <listitem>
1161     <para class="screen">
1162      new wavdisplay-widget update frequency is now configureable</para>
1163    </listitem>
1164    <listitem>
1165     <para class="screen">
1166      new position-display is much more visible which allows more precise
1167      scratching</para>
1168    </listitem>
1169    <listitem>
1170     <para class="screen">
1171      new mute-feature allows you to silence the scratch-playback completely
1172      while the loop keeps playing (press either &lt;m&gt;-key or right
1173      mouse-button.</para>
1174    </listitem>
1175    <listitem>
1176     <para class="screen">
1177      support for mouse buttons:<itemizedlist>
1178       <listitem>
1179        <para class="screen">
1180         1. (left) button: same as &lt;SPACE&gt;, do scratch</para>
1181       </listitem>
1182       <listitem>
1183        <para class="screen">
1184         2. (right) button: mute scratch</para>
1185       </listitem>
1186       <listitem>
1187        <para class="screen">
1188         3. (middle) button: stop</para>
1189       </listitem>
1190      </itemizedlist></para>
1191    </listitem>
1192    <listitem>
1193     <para class="screen">
1194      wrote support for sox and mpg123. This enables terminatorX to read close to
1195      any audiofile. You need to have sox and mp3 and this feature (as it is
1196      still alpha) needs to be enabled via configure-switches see INSTALL</para>
1197    </listitem>
1198    <listitem>
1199     <para class="screen">
1200      licmak now is an awk script. Thanks Christian! I was also received two perl
1201      scripts (Thanks, guys!) but I now use the awk script as it is the smallest.</para>
1202    </listitem>
1203    <listitem>
1204     <para class="screen">
1205      introduced &lt;F&gt;-key to "warp" through scratch-sample (just check it
1206      out)</para>
1207    </listitem>
1208    <listitem>
1209     <para class="screen">
1210      dropped commandline arguments</para>
1211    </listitem>
1212    <listitem>
1213     <para class="screen">
1214      dropped old X-Code + Mouse warping madness</para>
1215    </listitem>
1216    <listitem>
1217     <para class="screen">
1218      bug fixes (less than bug introduces though ;) )</para>
1219    </listitem>
1220   </version>
1221   <version name="2.4" unreleased="true">
1222    <listitem>
1223     <para class="screen">
1224      implemented a time counter</para>
1225    </listitem>
1226    <listitem>
1227     <para class="screen">
1228      licmak now finally is what it should be: a perl script (licmak.pl) it was
1229      contributed by <person>
1230       <name>Adam SjMAKE_THIS_OSLASHgren</name>
1231       <email>asjo@diku.dk</email>
1232      </person>. Thanks!</para>
1233    </listitem>
1234   </version>
1235   <version name="2.3">
1236    <listitem>
1237     <para class="screen">
1238      wavfile overreading fixed by <person>
1239       <name>Andrew C. Bul+hac?k</name>
1240       <email>acb@zikzak.net</email>
1241      </person></para>
1242    </listitem>
1243    <listitem>
1244     <para class="screen">
1245      Using portable type definitions now where required. If you don't have a
1246      &lt;sys/types.h&gt; on your system and your machines type sizes equal those
1247      of an X86-machine you can specify -DUSE_X86_TYPES in Makefile to compile
1248      without &lt;sys/types.h&gt;</para>
1249    </listitem>
1250    <listitem>
1251     <para class="screen">
1252      Slight change in audiodevice-handling that fixes improper buffsize settings
1253      on some soundcards (e.g. GUS)</para>
1254    </listitem>
1255    <listitem>
1256     <para class="screen">
1257      Implemented "keep device open"-feature. Needs to be enabled via the
1258      -DKEEP_DEV_OPEN switch in Makefile</para>
1259    </listitem>
1260    <listitem>
1261     <para class="screen">
1262      Added some comments to the Makefile for easier editing</para>
1263    </listitem>
1264    <listitem>
1265     <para class="screen">
1266      Added Big Endian support. Use -DBIG_ENDIAN_MACHINE for big endian hosts
1267      like ultrapenguin suns or linux ppc. There's also -DBIG_ENDIAN_AUDIO for
1268      big endian audio hardware (rare?) available, although proabably nobody will
1269      need this.</para>
1270    </listitem>
1271    <listitem>
1272     <para class="screen">
1273      Changed mix behaviour: Mix is now automatically turned on on startup if the
1274      user has specified a proper loop file. (with the --loop or -l switch)</para>
1275    </listitem>
1276    <listitem>
1277     <para class="screen">
1278      New mixing routine. You can now set the loop to scratch volume ratio with
1279      the cursor keys (left/right). If you modify the volumes while recording
1280      these action's will not be recorded. Saving happens with the currently set
1281      level.</para>
1282    </listitem>
1283    <listitem>
1284     <para class="screen">
1285      Fixed README-Bug said &lt;m&gt; instead of &lt;x&gt;</para>
1286    </listitem>
1287   </version>
1288   <version name="2.2">
1289    <listitem>
1290     <para class="screen">
1291      first released version</para>
1292    </listitem>
1293    <listitem>
1294     <para class="screen">
1295      added colors, more standard use of X11</para>
1296    </listitem>
1297    <listitem>
1298     <para class="screen">
1299      added loop support</para>
1300    </listitem>
1301    <listitem>
1302     <para class="screen">
1303      added statusbar with mode/status display</para>
1304    </listitem>
1305    <listitem>
1306     <para class="screen">
1307      added commandline options and help (on usage and keys)</para>
1308    </listitem>
1309    <listitem>
1310     <para class="screen">
1311      added raw/mixed save scratch feature</para>
1312    </listitem>
1313    <listitem>
1314     <para class="screen">
1315      added licmak to include license into binary</para>
1316    </listitem>
1317    <listitem>
1318     <para class="screen">
1319      new handling of XAutoRepeat, only turned off now when SPACE pressed</para>
1320    </listitem>
1321    <listitem>
1322     <para class="screen">
1323      modified wave display (faster + nicer + incorrect (who cares anyway))</para>
1324    </listitem>
1325    <listitem>
1326     <para class="screen">
1327      Makefile fixed by <person>
1328       <name>Adrian Reber</name>
1329       <email>adrian@lisas.de</email>
1330      </person></para>
1331    </listitem>
1332    <listitem>
1333     <para class="screen">
1334      bug fixes</para>
1335    </listitem>
1336   </version>
1337   <version name="2.1" unreleased="true">
1338    <listitem>
1339     <para class="screen">
1340      added recording, playback of recording functionality</para>
1341    </listitem>
1342   </version>
1343   <version name="2.0" unreleased="true">
1344    <listitem>
1345     <para class="screen">
1346      moved from multithreaded to singlethreaded</para>
1347    </listitem>
1348    <listitem>
1349     <para class="screen">
1350      position feedback</para>
1351    </listitem>
1352    <listitem>
1353     <para class="screen">
1354      bug fixes</para>
1355    </listitem>
1356   </version>
1357   <version name="1.0" unreleased="true">
1358    <listitem>
1359     <para class="screen">
1360      mouse support</para>
1361    </listitem>
1362    <listitem>
1363     <para class="screen">
1364      no more position display due to pthread/X probs</para>
1365    </listitem>
1366    <listitem>
1367     <para class="screen">
1368      bug fixes</para>
1369    </listitem>
1370   </version>
1371   <version name="0.5" unreleased="true">
1372    <listitem>
1373     <para class="screen">
1374      first version</para>
1375    </listitem>
1376    <listitem>
1377     <para class="screen">
1378      no mouse handling</para>
1379    </listitem>
1380    <listitem>
1381     <para class="screen">
1382      accelerating vtt via sinus</para>
1383    </listitem>
1384    <listitem>
1385     <para class="screen">
1386      multithreaded</para>
1387    </listitem>
1388    <listitem>
1389     <para class="screen">
1390      sound aliasing</para>
1391    </listitem>
1392   </version>
1393  </changelog>
1394 </section>