Finish ChangeLog, ChangeLog plain-text version, reduced HTML size and
authorterminatorX <>
Fri, 16 Jul 2004 15:50:57 +0000 (15:50 +0000)
committerterminatorX <>
Fri, 16 Jul 2004 15:50:57 +0000 (15:50 +0000)
smaller images - Alex

17 files changed:
website/Makefile
website/changelog.xml
website/index.xml
website/linkdb.xml
website/pix/new.png
website/pix/parameter_menu.jpg [new file with mode: 0644]
website/pix/parameter_menu.png [deleted file]
website/pix/pre_parameter_menu.jpg [new file with mode: 0644]
website/pix/pre_parameter_menu.png [deleted file]
website/pix/vinyl-highlight.png
website/pix/vinyl-hover.gif
website/pix/vinyl-spacer.png
website/pix/vinyl.png
website/script.js
website/sedscript
website/tX.xsl
website/teXt.xsl [new file with mode: 0644]

index a39eb5ba2948aa9dfa0984b9630151f0eb8a1cac..85c46eae48e77c0341cebc230a15b5bb7e9d5515 100644 (file)
@@ -1,6 +1,6 @@
 section = main download faq screenshots scratches turntable aseqjoy docs
 
-all: index.html aseqjoy.html download.html faq.html changelog.html scratches.html docs.html turntable.html screenshots.html links.html  bugs.html
+all: index.html aseqjoy.html download.html faq.html changelog.html scratches.html docs.html turntable.html screenshots.html links.html  bugs.html changelog.txt
 
 XMLFILES=$(wildcard *.xml) $(wildcard *.xsl)
 
@@ -8,10 +8,16 @@ pretty:
        list='$(XMLFILES)'; for file in $$list; do tidy -i -w 80 -xml < $$file > tmp; if [ $$? -eq 0 ]; then mv tmp $$file; else echo error: $$?; fi; done
 
 clean: Makefile
-       rm -rf *.html *.tmp
+       rm -rf *.html *.tmp *.txt
+
+%.txt: %.txt.html
+       lynx -dump $*.txt.html > $*.txt
+
+%.txt.html:    %.xml teXt.xsl tX.dtd sedscript linkdb.xml
+       xsltproc teXt.xsl $*.xml > $*.tmp && sed -f sedscript < $*.tmp | (echo  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html401/loose.dtd">'; cat) > $*.txt.html ; rm $*.tmp
 
 %.html:         %.xml tX.xsl tX.dtd sedscript linkdb.xml
-       xsltproc tX.xsl $*.xml > $*.tmp && sed -f sedscript < $*.tmp | (echo  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html401/loose.dtd">'; cat) > $*.html ; rm $*.tmp
+       xsltproc tX.xsl $*.xml > $*.tmp && sed -f sedscript < $*.tmp | (echo  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html401/loose.dtd">'; cat) > $*.html ; rm $*.tmp; htmlcr -O $*.html
 
 dist:  all
        (mkdir tX_website; mkdir tX_website/pix tX_website/pix/banner; cp Makefile createpreview sedscript script.js *.xml tX.dtd tX.xsl tX_website; cp pix/* tX_website/pix; cp pix/banner/* tX_website/pix/banner; tar cjf tX_website.tar.bz2 tX_website; rm -rf tX_website)
index 709a06e45177a633b25a672544e512829a4c7496..ac074a5a1f87e8a489f6d4947302e54736cb9605 100644 (file)
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE section SYSTEM "./tX.dtd">
 <section name="changelog">
-<changelog>
-       <version name="0.5">
-               <listitem><para></para></listitem>
-       </version>
-       <version name="0.5">
-               <listitem><para></para></listitem>
-       </version>
-       <version name="0.5">
-               <listitem><para></para></listitem>
-       </version>
-       <version name="0.5">
-               <listitem><para></para></listitem>
-       </version>
-       <version name="2.2">
-               <listitem><para>first released version</para></listitem>
-               <listitem><para>added colors, more standard use of X11</para></listitem>
-               <listitem><para>added loop support</para></listitem>
-               <listitem><para>added statusbar with mode/status display</para></listitem>
-               <listitem><para>added commandline options and help (on usage and keys)</para></listitem>
-               <listitem><para>added raw/mixed save scratch feature</para></listitem>
-               <listitem><para>added licmak to include license into binary</para></listitem>
-               <listitem><para>new handling of XAutoRepeat, only turned off now when SPACE pressed</para></listitem>
-               <listitem><para>modified wave display (faster + nicer + incorrect (who cares anyway))</para></listitem>
-               <listitem><para>Makefile fixed by <person><name>Adrian Reber</name><email>adrian@lisas.de</email></person></para></listitem>
-               <listitem><para>bug fixes</para></listitem>
-       </version>
-       <version name="2.1" unreleased="true">
-               <listitem><para>added recording, playback of recording functionality</para></listitem>
-       </version>
-       <version name="2.0" unreleased="true">
-               <listitem><para>moved from multithreaded to singlethreaded</para></listitem>
-               <listitem><para>position feedback</para></listitem>
-               <listitem><para>bug fixes</para></listitem>
-       </version>
-       <version name="1.0" unreleased="true">
-               <listitem><para>mouse support</para></listitem>
-               <listitem><para>no more position display due to pthread/X probs</para></listitem>
-               <listitem><para>bug fixes</para></listitem>
-       </version>
-       <version name="0.5" unreleased="true">
-               <listitem><para>first version</para></listitem>
-               <listitem><para>no mouse handling</para></listitem>
-               <listitem><para>accelerating vtt via sinus</para></listitem>
-               <listitem><para>multithreaded</para></listitem>
-               <listitem><para>sound aliasing</para></listitem>
-       </version>
-</changelog>
+ <changelog>
+  <version name="3.82" unreleased="true">
+   <listitem>
+    <para class="plain">
+        in order to have a SPAM protected online version of the ChangeLog this 
+        document is now generated from XML sources.
+        </para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     merged a patch from <person>
+      <name>Martin Habets</name>
+      <email>errandir_news@mph.eclipse.co.uk</email>
+     </person> that fixes big endian audio playback with ALSA.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     applied a fix from <person>
+      <name>Juha Erkkila</name>
+      <email>erkkila@cc.jyu.fi</email>
+     </person> that makes tX work on systems that don't have procfs mounted.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added an optional Dry/Wet control for all LADSPA plugins. Simply click on
+     the plugin's label to add or remove the additional control.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added an additional stereo effects queue that allows loading stereo LADPSA
+     plugins. The stereo effects are located below the mono effects - to add a
+     new instance press the "Stereo FX" button and select the plugin of your
+     choice.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed the plugin menu - empty categories no longer get a menu entry</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     plugins that do not qualify as realtime capable will now be disabled.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I'm fed up with terminatorX related security postings, so the old suid-root
+     method had to go. To achieve realtime scheduling you now have three
+     options:<itemizedlist>
+      <listitem>
+       <para class="plain">
+        a) run terminatorX as root (obviously dangerous and not recommended)</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        b) build terminatorX with capabilities enabled and install it suid-root.
+        Due to the use of PR_SET_KEEPCAPS this will work on Linux _only_</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        c) use the JACK backend with "POSIX draft capabilities" (see jackd
+        manpage)</para>
+      </listitem>
+     </itemizedlist></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Loading sets with missing LADPSA plugins no longer crash tX.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed a bug that made reading error messages impossible with the load
+     dialog open.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The engine now handles audiodevices that break down when already in
+     playback mode more gracefully. This really necessary when jack decides to
+     kick us out.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     All vu meters are stereo now. Having a mono widget for a stereo thing just
+     didn't make any sense anymore.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     modified the render loop to comply with LADSPA V1.1: 0 db is now at 1.0f.
+     This makes a lot of plugins work with terminatorX that haven't worked with
+     previous releases.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     data send to the JACK backend no goes through the "Anti-Clip-Device", too.
+     Unless you #define TX_DO_CLIP of course.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I've drawn some new icons with the cool 
+        <link ref="http://www.inkscape.org">inkscape</link>.
+        They're now being built into terminatorX as gdk-pixbuf c-source code, so they
+     actually do alpha blending.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Wrote support for gtk+'s new FileChooser widget - will be enabled
+     automatically when configure finds a gtk+ >= 2.4.0</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed the buffer overflows detected by <person>
+      <name>c0wboy</name>
+      <email>c0wboy@tiscali.it</email>
+     </person> in his outsiders-terminatorX-001.txt advisory.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Support for gtk+ startup notification.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     "README.GNOME" was outdated so it had to go.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     merged parts of a patch graciously contributed by <person>
+      <name>Adam King</name>
+      <email>aking@lgh.com.au</email>
+     </person><itemizedlist>
+      <listitem>
+       <para class="plain">
+        Simpler min/maximization for the control panels</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        Bugfix for sequencer menu crash</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        The panel formally known as "Trigger" is now known as "Playback"></para>
+      </listitem>
+     </itemizedlist></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added cpu-overload detection - currently disabled</para>
+   </listitem>
+  </version>
+  <version name="3.81">
+   <listitem>
+    <para class="plain">
+     JACK doesn't seem to like SCHED_FIFO clients so I added a little test that
+     will set SCHED_OTHER when jack output was selected. This will work for true
+     root or a capabilities-enabled suid-root binary only.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     removed the disfunctional "Cancel" button from the load-progress dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     switched default MIDI mapping to non-destructive. (previous settings will
+     not be overwritten now).</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added a default MIDI mapping accessible via the "Turntables" menu. The
+     actual mapping is documented in the manual.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a bug that caused enabling sync-client setting via MIDI to fail.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     when compiled with rt-scheduling suppport terminatorX will now display the
+     resulting scheduling policy in the "About" dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     if terminatorX was setup to use realtime priority for the audio engine
+     thread but you dont want it - disable realtime scheduling in the
+     Preferences dialog. This works with capabilities _ONLY_.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     if you don't want to confirm program termination every time you can now
+     disable "Ask for Quit confirmation" in the Preferences.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added support for Linux' POSIX capabilities. This allows a suid-root
+     installed terminatorX binary to drop root privileges much earlier than with
+     the old approach (so it should be more secure). Requires the libcap
+     library.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     obligatory documentation updates - clicking on the sub-sections should now
+     work.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     removed gtk+ 1.2 cruft - terminatorX now compiles with gtk+ 2.2 and
+     *_DISABLE_DEPRECATED macros enabled. To verfiy that you can run configure
+     with --disable-deprecated.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     terminatorX now has a JACK backend. Currently it works like this: on
+     startup tX will connect to the JACK daemon - if the daemon is not available
+     on startup JACK output is not available. When the audio engine is turned
+     off, tX emits silence via the JACK ports, so you can leave the ports
+     connected.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     sick of green - you can now configure the colors terminatorX should use for
+     the audio display as well as the vu meters in the Preferences dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     hopefully fixed wrong setting of the master volume when loading set files.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     some ALSA installations seem to core on snd_pcm_hw_params_free() after
+     sound device init. So freeing the hw_params can now be explicitly disabled
+     in the Preferences - if terminatorX crashes right after hitting the "Power
+     On" button it might be necessary to activate this for your ALSA setup. This
+     probably results in a tiny memory leak - but on leak vs core you might
+     decide for leak. Note: I even enabled the leak by default now.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a bug that caused turntable 1 to get the focus on entering Mouse Grab
+     mode even when it's audio panel was minimized.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     MIDI mappings can now have "bounds", meaning that the incoming MIDI signals
+     can modify the parameter within the given range only.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     introduced a new way of assigning MIDI controllers to parameters: simply
+     right-click on a parameter's control: a menu with "MIDI Learn" and "Remove
+     MIDI Binding" will pop up - select "MIDI Learn" and send the corresponding
+     MIDI event.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a bug in the MIDI callback thanks to <person>
+      <name>David Hamilton</name>
+      <email>daham2@student.monash.edu</email>
+     </person></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     running suid root (the old way) was reported exploitable by <person>
+      <name>Andrew Griffiths</name>
+      <email>andrewg@felinemenace.org</email>
+     </person> - the described environment variable based exploit was fixed - however there are
+     possibly other ways to exploit it. So the old method of running suid root
+     has been disabled by default. On Linux systems you really should use the
+     capabilities based approach (see above). If really want to use the old
+     suid-root solution run configure with --enable-suidroot.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     often, you record events and mess things up - in this case I'd often prefer
+     dropping the complete take instead of recording a bad perfomance - which is
+     why you now can activate "Confirm Recorded Events" from the "Sequencer"
+     menu. When enabled terminatorX will ask whether to actually record or drop
+     the events created for the last take. The setting for this flag is stored
+     in your ~/.terminatorXrc.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     introduced a new "Sequencer" menu that allows to delete events of a
+     specific type (all, all for certain turntable, all for a certain parameter)
+     from the sequencer. Events can be deleted for the complete song, upto the
+     current song position or from the current song position. Yeah, I know,
+     termintorX is lacking a proper event-editor here, so where's your patch? ;)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     switching the X11 mouse cursor when the user has to wait for terminatorX to
+     finish some operation</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a sequencer bug: the events for master pitch and volume weren't
+     erased correctly when another set was loaded</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed FreeBSD issues with the configure script</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed compilation issues for gcc 2.95.x</para>
+   </listitem>
+  </version>
+  <version name="3.80">
+   <listitem>
+    <para class="plain">
+     I've invested quite some time in valgrinding this release, among other
+     things a major mem leak showed up - the sample memory wasn't being free'd
+     correctly which is now corrected along with many other things. valgrind is
+     a very helpful tool indeed.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added a new Pitch Calculator that allows adjusting a turntable's pitch to
+     that of the master turntable. This makes synchronizing finely cut loop
+     samples really easy</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     XML based set files can get rather huge when they contain a lot of
+     sequencer events - to solve this terminatorX now uses zlib to save
+     compressed set files if enabled in the preferences dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I hacked support for Steve Harris' cool liblrdf - if you've got that
+     library setup correctly and you use Steve's wonderful plugin collection
+     with RDF description you should get a nicely structured menu when clicking
+     on the "FX" button. All plugins not categorized through RDF files go to the
+     "Unclassified" category.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I'm no longer including the html and ps versions of the manual - it's now
+     attached in it's XML/DocBook source and will be installed via scrollkeeper.
+     terminatorX offers a menu entry to start gnome-help to display the manual.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Reworked the Preferences dialog - I now use glade-2 to create that code -
+     I'm fed up with copy'n'pasting gtk+ code so now I'll let glade-2 do this
+     whereever possible. The glade project files are included with this tarball
+     in case you want to mess with them.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Switched to a fixed blocksize (1 ms) for rendering. This finally allows to
+     playback set files with events recorded on machines with small buffer sizes
+     on slow machines with large buffer sizes. The buffersize of the audiodevice
+     has no effect on the "operating" blocksize anymore. Note that the samlping
+     rate has a - very small - effect though. Depending on the sampling rate
+     terminatorX will try to find a blocksize that fits exactly 1 ms - while
+     this is easy for "straight" sampling rates (22000 32000 48000) this results
+     in "44.1" samples for 44100 Hz.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Finally hacked a native ALSA backend. It's in "Works For Me" TM state.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added "Remove Binding" button</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     MIDI now uses a GIOCallback so the effect of MIDI controllers is visible
+     even without the audio engine turned on.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Reworked the mastergui for better usabilty and less space consumption, yes,
+     terminatorX now features a boring menubar - which helps using it on small
+     displays quite a bit, and should be easier to handle for first-time users.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Implemented a suggestion from <person>
+      <name>Darrick Servis</name>
+      <email>darrick@dcn.davis.ca.us</email>
+     </person> that stops clipping in the mixer routine. The outgoing signal is now limited as
+     it should be, which improves the output quality for signals too loud
+     significantly.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     MIDI mappings are now stored within the (new) tX set files.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Applied a patch from <person>
+      <name>Arthur Peters</name>
+      <email>amp@singingwizard.org</email>
+     </person> which brings preliminary MIDI support to terminatorX. This is realized via the
+     ALSA sequencer interface, so in order for it to compile you have to have
+     the ALSA devel packages installed. ./configure will autodetect them.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed a bug in XML serialization that dropped strings' contents.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     You can now hit "F11" to turn fullscreen mode on/off - this will help using
+     terminatorX on small DJ laptops. Note that the key will have no effect in
+     scratch mode - hit it before you enter grab mode. This feature requires a
+     NETWM compliant window manager.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     terminatorX now stores set files as XML documents, too - so terminatorX has
+     become terminatorXML finally. Note: for sets with a large number of events
+     recorded into the sequencer - the XML based set files can grow significally
+     larger than the old ones (see "compression" above)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The old code to support the obsolete binary tX file formats has now been
+     scheduled for deletion. It's been moved into the tX_legacy* source files
+     and it will be built only when "--enable-legacy" was used on configuring
+     terminatorX (which is the default). Expect this to become disabled and then
+     totally removed from the sources in future.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Enhanced audio data display - you can now zoom into the audio signal, which
+     should allow much more precise scratching with larger audio files (ie
+     complete tracks). On playback terminatorX will scroll the displayed area to
+     ensure you always see the area of the sample in which you're currently
+     scratching on.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I have not backported the new code to the old gtk+ 1.2 - so this release no
+     longer builds with gtk+ 1.2 - you have to upgrade to gtk+ Version 2 to be
+     able to build terminatorX.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a nasty gcc 3.2 compilation bug - thanks to <person>
+      <name>Adam Duck</name>
+      <email>duck@informatik.uni-frankfurt.de</email>
+     </person> and other reporters</para>
+   </listitem>
+  </version>
+  <version name="3.73">
+   <listitem>
+    <para class="plain">
+     Fixed a compilation bug ocurring on big endian systems only.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed the built-in wav loading routines for big endian systems (again).</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Finally traced down and fixed a long outstanding bug in the dial widget,
+     the background of the dials is now drawn correctly.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Ported terminatorX to gtk+ Version 2. The code for gtk2 will be enabled
+     when gtk2 is detected by configure. To force terminatorX to use the good
+     old gtk 1.2.x (x>=5) run configure with the '--disable-gtk2' switch.
+     WARNING: gdkxft-users: gtk2 applications segfault when preloading
+     libgdk_xft.so! So unset LD_PRELOAD and set GDK_USE_XFT=1 instead.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Applied a patch from Adrian that brings lots of new stuff:<itemizedlist>
+      <listitem>
+       <para class="plain">
+        Debian package support (removed - Mike Furr now maintains an official
+        Debain package for terminatorX)</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        enhanced GNOME integration</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        a manpage for terminatorX</para>
+      </listitem>
+     </itemizedlist></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Included another gcc3 fix thanks to <person>
+      <name>Gregor Riepl</name>
+      <email>seto-kun@freesurf.ch></email>
+     </person></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Improved configure's compatibilty - it should detect pthreads more reliably
+     and it should detect ladspa.h when located in /usr/local/include without
+     /usr/local/include being contained in the include path.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     This release should compile and run on FreeBSD systems and possibly
+     OpenBSD, too. Thanks for help and testing this goes to <person>
+      <name>Tilman Linneweh</name>
+      <email>tilman@arved.de</email>
+     </person>.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Sequencer now refuses to play when no events available - and displays a
+     dialog that suggests running the audio engine.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     De-uglified the terminatorX note dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed gtk+2 signals for load file dialog</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Pre-listen support for mpg321</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added a new auto-hiding "panel-bar" to which turntable control and audio
+     panels can be minimized to.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Cleaned up the turntables' audio panel for better looks and easier usage</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Rewrote the engine thread completely - unlike before the engine thread is
+     created on startup and kept alive until termination.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     terminatorX can now be run suid root - and it might even be safe. After
+     creating the engine thread both terminatorX threads drop root privileges
+     before evaluating any parameters or reading/writing files, etc. The problem
+     is the pthread "manager thread" is out of control of terminatorX code - so
+     I cannot tell that thread to drop privileges.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed Drag'n'Drop for GNOME 2</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     To enhance the loading of audiofiles terminatorX now contains code to use
+     mad (MPEG Audio Decoder), libvorbis and libaudiofile directly instead of
+     pipeing audio data through mpg123, ogg123 or sox. As a result the new
+     routines bring following advantages:<itemizedlist>
+      <listitem>
+       <para class="plain">
+        tX loads audiofiles significantly faster</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        tX now honours the samplerate of an audiofile (by adjusting the pitch of
+        the turntable)</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        tX provides much better feedback on the loading progress</para>
+      </listitem>
+     </itemizedlist>Although the old loading-methods are still available (and piped loading has been
+     improved, too) I highly recommend installing the libraries above as the new
+     routines simply work better.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Deleted tons of old outdated code in tX_engine.cc and tX_mastergui.cc</para>
+   </listitem>
+  </version>
+  <version name="3.72">
+   <listitem>
+    <para class="plain">
+     Applied a patch from <person>
+      <name>Matthew Evans</name>
+      <email>activesx@hotmail.com</email>
+     </person> that introduces support for Ogg Vorbis audiofiles. It requires ogg123 > RC2 and
+     sox to work. Autodetection is supported via configure (--enable-ogg123).</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Experimental support for input devices other than the core-pointer under
+     XFree86 > 4. This uses the xsetpointer executable that comes with XFree86.
+     configure should autodetect this correctly, in case it doesn't use the
+     --enable-xetpointer switch.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Adrian sent me a patch introducing two new buttons: mute and solo. As it
+     didn't fully harmonize with the sequencer I rewrote parts of it and added
+     new functionality to the turntables: They can now be switched to mix_solo
+     or mix_mute - these settings affect current mixing only - their values will
+     neither be saved nor will changes to those control be recorded in the
+     sequencer - if you want to record muting events either use the mute button
+     from the turntable's trigger menu, the keyboard short-cuts (alt/strg), or
+     your middle mouse button.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a bug that produced corrupt wavfiles on big endian machines</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     some minor fixes to make terminatorX compile with newer gcc releases</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Well, I am allowed to change my mind, aren't I? Anyway, 3DNow! is back.
+     Nevertheless newer gcc releases seem to have a bug in handling movq and the
+     current 3DNow! stereo implementation does not seem to be very efficient. So
+     use --enable-3dnow only if you want to help me improve perfomance.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Modified the mpg123 loader in order to make it work with mpg321, too.
+     mpg321 lacks support for mpg123's -m switch ("singlemix") therefor mpg?2?'s
+     output is now piped into sox to convert the signal to mono. For this reason
+     mpg?2? support now requires sox to be installed, too.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added a workaround for a gtk+ bug that causes empty labels when strings
+     contain umlauts - unluckily my name features one of these so I had to write
+     this workaround.</para>
+   </listitem>
+  </version>
+  <version name="3.71">
+   <listitem>
+    <para class="plain">
+     applied a big patch from <person>
+      <name>Adrian Reber</name>
+      <email>adrian@lisas.de</email>
+     </person>. This patch includes:<itemizedlist>
+      <listitem>
+       <para class="plain">
+        compile fixes for the newer gcc releases</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        enhancements to the commandline switches (try --help for more details)</para>
+      </listitem>
+     </itemizedlist></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     the bigNewThang (TM) is STEREO output. The Pan-Buttons now actually do what
+     you'd expect them to. Therefore your soundcard must have stereo support of
+     course but I guess in 2001 this really shouldn't be a problem, right? The
+     recorded wavfiles will now be stereo wavfiles of course. Note that stereo
+     output means double audio-bandwith, so if you tuned your old terminatorX
+     setup to smallest latency you might get clicks now. You can easily fix this
+     by increasing the buffer size in the options dialog by one - this will
+     result in the same latency as before btw.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The echo effect has undergone some enhancements to profit from the new
+     stereo output. It's signal will now be mixed seperately so you can choose a
+     different stereo panorama position for the echo signal. So the new echo
+     effect now features it's own PAN-knob. This does have some sideeffects
+     though, for more details on this check the manual. Additionally the echo
+     effect now has it's own volume setting to influence the dry/wet ratio of
+     this effect.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Some LADSPA effects tend to create NAN (Not A Number) float values under
+     certain conditions. This is bad as all following operations will result in
+     NANs, so there will be no audio output no more. Now I will not introduce
+     code to check for NANs as this is a waste of CPU-power, producing NANs is
+     IMHO a faulty behaviour for LADSPA plugins and it should be fixed in there.
+     Now a problem with the previous release was that the echo and lowpass
+     effects "ate" those NANs resulting in NANs in those effects' buffers. So
+     once a NAN got in there these effects caused the whole audio output to mute
+     (forever). Which is why I now introduced some code to clear the buffers in
+     echo and lowpass whenever you dis- and reenable them.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The GUI does have two master vu-meters now. The turntable's still have one
+     vu-meter only. Note that the echo-signal is *not* included in the
+     turntable's vu-meter now, as it's mixed seperately.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The 3DNow!-Optimizations are gone. And they'll proabably never come back as
+     I don't have time to maintain the same algorithm twice.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The documentation has been updated to meet the new features. A lot of typos
+     have been fixed as well.</para>
+   </listitem>
+  </version>
+  <version name="3.70">
+   <listitem>
+    <para class="plain">
+     this list may be incomplete</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     This release brings support for LADSPA plugins. These plugins can be
+     inserted into any turntable's effect chain at any position. You can edit
+     the the effect sequence with the two tiny blue arrows. The builtin effects
+     reside in the same effect chain as LADSPA plugins, but unlike LADSPA
+     plugins they cannot be removed (nor multi-instanciated). The LADSPA plugins
+     have to "fit" into the effect chain, which is why terminatorX supports
+     *mono* plugins (plugins that have one audio-in and one audio-out port)
+     only. For the plugin's control ports, termintatorX supports all HINTS
+     except for LADSPA_HINT_LOGARITHMIC. Some control ports might be hard to
+     handle as LAPDSA control ports can have very wide value ranges. It is
+     possible to enter precise values though. Get LADSPA and the CMT plugins
+     from <link ref="http://www.ladspa.org">http://www.ladspa.org</link>.
+        All parameters for LADSPA-plugins are "sequencable parameters", so you can
+     record parameter-change events for the plugin's knobs just as for the
+     standard parameters.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     GUI re-design to support dynamic plugin GUIs. The audiofile-display is now
+     seperated from the turntable's controls. The groups are split in to panels
+     which can be minimized if not required (orange arrow). The panels'
+     minimized-status will be saved within the set files. To add a plugin effect
+     into the turntables effect chain click on the "FX"- button and choose the
+     plugin of your choice. To get more info on the plugin effects click on
+     their panel's label. NOTE: The panning-control is not working yet. It'll
+     work as soon as stereo is done.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     As always when introducing something new, the set-file file-format has
+     changed.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The parameter-to-mouse-axis mapping has been moved from hardcoded to
+     dynamic. You can now map any parameter that's considered "mappable" to the
+     mouse-axis of your choice (for each turntable separately). This is true for
+     the control ports of LADSPA-plugins, too.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     <person>
+      <name>Josh Steiner</name>
+      <email>joschi@eds.org</email>
+     </person> has joined terminatorX development. For this release he has added some startup
+     parameters for terminatorX, some of them aiming for future MIDI support,
+     and therefor not functional yet. Run "terminatorX --help" to get more
+     details.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     I know write the "manual" in SGML with the DocBook DTD. The distribution
+     contains the HTML and the postscript version. These transformation have
+     been created using James Clark's jade (DSSSL-processor) and Norman Walsh's
+     DSSSL stylesheets for DocBook.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Removed obsolete "number of vtts"-option from the options dialog.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Applied a patch from Josh that fixes running the soundfile editor for files
+     including a blank in their filename.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     New tooltips for the complete GUI.</para>
+   </listitem>
+  </version>
+  <version name="3.61" unreleased="true">
+   <listitem>
+    <para class="plain">
+     applied a tiny patch from <person>
+      <name>Atsushi Yamagata</name>
+      <email>yamagata@plathome.co.jp</email>
+     </person> to set locale on startup.</para>
+   </listitem>
+  </version>
+  <version name="3.60">
+   <listitem>
+    <para class="plain">
+     terminatorX has a sequencer now. Warning: with the current design the
+     sequencer will correctly play back recorded events only when the buffer
+     size (of the audio device) is set to the same size as it was when recording
+     the events. I know this is annoying and I will try to find a solution to
+     this. Please take a look at the README to find out how the sequencer works.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed a bug causing the lowpass filter produce a constant signal</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed the load file / drag'n'drop segfault bug</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed the prelisten zombie processes bug</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed the segfault on termination bug (with the audio engine running)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     hacked the mixer code to use 3DNow! too. This improves 3DNow! performance
+     gain from previously ~6% to more than 20% (depending on compiler
+     optimizations)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     extended the set-file-format to allow storing of sequencer events. This
+     release allows loading old tX-sets too.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     some gui icons. Choose Text/Icon / Icon only / Text only display of these
+     icons in the Options dialog. You'll have to restart tX to see the changes
+     though.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     "soundfile-editor support": Enter the soundfile-editor of your choice in
+     the tX-Options dialog (Still looking for an editor? Checkout Dave's Linux
+     Sound and MIDI Pages: http://www.bright.net/~dlphilp/linuxsound/). Click
+     the edit button in the Main-Panel to start your editor with the turntable's
+     soundfile - edit ;) - save and click the reload button.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     big endian bug fixes by <person>
+      <name>Scott C. Knight</name>
+      <email>scknight@indiana.edu</email>
+     </person></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     --enable-benchmark will now produce a benchmark binary. This takes a set
+     file as a parameter (that set file should autotrigger all tables, else the
+     benchmark will measure how fast tX can generate zeros ;) WARNING: the
+     benchmark binary is not a usable terminatorX binary.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     a new dial-widget. I created this for the upcoming GUI-redesign - and
+     decided I let you debug it right now ;) If you don't want it run configure
+     with the --disable-dial switch.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     some gui redesign. The volume scales are now located near their
+     corresponding "flash"-widget. This release fits into very small windows -
+     so it should be usable on smaller displays as well.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Adrian told me configure doesn't have to check for glib after checking for
+     gtk+ - I guess he's right so the glib-test has gone.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     more minor fixes</para>
+   </listitem>
+  </version>
+  <version name="3.55">
+   <listitem>
+    <para class="plain">
+     implemented "sequenceable parameters" (see tX_seqpar.*). This means the
+     groundwork for the sequencer is done. Although this release does not yet
+     feature a sequencer - there's still a profit: you can now see the GUI (e.g.
+     the lowpass-freq slider) update while you change that value with your mouse
+     in dga grab mode (e.g. up/down with the default X/Y-Control settings).</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed (libmmx) mmx.h to work with gcc 2.95 and above</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed compilation problems for big endian machines. still runtime probs
+     reported though.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed configure-script as the new bash complains about == in string
+     compares</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     fixed some gui segfaults</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added an ugly GNOME-mimetype installer. This installs the ".tX"-mime type,
+     an terminatorX-application icon and a ".tX"-icon. I could use some hints on
+     how I could make automake install that instead of an extra script. (see
+     README.GNOME)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added Drag'n Drop support. Works with the great gmc. Drop an audio file
+     over the filename-button or the wavdisplay of a turntable to load it into
+     that table. Drop an audiofile over the "Add Turntable" Button to create a
+     new turntable and load that file into that turntable. Drop a tX-set file
+     over the "Load Set" button to load the set.</para>
+   </listitem>
+  </version>
+  <version name="3.51">
+   <listitem>
+    <para class="plain">
+     fixes the load_piped() compilation error if you use neither sox nor mpg123.
+     Note that you have no "pre-listening" without mpg123 for mp3s and no
+     "pre-listening" for any other file without sox.</para>
+   </listitem>
+  </version>
+  <version name="3.5">
+   <listitem>
+    <para class="plain">
+     Yet another redesign ;) Oh well this project moved from c++/multithreaded
+     to c++/singlethreaded, to c/multithreaded and now, finally, back to
+     c++/multithreaded. This shows quite some foresight, I'd say ;)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Due to the redesign I had to change a lot (everything?) again so this
+     document can impossibly hold all changes. but let's see:</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     tX now uses floats instead of doubles for a lot of parameters. Therefore
+     the old .terminatorXrc.bin is now called .terminatorX3rc.bin to allow
+     parallel use of older releases. But you'll have to configure the new
+     release again the first time you run it.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     tX now supports an unlimited no of turntables. The only limit is your
+     display really.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Each of these turntables has their own pitch / volume settings and a
+     dedicated lowpass and echo effect section.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     You can now map mouse motion to a function of your choice (scratching/
+     volume/cutoff/echo-feedback and nothing)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Recording will now happen straight to disk. You'll have to specify a
+     filename before you start recording.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     You can sync the turntables to one master turntable.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     There are two master settings for pitch and volume available to modify all
+     turntables. The turntable pitch is relative to the master pitch.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     You can save a complete set (of turntables and settings) to a .tX set file.
+     The audiofile data will *not* be saved within that file, but it'll contain
+     the absolut filename to these files. I know this makes the act of
+     exchanging sets over the net more complex so if somebody wants to code set
+     files with integrated audio data... ;)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The way audiofiles are loaded has been redesigned too: the builtin wav
+     routines, the sox support and mpg123 are no longer connected. This means
+     you can use mpg123 support without sox support and still have the builtin
+     wav routines enabled. If you have the builtin wav reader and sox enabled,
+     tX will try try to use the builtin routines first, and if they fail sox
+     will be used as a fallback which is of course slower as you know... There's
+     some support for Benno Senoner's brilliant 3.2-mmap() patch but the patch
+     still needs to be ported.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     You can now select which parameter to map to a mouse axis.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     experimental 3DNow! support (works with gcc &lt; 2.95 only)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     tX-windows now have an icon, thanks Michael!</para>
+   </listitem>
+  </version>
+  <version name="3.2">
+   <listitem>
+    <para class="plain">
+     implemented 2D-Scratching ;) You can now use the other axis of your mouse
+     two modify the cutoff frequency of the lowpass filter (if enabled). The
+     resonance factor can be set via the slider underneath "LP Filter". Seems to
+     eat quite some CPU power though...</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Updated THANKS, AUTHORS</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     as most people seem to use sox/mpg123 anyway and as I still get "I want
+     mp3" emails I changed the configure script slightly: It now automatically
+     enables the use of sox and mpg123 if these are available. If you still want
+     'em good old 16Bit/44.1Khz/Mono builtin routines you have to specify
+     --enable-wavonly with your configure cmdline.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Prepared the tarball for the Win32 port. You can now compile tX with cygwin
+     and the Makefile.cygwin in the src directory if you have all the required
+     libs (gtk, pthreads etc...). The resulting exe will run BUT is completely
+     unusable for now... <person>
+      <name>Stou Sandalski</name>
+      <email>tangui@cell2000.net</email>
+     </person> and I are planning to make it usable in the future.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     The About-Dialog now contains some info on how the binary was compiled</para>
+   </listitem>
+  </version>
+  <version name="3.1">
+   <listitem>
+    <para class="plain">
+     Optimized audio-rendering code for speed (might run on some machines with
+     smaller buffsize (-> lower latency) than pre-3.1) - Hey, tX now uses less
+     than 10% CPU (says kpm) with mixing enabled on my i586-200MMX machine!!</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     &quot;fixed&quot; stdout-output. Due to the pipe-buffering realtime
+     schratching can not be considered usable for now :(</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added config option --enable-scheduler, which will cause the terminatorX
+     engine-thread to run with FIFO scheduling policy and highest priority. This
+     might enable some machines to use smaller buffsizes. It requries root
+     privileges though - either run terminatorX as root - or make terminatorX
+     suid root WHICH IS A BAD IDEA FOR MULTI-USER SYSTEMS IF OTHER USERS CAN
+     ACCESS THE BINARY ;) You only have to think about this when you experience
+     buffer underruns with your desired latency. And it might not even help...</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Rehacked the de-clicking (fading) code. The old one tried to be much more
+     intelligent - and failed fading out the signal sometimes. The new code is
+     much simpler (faster) and is much more reliable.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added common sense to the warp feature (f-key in scratch mode). The warping
+     speed is still connected to the mouse speed but it's now adjusted to the
+     sample size as well: you can warp through any sample completely with the
+     same mouse distance.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added debug configure switch. Enables (very few) debug messages for now. I
+     decided not to enable the old V2.X messages as they are sent to stdout,
+     which would sound pretty strange to people who use the stdout-option.</para>
+   </listitem>
+  </version>
+  <version name="3.02">
+   <listitem>
+    <para class="plain">
+     Fixed Adrian's name in the THANKS file. Sorry, Adrian.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Corrected Makefile.am for license.c that did not build correctly on some
+     systems - Thanks to <person>
+      <name>Michael Pruett</name>
+      <email>mikep@ugcs.caltech.edu</email>
+     </person></para>
+   </listitem>
+  </version>
+  <version name="3.01">
+   <listitem>
+    <para class="plain">
+     fixed a bug that caused terminatorX to crash without --enable-sox or
+     mpg123input.</para>
+   </listitem>
+  </version>
+  <version name="3.0">
+   <listitem>
+    <para class="plain">
+     Changed everything ;)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     switched from C++ to C for gtk's sake</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     switched back two multithreading</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     implemented new gtk+ gui and dialogs</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new mouse-sampling code now uses DGA's DirectMouse</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     implemented "initalizing"-support for XInput devices.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new (alpha) "pre-listening" feature in scratch/loop dialogs</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     hacked vtt for click-free audio. Might be problematic with big kernel level
+     buffersizes but scratching with big buffsize is no fun anyway.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     options are now stored in ~/.terminatorXrc.bin automatically (on exit) as
+     well as windowsize and the last used filenames</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     terminatorX now comes with a configure script - no more Makefile hacking
+     required (nor a good idea ;) )</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new wavdisplay-widget update frequency is now configureable</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new position-display is much more visible which allows more precise
+     scratching</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new mute-feature allows you to silence the scratch-playback completely
+     while the loop keeps playing (press either &lt;m&gt;-key or right
+     mouse-button.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     support for mouse buttons:<itemizedlist>
+      <listitem>
+       <para class="plain">
+        1. (left) button: same as &lt;SPACE&gt;, do scratch</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        2. (right) button: mute scratch</para>
+      </listitem>
+      <listitem>
+       <para class="plain">
+        3. (middle) button: stop</para>
+      </listitem>
+     </itemizedlist></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     wrote support for sox and mpg123. This enables terminatorX to read close to
+     any audiofile. You need to have sox and mp3 and this feature (as it is
+     still alpha) needs to be enabled via configure-switches see INSTALL</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     licmak now is an awk script. Thanks Christian! I was also received two perl
+     scripts (Thanks, guys!) but I now use the awk script as it is the smallest.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     introduced &lt;F&gt;-key to "warp" through scratch-sample (just check it
+     out)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     dropped commandline arguments</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     dropped old X-Code + Mouse warping madness</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     bug fixes (less than bug introduces though ;) )</para>
+   </listitem>
+  </version>
+  <version name="2.4" unreleased="true">
+   <listitem>
+    <para class="plain">
+     implemented a time counter</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     licmak now finally is what it should be: a perl script (licmak.pl) it was
+     contributed by <person>
+      <name>Adam SjMAKE_THIS_OSLASHgren</name>
+      <email>asjo@diku.dk</email>
+     </person>. Thanks!</para>
+   </listitem>
+  </version>
+  <version name="2.3">
+   <listitem>
+    <para class="plain">
+     wavfile overreading fixed by <person>
+      <name>Andrew C. Bul+hac?k</name>
+      <email>acb@zikzak.net</email>
+     </person></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Using portable type definitions now where required. If you don't have a
+     &lt;sys/types.h&gt; on your system and your machines type sizes equal those
+     of an X86-machine you can specify -DUSE_X86_TYPES in Makefile to compile
+     without &lt;sys/types.h&gt;</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Slight change in audiodevice-handling that fixes improper buffsize settings
+     on some soundcards (e.g. GUS)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Implemented "keep device open"-feature. Needs to be enabled via the
+     -DKEEP_DEV_OPEN switch in Makefile</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added some comments to the Makefile for easier editing</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Added Big Endian support. Use -DBIG_ENDIAN_MACHINE for big endian hosts
+     like ultrapenguin suns or linux ppc. There's also -DBIG_ENDIAN_AUDIO for
+     big endian audio hardware (rare?) available, although proabably nobody will
+     need this.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Changed mix behaviour: Mix is now automatically turned on on startup if the
+     user has specified a proper loop file. (with the --loop or -l switch)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     New mixing routine. You can now set the loop to scratch volume ratio with
+     the cursor keys (left/right). If you modify the volumes while recording
+     these action's will not be recorded. Saving happens with the currently set
+     level.</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Fixed README-Bug said &lt;m&gt; instead of &lt;x&gt;</para>
+   </listitem>
+  </version>
+  <version name="2.2">
+   <listitem>
+    <para class="plain">
+     first released version</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added colors, more standard use of X11</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added loop support</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added statusbar with mode/status display</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added commandline options and help (on usage and keys)</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added raw/mixed save scratch feature</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     added licmak to include license into binary</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     new handling of XAutoRepeat, only turned off now when SPACE pressed</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     modified wave display (faster + nicer + incorrect (who cares anyway))</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     Makefile fixed by <person>
+      <name>Adrian Reber</name>
+      <email>adrian@lisas.de</email>
+     </person></para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     bug fixes</para>
+   </listitem>
+  </version>
+  <version name="2.1" unreleased="true">
+   <listitem>
+    <para class="plain">
+     added recording, playback of recording functionality</para>
+   </listitem>
+  </version>
+  <version name="2.0" unreleased="true">
+   <listitem>
+    <para class="plain">
+     moved from multithreaded to singlethreaded</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     position feedback</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     bug fixes</para>
+   </listitem>
+  </version>
+  <version name="1.0" unreleased="true">
+   <listitem>
+    <para class="plain">
+     mouse support</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     no more position display due to pthread/X probs</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     bug fixes</para>
+   </listitem>
+  </version>
+  <version name="0.5" unreleased="true">
+   <listitem>
+    <para class="plain">
+     first version</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     no mouse handling</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     accelerating vtt via sinus</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     multithreaded</para>
+   </listitem>
+   <listitem>
+    <para class="plain">
+     sound aliasing</para>
+   </listitem>
+  </version>
+ </changelog>
 </section>
index 07090a5c0c7b1a57668229264cb851c528cf22e6..f256d997fe84c618f0627ec741f2b4b5e7681d8d 100644 (file)
@@ -45,7 +45,7 @@
                 parameter of your choice and set the MIDI mappings, bounds or delete events.
               </para></listitem>
             </itemizedlist>
-            <screenshot filename="parameter_menu.png"/>            
+            <screenshot filename="parameter_menu.jpg"/>
             <itemizedlist>
               <listitem><para>The new <bold>MIDI Bounds</bold> let you modify the range
                   within which a MIDI controller can effect a certain parameter.
               <listitem>
                 <para>Many other fixes.</para>
               </listitem>
-            </itemizedlist>Have a look at the <link ref="ChangeLog">ChangeLog</link> for more
+            </itemizedlist>Have a look at the <dblink id="changelog"/> for more
             details and grab the tarball or the RPMs from the <link
               ref="download.html#Current Version">download section</link>.</para>
           <para>Aside of the release I'd like to bring to your attention that <person>
index ab6b63d0f44e8f518a7170134a4ad7580fef0a56..f234e8e45051a1f76ad4a567470ae04cdc4b086b 100644 (file)
@@ -13,7 +13,7 @@
   <dlink id="turntables" text="turntable gallery" url="turntable.html"/>
   <dlink id="aseqjoy" text="aseqjoy" url="aseqjoy.html"/>
   <dlink id="alsa" text="ALSA" url="http://www.alsa-project.org"/>
-  <dlink id="changelog" text="ChangeLog" url="ChangeLog"/>
+  <dlink id="changelog" text="ChangeLog" url="changelog.html"/>
   <dlink id="install" text="INSTALL" url="INSTALL"/>
   <dlink id="oldtable" text="old turntable to tX device description" url="oldtable.html"/>
   <dlink id="aseqjoy_man" text="aseqjoy man page" url="aseqjoy-man.html"/>
index a16eec0c34b92fddeb50b9e5514fca5157348feb..be9ab166326cc60bb23db3a511e91f7b905e8bdc 100644 (file)
Binary files a/website/pix/new.png and b/website/pix/new.png differ
diff --git a/website/pix/parameter_menu.jpg b/website/pix/parameter_menu.jpg
new file mode 100644 (file)
index 0000000..c6b1aac
Binary files /dev/null and b/website/pix/parameter_menu.jpg differ
diff --git a/website/pix/parameter_menu.png b/website/pix/parameter_menu.png
deleted file mode 100644 (file)
index 9ceef77..0000000
Binary files a/website/pix/parameter_menu.png and /dev/null differ
diff --git a/website/pix/pre_parameter_menu.jpg b/website/pix/pre_parameter_menu.jpg
new file mode 100644 (file)
index 0000000..cfd17a0
Binary files /dev/null and b/website/pix/pre_parameter_menu.jpg differ
diff --git a/website/pix/pre_parameter_menu.png b/website/pix/pre_parameter_menu.png
deleted file mode 100644 (file)
index 57e6b6b..0000000
Binary files a/website/pix/pre_parameter_menu.png and /dev/null differ
index e56ccdbaccd95bef30d47e7a6197691e7a9c766c..78253668c3e824a441318f1af999ea8d44a7e4c2 100644 (file)
Binary files a/website/pix/vinyl-highlight.png and b/website/pix/vinyl-highlight.png differ
index 052eca8c20778e4305ceb6fa2d490f6cb2cd77e4..1781b018369741873e84201ecb8414c4585f6b5a 100644 (file)
Binary files a/website/pix/vinyl-hover.gif and b/website/pix/vinyl-hover.gif differ
index c96fc9526db16c69707fd0c6efbe4558dde588b9..235fc0224461966a370575ce3b282f270401d912 100644 (file)
Binary files a/website/pix/vinyl-spacer.png and b/website/pix/vinyl-spacer.png differ
index c2dbd9fdace17e91667a8c6c77d814be652af708..5c0dc05070cd8d9b9479e112315acaf088356825 100644 (file)
Binary files a/website/pix/vinyl.png and b/website/pix/vinyl.png differ
index f6a039b5157f70df36d08ed95d6a954334f1d365..fd600e426a035130eb55700af806807152a621f9 100755 (executable)
@@ -1,21 +1,17 @@
-rolloverImagesOn=new Array();\r
-rolloverImagesOff=new Array();\r
+imgOn=new Array();\r
+imgOff=new Array();\r
 \r
-function rolloverOn(id) {\r
-  if(rolloverImagesOn[id]){\r
-    document.images[id].src=rolloverImagesOn[id].src;\r
-  }\r
+function on(id) {\r
+  if(imgOn[id]) document.images[id].src=imgOn[id].src;\r
 }\r
 \r
-function rolloverOff(id) {\r
-  if(rolloverImagesOff[id]){\r
-      document.images[id].src=rolloverImagesOff[id].src;\r
-  }\r
+function off(id) {\r
+  if(imgOff[id]) document.images[id].src=imgOff[id].src;\r
 }\r
 \r
-function rolloverLoad(id,on,off) {\r
-  rolloverImagesOn[id]=new Image();\r
-  rolloverImagesOn[id].src=on;\r
-  rolloverImagesOff[id]=new Image();\r
-  rolloverImagesOff[id].src=off;\r
+function load(id,on,off) {\r
+  imgOn[id]=new Image();\r
+  imgOn[id].src=on;\r
+  imgOff[id]=new Image();\r
+  imgOff[id].src=off;\r
 }\r
index cf78a7c13c2f869bf4f1669eed0c73ecffbaee74..b03020869bea74a5c61f46ce6c5a7c2146719ada 100644 (file)
@@ -3,6 +3,8 @@ s/REPLACERIGHT/>/
 s/CLOSE_DA_P/<\/p>/
 s/OPEN_DA_P/<p>/
 s/MAKE_THIS_MYOUML/\&ouml;/
+s/MAKE_THIS_OSLASH/\&oslash;/
 s/NEW_TT_ROW/<\/tr><tr>/
+s/MAKE_SPACE/ /g
 s/charset=UTF-8/charset=iso-8859-1/
 s/Sonar/S\&\#xf3\;nar/
index 61ae62d51995aaf35f7a005d5f20da19aff4bdff..59974528d6660ce2165a19dde9fcac97fd6b7a51 100644 (file)
@@ -15,7 +15,7 @@
           { text-align: left } p.fancy { text-align: justify } </style>
       </head>
       <body alink="#FF0000" bgcolor="#555555" link="#FFFF99"
-        onload="rolloverLoad('main','pix/vinyl-hover.gif','pix/vinyl.png');                rolloverLoad('download','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('screenshots','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('faq','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('docs','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('turntable','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('scratches','pix/vinyl-hover.gif','pix/vinyl.png');         rolloverLoad('links','pix/vinyl-hover.gif','pix/vinyl.png');        rolloverLoad('bugs','pix/vinyl-hover.gif','pix/vinyl.png');      rolloverLoad('aseqjoy','pix/vinyl-hover.gif','pix/vinyl.png');"
+        onload="load('main','pix/vinyl-hover.gif','pix/vinyl.png');load('download','pix/vinyl-hover.gif','pix/vinyl.png');load('screenshots','pix/vinyl-hover.gif','pix/vinyl.png');load('faq','pix/vinyl-hover.gif','pix/vinyl.png');load('docs','pix/vinyl-hover.gif','pix/vinyl.png');load('turntable','pix/vinyl-hover.gif','pix/vinyl.png');load('scratches','pix/vinyl-hover.gif','pix/vinyl.png');load('links','pix/vinyl-hover.gif','pix/vinyl.png');load('bugs','pix/vinyl-hover.gif','pix/vinyl.png');load('aseqjoy','pix/vinyl-hover.gif','pix/vinyl.png');"
         text="#FFFFFF" vlink="#FFCC33">
         <!--new-->
         <table border="0" cellpadding="0" cellspacing="0" width="100%">
@@ -69,7 +69,7 @@
                       <img alt="-" border="0" name="main" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="./" onMouseOut="rolloverOff('main');" onMouseOver="rolloverOn('main');">main</a>
+                      <a href="./" onMouseOut="off('main');" onMouseOver="on('main');">main</a>
                     </td>
                     <td/>
                   </xsl:if>
@@ -89,7 +89,7 @@
                       <img alt="-" border="0" name="download" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="download.html" onMouseOut="rolloverOff('download');" onMouseOver="rolloverOn('download');">download</a>
+                      <a href="download.html" onMouseOut="off('download');" onMouseOver="on('download');">download</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="screenshots" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="screenshots.html" onMouseOut="rolloverOff('screenshots');" onMouseOver="rolloverOn('screenshots');">screenshots</a>
+                      <a href="screenshots.html" onMouseOut="off('screenshots');" onMouseOver="on('screenshots');">screenshots</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="bugs" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="bugs.html" onMouseOut="rolloverOff('bugs');" onMouseOver="rolloverOn('bugs');">bugs</a>
+                      <a href="bugs.html" onMouseOut="off('bugs');" onMouseOver="on('bugs');">bugs</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="faq" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="faq.html" onMouseOut="rolloverOff('faq');" onMouseOver="rolloverOn('faq');">faq</a>
+                      <a href="faq.html" onMouseOut="off('faq');" onMouseOver="on('faq');">faq</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="docs" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="docs.html" onMouseOut="rolloverOff('docs');"
-                        onMouseOver="rolloverOn('docs');"> docs</a>
+                      <a href="docs.html" onMouseOut="off('docs');"
+                        onMouseOver="on('docs');"> docs</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="scratches" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="scratches.html" onMouseOut="rolloverOff('scratches');" onMouseOver="rolloverOn('scratches');">scratches</a>
+                      <a href="scratches.html" onMouseOut="off('scratches');" onMouseOver="on('scratches');">scratches</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="turntable" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="turntable.html" onMouseOut="rolloverOff('turntable');" onMouseOver="rolloverOn('turntable');">turntables</a>
+                      <a href="turntable.html" onMouseOut="off('turntable');" onMouseOver="on('turntable');">turntables</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="aseqjoy" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="aseqjoy.html" onMouseOut="rolloverOff('aseqjoy');"
-                        onMouseOver="rolloverOn('aseqjoy');"> aseqjoy</a>
+                      <a href="aseqjoy.html" onMouseOut="off('aseqjoy');"
+                        onMouseOver="on('aseqjoy');"> aseqjoy</a>
                     </td>
                     <td/>
                   </xsl:if>
                       <img alt="-" border="0" name="links" src="pix/vinyl.png" vspace="0"/>
                     </td>
                     <td>
-                      <a href="links.html" onMouseOut="rolloverOff('links');"
-                        onMouseOver="rolloverOn('links');"> links</a>
+                      <a href="links.html" onMouseOut="off('links');"
+                        onMouseOver="on('links');"> links</a>
                     </td>
                     <td/>
                   </xsl:if>
   </xsl:template>
 
   <xsl:template match="changelog">
+    <span style="font-family: monospace;">
     <p><font size="+2">ChangeLog</font></p>
       <xsl:apply-templates/>
+         </span>
   </xsl:template>
 
   <xsl:template match="version">
diff --git a/website/teXt.xsl b/website/teXt.xsl
new file mode 100644 (file)
index 0000000..6d4deec
--- /dev/null
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:template match="section">
+    <html>
+      <head>
+        <meta content="Alexander Koenig" name="Author"/>
+        <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"/>
+        <title><xsl:value-of select="@name"/></title>
+         </head>
+      <body>
+         <xsl:apply-templates/>
+      </body>
+    </html>
+  </xsl:template>
+  <xsl:template match="heading">
+    <font size="+2">
+      <xsl:apply-templates/>
+    </font>
+    <br/>
+  </xsl:template>
+  <xsl:template match="subtitle">
+    <font size="-2">
+      <xsl:apply-templates/>
+    </font>
+  </xsl:template>
+  <xsl:template match="para">
+    <xsl:if test="@class='fancy'">
+      <p class="fancy">
+        <xsl:apply-templates/>
+      </p>
+    </xsl:if>
+    <xsl:if test="@class='plain'">
+      <p class="plain">
+        <xsl:apply-templates/>
+      </p>
+    </xsl:if>
+  </xsl:template>
+  <xsl:template match="italic">
+    <i>
+      <xsl:apply-templates/>
+    </i>
+  </xsl:template>
+  <xsl:template match="red">
+    <font color="#FF0000">
+      <xsl:apply-templates/>
+    </font>
+  </xsl:template>
+  <xsl:template match="bold">
+    <b>
+      <xsl:apply-templates/>
+    </b>
+  </xsl:template>
+  <xsl:template match="newsheader"/>
+  <xsl:template match="newsitem">
+    <table border="0" cellpadding="0" cellspacing="0">
+      <!-- header -->
+      <tr>
+        <td bgcolor="#999999">
+          <xsl:for-each select="newsheader">
+            <table border="0" cellpadding="2px" cellspacing="0">
+              <tr>
+                <td>
+                  <img alt="new:" src="pix/new.png"/>
+                </td>
+                <td align="left" valign="middle" width="100%">
+                  <font size="+1">
+                    <xsl:apply-templates/>
+                  </font>
+                  <font color="#DDDDDD" size="+1"> [<xsl:value-of select="@date"/>]</font>
+                </td>
+              </tr>
+            </table>
+          </xsl:for-each>
+        </td>
+      </tr>
+      <!-- contents -->
+      <tr>
+        <td>
+          <xsl:apply-templates/>
+        </td>
+      </tr>
+    </table>
+  </xsl:template>
+  <xsl:template match="link">
+     <xsl:apply-templates/>
+  </xsl:template>
+  <xsl:template match="dblink">
+    <xsl:variable name="search" select="@id"/>
+    <a>
+      <xsl:attribute name="href">
+        <xsl:value-of select="//dlink[@id=$search]/@url"/>
+      </xsl:attribute>
+      <xsl:choose>
+        <xsl:when test="./text()">
+          <xsl:apply-templates/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="//dlink[@id=$search]/@text"/>
+        </xsl:otherwise>
+      </xsl:choose>
+    </a>
+    <xsl:if test="sum(//dlink[@id=$search])=0">
+      <font color="#FF0000">
+        <blink>broken dblink &quot;<xsl:value-of select="$search"/>&quot;</blink>
+      </font>
+    </xsl:if>
+  </xsl:template>
+  <xsl:template match="newline">
+    <br/>
+  </xsl:template>
+  <xsl:template match="itemizedlist">CLOSE_DA_P <ul>
+      <xsl:apply-templates/>
+    </ul>OPEN_DA_P</xsl:template>
+  <xsl:template match="listitem">
+    <li>
+      <xsl:apply-templates/>
+    </li>
+  </xsl:template>
+  <xsl:template match="person">
+         <xsl:value-of select="name"/> &lt;<xsl:value-of select="email"/>&gt;
+  </xsl:template>
+  <xsl:template match="index">
+    <p>
+      <font size="+2">
+        <b><xsl:value-of select="title"/></b>
+      </font>
+    </p>
+    <ul>
+      <xsl:for-each select="//subsection">
+        <li>
+          <a>
+            <xsl:attribute name="href">#<xsl:value-of select="title"/>
+            </xsl:attribute>
+            <xsl:value-of select="title"/>
+          </a>
+        </li>
+      </xsl:for-each>
+    </ul>
+    <p/>
+  </xsl:template>
+  <xsl:template match="subsection">
+    <p>
+      <font size="+1"><b>
+        <a>
+          <xsl:attribute name="name">
+            <xsl:value-of select="title"/>
+          </xsl:attribute>
+          <xsl:value-of select="title"/>
+        </a>
+      </b></font>
+    </p>
+    <xsl:apply-templates/>
+  </xsl:template>
+  <xsl:template match="title"/>
+  <xsl:template match="tarfiles">
+    <ul>
+      <xsl:for-each select="tar">
+        <xsl:if test="@version!=//current/@version">
+          <li>Version <xsl:value-of select="@version"/>: <a>
+              <xsl:attribute name="href">dist/terminatorX-<xsl:value-of
+                select="@version"/>.tar.gz</xsl:attribute>terminatorX-<xsl:value-of select="@version"/>.tar.gz</a>
+            <xsl:if test="@havebz2='yes'"> (<a>
+                <xsl:attribute name="href">dist/terminatorX-<xsl:value-of select="@version"/>.tar.bz2</xsl:attribute>bz2</a>)</xsl:if>
+          </li>
+        </xsl:if>
+      </xsl:for-each>
+    </ul>
+  </xsl:template>
+  <xsl:template match="rpm" name="rpm">
+    <li>
+      <xsl:if test="@type='src'">Source RPM: </xsl:if>
+      <xsl:if test="@type!='src'">
+        <xsl:value-of select="@type"/>-binary RPM: </xsl:if>
+      <a>
+        <xsl:attribute name="href">rpms/terminatorX-<xsl:value-of select="@version"/>-<xsl:value-of
+            select="@rpmsubversion"/>.<xsl:value-of select="@type"/>.<xsl:if test="@ext">
+            <xsl:value-of select="@ext"/>.</xsl:if>rpm</xsl:attribute> terminatorX-<xsl:value-of
+          select="@version"/>-<xsl:value-of select="@rpmsubversion"/>.<xsl:value-of
+          select="@type"/>.<xsl:if test="@ext">
+          <xsl:value-of select="@ext"/>.</xsl:if>rpm</a>
+      <xsl:if test="@distribution"> built for: <i>
+          <xsl:value-of select="@distribution"/>
+        </i>
+      </xsl:if>
+      <xsl:if test="@note">
+        <b> note: </b>
+        <xsl:value-of select="@note"/>
+      </xsl:if>
+    </li>
+  </xsl:template>
+  <xsl:template match="rpmfiles">
+    <ul>
+      <xsl:for-each select="rpm[@version!=//current/@version]">
+        <xsl:call-template name="rpm"/>
+      </xsl:for-each>
+    </ul>
+  </xsl:template>
+  <xsl:template match="currentversion">
+    <p>The current terminatorX release is Version <xsl:value-of select="//current/@version"/>.
+      <br/>Download as:</p>
+    <ul>
+      <li>tar file: <a>
+          <xsl:attribute name="href">dist/terminatorX-<xsl:value-of
+            select="//current/@version"/>.tar.gz</xsl:attribute>terminatorX-<xsl:value-of select="//current/@version"/>.tar.gz</a>
+        <xsl:if test="//current/@havebz2='yes'"> (<a>
+            <xsl:attribute name="href">dist/terminatorX-<xsl:value-of select="//current/@version"/>.tar.bz2</xsl:attribute>bz2</a>)</xsl:if>
+      </li>
+      <xsl:for-each select="//rpm[@version=//current/@version]">
+        <xsl:call-template name="rpm"/>
+      </xsl:for-each>
+    </ul>
+    <xsl:if test="sum(//rpm[@version=//current/@version])=0">Sorry, no RPMs available for the
+      current release, yet. Stay tuned.</xsl:if>
+  </xsl:template>
+  <xsl:template match="filelist">
+    <ul>
+      <xsl:for-each select="file">
+        <li>
+          <xsl:call-template name="file"/>
+        </li>
+      </xsl:for-each>
+    </ul>
+  </xsl:template>
+  <xsl:template match="file" name="file">
+    <a>
+      <xsl:attribute name="href">files/<xsl:apply-templates/>
+      </xsl:attribute>
+      <xsl:apply-templates/>
+    </a>
+  </xsl:template>
+  <xsl:template match="faq">
+    <a name="index">
+      <font size="+1">Question-Index:</font>
+    </a>
+    <ul>
+      <xsl:for-each select="qa">
+        <li>
+          <a>
+            <xsl:attribute name="href">#<xsl:value-of select="position()"/>
+            </xsl:attribute>
+            <xsl:value-of select="question"/>
+          </a>
+        </li>
+      </xsl:for-each>
+    </ul>
+    <p>
+      <font size="+1">Answers:</font>
+    </p>
+    <xsl:apply-templates/>
+  </xsl:template>
+  <xsl:template match="qa">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr>
+        <td bgcolor="#999999">
+          <table border="0" cellpadding="3px" cellspacing="0" width="100%">
+            <tr>
+              <td>
+                <a>
+                  <xsl:attribute name="name">
+                    <xsl:value-of select="position() div 2"/>
+                  </xsl:attribute>
+                  <font color="#FFEE88" size="+1">
+                    <xsl:value-of select="question"/>
+                  </font>
+                </a>
+              </td>
+            </tr>
+          </table>
+        </td>
+      </tr>
+      <tr>
+        <td>
+          <xsl:apply-templates/>
+        </td>
+      </tr>
+    </table>
+    <p>
+      <font size="-1">
+        <a href="#index">(back to index)</a>
+      </font>
+    </p>
+  </xsl:template>
+  <xsl:template match="question"/>
+  <xsl:template match="answer">
+    <xsl:apply-templates/>
+  </xsl:template>
+  <xsl:template match="turntabletable">
+    <table border="2" cellpadding="2px" width="100%">
+      <!--
+  
+<tr bgcolor="#FFFF99">
+<td width="100%" colspan="2">
+<font face="Arial,Helvetica" color="#000000" size="+2">
+<b>Users' Turntables
+</b>
+</font>
+</td>
+</tr>
+  -->
+      <xsl:apply-templates/>
+    </table>
+  </xsl:template>
+  <xsl:template match="tt">
+    <tr bgcolor="#FFFF99">
+      <td align="left" colspan="2" width="100%">
+        <font color="#000000" face="Arial,Helvetica" size="+1">
+          <b>
+            <xsl:value-of select="@title"/>
+          </b>
+        </font>
+      </td>
+    </tr>
+    <tr>
+      <td valign="top" width="50%">
+        <xsl:for-each select="author">
+          <b>Creator:</b>
+          <xsl:apply-templates/>
+          <br/>
+        </xsl:for-each>
+        <xsl:for-each select="text">
+          <xsl:apply-templates/>
+        </xsl:for-each>
+      </td>
+      <td width="50%">
+        <table width="100%">
+          <tr>
+            <xsl:for-each select="ttimages">
+              <xsl:apply-templates/>
+            </xsl:for-each>
+          </tr>
+        </table>
+      </td>
+    </tr>
+  </xsl:template>
+  <xsl:template match="scratchtable">
+    <table border="2" width="100%">
+      <tr bgcolor="#FFFF99">
+        <td>
+          <font color="#000000" face="Arial,Helvetica" size="+1">
+            <b>Scratch</b>
+          </font>
+        </td>
+        <td>
+          <font color="#000000" face="Arial,Helvetica" size="+1">
+            <b>Author</b>
+          </font>
+        </td>
+        <td>
+          <font color="#000000" face="Arial,Helvetica" size="+1">
+            <b>Description</b>
+          </font>
+        </td>
+      </tr>
+      <xsl:apply-templates/>
+    </table>
+  </xsl:template>
+  <xsl:template match="scratch">
+    <tr>
+      <xsl:apply-templates/>
+    </tr>
+  </xsl:template>
+  <xsl:template match="mp3file|author|comment">
+    <td valign="top">
+      <xsl:apply-templates/>
+    </td>
+  </xsl:template>
+  <xsl:template match="tinycomment|filesize">
+    <br/>
+    <font size="-1">
+      <xsl:apply-templates/>
+    </font>
+  </xsl:template>
+  <xsl:template match="screen">
+    <span style="font-family: monospace; color: #DDFFDD">
+      <xsl:apply-templates/>
+    </span>
+  </xsl:template>
+
+  <xsl:template match="changelog">
+    <span style="font-family: monospace;">
+    <p><font size="+2">terminatorX ChangeLog</font></p>
+       <p>Copyright (C) 1999-2004 Alexander KMAKE_THIS_MYOUMLnig</p>
+      <xsl:apply-templates/>
+         </span>
+  </xsl:template>
+
+  <xsl:template match="version">
+    <p><font size="+1">Version <xsl:value-of select="@name"/> <xsl:if 
+       test="@unreleased='true'"><i> (unreleased) </i></xsl:if></font>
+       </p>
+       <ul>
+      <xsl:apply-templates/>
+        </ul>
+  </xsl:template>
+  
+  <xsl:template match="screenshot">
+    <xsl:if test="name(.)='screenshot'">CLOSE_DA_P</xsl:if>
+    <center>
+      <table border="0" width="100%">
+        <tr>
+          <td>
+            <center>
+              <a>
+                <xsl:attribute name="href">pix/<xsl:value-of select="@filename"/>
+                </xsl:attribute>
+                <img border="0">
+                  <xsl:attribute name="alt">
+                    <xsl:value-of select="name(.)"/>
+                  </xsl:attribute>
+                  <xsl:attribute name="src">pix/pre_<xsl:value-of select="@filename"/>
+                  </xsl:attribute>
+                </img>
+              </a>
+            </center>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <center>
+              <xsl:apply-templates/>
+            </center>
+          </td>
+        </tr>
+      </table>
+    </center>
+    <xsl:if test="name(.)='screenshot'">OPEN_DA_P</xsl:if>
+  </xsl:template>
+  <xsl:template match="image">
+    <xsl:if test="position()&gt;3">
+      <xsl:if test="(position() div 2) mod 3=1">NEW_TT_ROW</xsl:if>
+    </xsl:if>
+    <td align="center" valign="top" width="33%">
+      <table border="0">
+        <tr>
+          <td>
+            <center>
+              <a>
+                <xsl:attribute name="href">pix/<xsl:value-of select="@filename"/>
+                </xsl:attribute>
+                <img border="0">
+                  <xsl:attribute name="alt">
+                    <xsl:value-of select="name(.)"/>
+                  </xsl:attribute>
+                  <xsl:attribute name="src">pix/pre_<xsl:value-of select="@filename"/>
+                  </xsl:attribute>
+                </img>
+              </a>
+            </center>
+          </td>
+        </tr>
+        <tr>
+          <td>
+            <center>
+              <xsl:apply-templates/>
+            </center>
+          </td>
+        </tr>
+      </table>
+    </td>
+  </xsl:template>
+  <xsl:template match="ilink">
+    <table bgcolor="#999999" border="0" cellspacing="5px" width="100%">
+      <tr>
+        <xsl:if test="banner">
+          <td align="center" valign="top" width="90px">
+            <a>
+              <xsl:attribute name="href">
+                <xsl:if test="link">
+                  <xsl:value-of select="link/@ref"/>
+                </xsl:if>
+                <xsl:if test="dblink">
+                  <xsl:variable name="search" select="dblink/@id"/>
+                  <xsl:value-of select="//dlink[@id=$search]/@url"/>
+                </xsl:if>
+              </xsl:attribute>
+              <img border="0">
+                <xsl:attribute name="alt">
+                  <xsl:value-of select="logo"/>
+                </xsl:attribute>
+                <xsl:attribute name="src">pix/banner/<xsl:value-of select="banner/@filename"/>
+                </xsl:attribute>
+              </img>
+            </a>
+          </td>
+        </xsl:if>
+        <td valign="top">
+          <xsl:for-each select="para">
+            <xsl:apply-templates/>
+          </xsl:for-each>
+        </td>
+      </tr>
+    </table>
+    <xsl:if test="following-sibling::ilink">
+      <hr/>
+    </xsl:if>
+  </xsl:template>
+</xsl:stylesheet>