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