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