]> lisas.de Git - aseqjoy.git/commitdiff
Fixing a stereo_fx related bug, manual updates - Alex
authorterminatorX <>
Tue, 26 Oct 2004 20:56:57 +0000 (20:56 +0000)
committerterminatorX <>
Tue, 26 Oct 2004 20:56:57 +0000 (20:56 +0000)
terminatorX/doc/terminatorX-manual/C/terminatorX-manual.xml
terminatorX/src/tX_ladspa_class.cc
terminatorX/src/tX_seqpar.cc
terminatorX/src/tX_vtt.cc
terminatorX/src/tX_vttgui.cc

index 9378e5a79b0272201a61d9e75c62a1698e9a8248..2fbb13799f36ddfe6c4e77ea57f53a4d011db83a 100644 (file)
 
       <para>DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED UNDER
       THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE WITH THE FURTHER
-      UNDERSTANDING THAT: <orderedlist><listitem><para>DOCUMENT IS PROVIDED ON
-      AN &#34;AS IS&#34; BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-      OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE DOCUMENT
-      OR MODIFIED VERSION OF THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT
-      FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE
-      QUALITY, ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION
-      OF THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION
-      PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER, AUTHOR OR
-      ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
-      CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF
-      THIS LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT
-      IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND</para></listitem><listitem><para>UNDER
-      NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN TORT (INCLUDING
-      NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE AUTHOR, INITIAL WRITER,
-      ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
-      OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO
-      ANY PERSON FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
-      CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION,
-      DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
-      MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR
-      RELATING TO USE OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
-      EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH
-      DAMAGES.</para></listitem></orderedlist></para>
+      UNDERSTANDING THAT: <orderedlist>
+          <listitem>
+            <para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY
+            OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+            LIMITATION, WARRANTIES THAT THE DOCUMENT OR MODIFIED VERSION OF
+            THE DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR A PARTICULAR
+            PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY,
+            ACCURACY, AND PERFORMANCE OF THE DOCUMENT OR MODIFIED VERSION OF
+            THE DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR MODIFIED VERSION
+            PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL WRITER,
+            AUTHOR OR ANY CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+            SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY
+            CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY
+            DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT IS AUTHORIZED
+            HEREUNDER EXCEPT UNDER THIS DISCLAIMER; AND</para>
+          </listitem>
+
+          <listitem>
+            <para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER IN
+            TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE
+            AUTHOR, INITIAL WRITER, ANY CONTRIBUTOR, OR ANY DISTRIBUTOR OF THE
+            DOCUMENT OR MODIFIED VERSION OF THE DOCUMENT, OR ANY SUPPLIER OF
+            ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY DIRECT,
+            INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+            CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
+            GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY
+            AND ALL OTHER DAMAGES OR LOSSES ARISING OUT OF OR RELATING TO USE
+            OF THE DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT, EVEN IF
+            SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH
+            DAMAGES.</para>
+          </listitem>
+        </orderedlist></para>
     </legalnotice>
   </articleinfo>
 
       <title>What it is</title>
 
       <para>terminatorX is a realtime audio synthesizer that allows you to
-      &#34;scratch&#34; on digitally sampled audio data (*.wav, *.au, *.ogg,
-      *.mp3, etc.) the way hiphop-DJs scratch on vinyl records. It features
-      multiple turntables, realtime effects (buit-in as well as <ulink
+      "scratch" on digitally sampled audio data (*.wav, *.au, *.ogg, *.mp3,
+      etc.) the way hiphop-DJs scratch on vinyl records. It features multiple
+      turntables, realtime effects (buit-in as well as <ulink
       url="http://www.ladspa.org">LADSPA</ulink> plugin effects), a sequencer
-      and MIDI interface - all accessible through an easy-to-use gtk+ GUI.</para>
+      and MIDI interface - all accessible through an easy-to-use gtk+
+      GUI.</para>
 
       <para>This is software may have <ulink
       url="http://terminatorX.cx/bugs.html">bugs</ulink> please help fixing
 
       <para>Try the following steps:</para>
 
-      <orderedlist inheritnum="ignore" continuation="restarts">
+      <orderedlist continuation="restarts" inheritnum="ignore">
         <listitem>
-          <para>If you don&#39;t have <application moreinfo="none">LADSPA</application>
-          (Linux Audio Developer&#39;s Simple Plugin API) installed, go and
-          get it from the <ulink url="http://www.ladspa.org">LADSPA-homepage</ulink>
-          and install the SDK. terminatorX requires <filename moreinfo="none">ladspa.h</filename>.</para>
+          <para>If you don't have <application
+          moreinfo="none">LADSPA</application> (Linux Audio Developer's Simple
+          Plugin API) installed, go and get it from the <ulink
+          url="http://www.ladspa.org">LADSPA-homepage</ulink> and install the
+          SDK. terminatorX requires <filename
+          moreinfo="none">ladspa.h</filename>.</para>
         </listitem>
 
         <listitem>
-          <para>Install terminatorX (see <filename moreinfo="none">INSTALL</filename>
-          file)</para>
+          <para>Install terminatorX (see <filename
+          moreinfo="none">INSTALL</filename> file)</para>
         </listitem>
 
         <listitem>
         </listitem>
 
         <listitem>
-          <para>Setup Audio Output via <emphasis>Options/Preferences</emphasis>.</para>
+          <para>Setup Audio Output via
+          <emphasis>Options/Preferences</emphasis>.</para>
         </listitem>
 
         <listitem>
           <para>Load an audiofile into the available turntable (you can add
           more turntables if you want) (Hint: Click on the button that holds
-          &#34;NONE&#34; to load an audiofile, or drop one over the audiofile
-          display from your GNOME filemanager.</para>
+          "NONE" to load an audiofile, or drop one over the audiofile display
+          from your GNOME filemanager.</para>
         </listitem>
 
         <listitem>
           <para>Load a LADSPA plugin of your choice by clicking the
-          turntable&#39;s <emphasis>FX</emphasis> button and enable it.</para>
+          turntable's <emphasis>FX</emphasis> button and enable it.</para>
         </listitem>
 
         <listitem>
-          <para>Click on the &#34;Audio Engine&#34;-button to start playback.</para>
+          <para>Click on the "Audio Engine"-button to start playback.</para>
         </listitem>
 
         <listitem>
-          <para>Click on the &#34;Mouse-Grab&#34;-button to enter grab mode.
-          The turntable with the red border has the input focus.</para>
+          <para>Click on the "Mouse-Grab"-button to enter grab mode. The
+          turntable with the red border has the input focus.</para>
         </listitem>
 
         <listitem>
 
         <listitem>
           <para>Release <keycap moreinfo="none">SPACE</keycap> or left mouse
-          button to let the scratch-file run at the turntable&#39;s default
+          button to let the scratch-file run at the turntable's default
           speed.</para>
         </listitem>
 
     <sect2 id="FEATURES">
       <title>Features</title>
 
-      <para>The following list summarizes terminatorX&#39; main features:</para>
+      <para>The following list summarizes terminatorX' main features:</para>
 
       <itemizedlist>
         <listitem>
         </listitem>
 
         <listitem>
-          <para>Support for the <emphasis>JACK Audio Connection Kit</emphasis></para>
+          <para>Support for the <emphasis>JACK Audio Connection
+          Kit</emphasis></para>
         </listitem>
 
         <listitem>
                   XFree86 Release 4.0 has a bug resulting in broken
                   DirectMouse support. This has been fixed by the XFree86-Team
                   with Release 4.0.1 available from your distribution or the
-                  <ulink url="http://www.xfree86.org">XFree86 homepage</ulink>.</para>
+                  <ulink url="http://www.xfree86.org">XFree86
+                  homepage</ulink>.</para>
                 </listitem>
 
                 <listitem>
-                  <para>The Gimp Toolkit: gtk+ (&#62;= 2.0). If your
-                  distribution doesn&#39;t provide a current version of gtk+
-                  get it from the <ulink url="http://www.gtk.org">gtk+
+                  <para>The Gimp Toolkit: gtk+ (&gt;= 2.0). If your
+                  distribution doesn't provide a current version of gtk+ get
+                  it from the <ulink url="http://www.gtk.org">gtk+
                   homepage</ulink>.</para>
                 </listitem>
 
                 <listitem>
-                  <para>LADSPA - the Linux Audio Developer&#39;s Simple Plugin
-                  API. Get it from the <ulink url="http://www.ladpsa.org">LADSPA
-                  homepage</ulink></para>
+                  <para>LADSPA - the Linux Audio Developer's Simple Plugin
+                  API. Get it from the <ulink
+                  url="http://www.ladpsa.org">LADSPA homepage</ulink></para>
                 </listitem>
 
                 <listitem>
 
               <itemizedlist>
                 <listitem>
-                  <para><ulink url="http://plugin.org.uk/releases/lrdf/">liblrdf</ulink>
+                  <para><ulink
+                  url="http://plugin.org.uk/releases/lrdf/">liblrdf</ulink>
                   for easier handling of LADSPA plugins</para>
                 </listitem>
 
                 <listitem>
-                  <para><ulink url="http://www.mars.org/home/rob/proj/mpeg/">mad</ulink>
+                  <para><ulink
+                  url="http://www.mars.org/home/rob/proj/mpeg/">mad</ulink>
                   for loading mp3 files.</para>
                 </listitem>
 
                 <listitem>
-                  <para><ulink url="http://www.xiph.org/ogg/vorbis/">libvorbis</ulink>
-                  for loading ogg files.</para>
+                  <para><ulink
+                  url="http://www.xiph.org/ogg/vorbis/">libvorbis</ulink> for
+                  loading ogg files.</para>
                 </listitem>
 
                 <listitem>
-                  <para><ulink url="http://jackit.sourceforge.net">libjack</ulink>
-                  for JACK support.</para>
+                  <para><ulink
+                  url="http://jackit.sourceforge.net">libjack</ulink> for JACK
+                  support.</para>
                 </listitem>
 
                 <listitem>
                 </listitem>
 
                 <listitem>
-                  <para><ulink url="http://www.68k.org/~michael/audiofile/">libaudiofile</ulink>
+                  <para><ulink
+                  url="http://www.68k.org/~michael/audiofile/">libaudiofile</ulink>
                   for loading misc other audio files.</para>
                 </listitem>
 
                 </listitem>
 
                 <listitem>
-                  <para><ulink url="http://www.xiph.org/ogg/vorbis/">ogg123</ulink>
-                  for ogg pre-listening (and fallback loading if libvorbis is
-                  not installed).</para>
+                  <para><ulink
+                  url="http://www.xiph.org/ogg/vorbis/">ogg123</ulink> for ogg
+                  pre-listening (and fallback loading if libvorbis is not
+                  installed).</para>
                 </listitem>
 
                 <listitem>
 
       <para>A note on performance: terminatorX is known to run satisfyingly on
       pentium-class systems (or above of course). Increasing the number of
-      turntables or plugins will of course require more performant systems.</para>
+      turntables or plugins will of course require more performant
+      systems.</para>
     </sect2>
 
     <sect2 id="INSTALLATION">
       <title>Installation</title>
 
-      <para>For GNU-standards&#39; sake this information is now located in the
+      <para>For GNU-standards' sake this information is now located in the
       <filename moreinfo="none">INSTALL</filename> file that came with this
       distribution of terminatorX.</para>
     </sect2>
   <sect1 id="OPERATION">
     <title>Operation</title>
 
-    <para>TerminatorX&#39; user interface is split up into the main controls
+    <para>TerminatorX' user interface is split up into the main controls
     (master, sequencer, engine controls and menu buttons) and the individual
-    turntable&#39;s controls. Each turntable has it&#39;s own interface split
-    up into a control and a audio panel (see <xref linkend="TURNTABLECONTROLS" />).</para>
+    turntable's controls. Each turntable has it's own interface split up into
+    a control and a audio panel (see <xref
+    linkend="TURNTABLECONTROLS" />).</para>
 
     <sect2 id="MENU">
       <title>Menu</title>
       <sect3 id="FILEMENU">
         <title><emphasis>File</emphasis> Menu</title>
 
-        <para>The <emphasis>File</emphasis> menu features these functions:</para>
+        <para>The <emphasis>File</emphasis> menu features these
+        functions:</para>
 
         <itemizedlist>
           <listitem>
           <listitem>
             <para><emphasis>Open</emphasis></para>
 
-            <para>Allows restoring of a previously saved terminatorX set file.</para>
+            <para>Allows restoring of a previously saved terminatorX set
+            file.</para>
           </listitem>
 
           <listitem>
           <listitem>
             <para><emphasis>Add Turntable</emphasis></para>
 
-            <para>Adds a new turntable to the current set of turntables.</para>
+            <para>Adds a new turntable to the current set of
+            turntables.</para>
           </listitem>
 
           <listitem>
             <para><emphasis>Assign Default MIDI Mappnigs</emphasis></para>
 
             <para>Will assign the Default MIDI Mappings (see <xref
-            linkend="MIDI" />) to all standard parameters. Existing
-           mappings will not be overridden.
-           </para>
+            linkend="MIDI" />) to all standard parameters. Existing mappings
+            will not be overridden.</para>
           </listitem>
 
           <listitem>
-            <para><emphasis>Auto Assign Default MIDI Mappings</emphasis></para>
+            <para><emphasis>Auto Assign Default MIDI
+            Mappings</emphasis></para>
 
             <para>When this option is enabled will always re-apply the Default
             MIDI Mappings (see <xref linkend="MIDI" />) whenever you load a
-            set, add a new turntable or create a new set. Existing 
-           mappings will not be overridden.</para>
+            set, add a new turntable or create a new set. Existing mappings
+            will not be overridden.</para>
           </listitem>
 
           <listitem>
             audio engine is started - either by pressing the Power or the Play
             button. Recording will stop when the audio engine is stopped
             again. The created RIFF/Wave file will be a 16Bit/Stereo wave-file
-            with the sampling rate selected for the current audio backend.</para>
+            with the sampling rate selected for the current audio
+            backend.</para>
           </listitem>
         </itemizedlist>
       </sect3>
 
             <itemizedlist>
               <listitem>
-                <para>the beginning of the song upto the current song position</para>
+                <para>the beginning of the song upto the current song
+                position</para>
               </listitem>
 
               <listitem>
-                <para>the current song position upto the end of the song</para>
+                <para>the current song position upto the end of the
+                song</para>
               </listitem>
 
               <listitem>
       <sect3 id="OPTIONSMENU">
         <title><emphasis>Options</emphasis> Menu</title>
 
-        <para>The <emphasis>Options</emphasis> menu features these functions:</para>
+        <para>The <emphasis>Options</emphasis> menu features these
+        functions:</para>
 
         <itemizedlist>
           <listitem>
 
             <para>Maximizes the terminatorX main windows to use the complete
             screen. Note that this requires a NETWM compliant window manager
-            to work. By toggling this option again terminatorX&#39; window can
-            be resized back to the previous state again. The setting will be
+            to work. By toggling this option again terminatorX' window can be
+            resized back to the previous state again. The setting will be
             stored in the <filename>~/.terminatorXrc</filename> file.</para>
           </listitem>
 
       <sect3 id="HELPMENU">
         <title><emphasis>Help</emphasis> Menu</title>
 
-        <para>The <emphasis>Help</emphasis> menu features these functions:</para>
+        <para>The <emphasis>Help</emphasis> menu features these
+        functions:</para>
 
         <itemizedlist>
           <listitem>
 
           <para>Some functions are not available when the audio engine is on,
           their controls will be marked insensitive when you enable the
-          engine. To actually enter grab mode you&#39;ll have to click on the
-          &#34;Mouse Grab&#34; button. See <xref linkend="GRABMODE" /> to find
-          out how to control the software then.</para>
+          engine. To actually enter grab mode you'll have to click on the
+          "Mouse Grab" button. See <xref linkend="GRABMODE" /> to find out how
+          to control the software then.</para>
         </listitem>
 
         <listitem>
       <para>The turntable GUI contains multiple controls and the real time
       displays for each turntable. To save some space on your desktop and to
       give terminatorX the traditional audio-application look, terminatorX
-      features &#34;knob&#34;-widgets. These widgets work pretty
-      straight-forward: click somewhere within the widget and keep the left
-      mouse-button pressed. Now move the mouse up and down or left and right
-      to increase/decrease the control&#39;s value. All those widget are
-      coupled with a text entry field since 3.70, which allows you to enter
-      values directly.</para>
+      features "knob"-widgets. These widgets work pretty straight-forward:
+      click somewhere within the widget and keep the left mouse-button
+      pressed. Now move the mouse up and down or left and right to
+      increase/decrease the control's value. All those widget are coupled with
+      a text entry field since 3.70, which allows you to enter values
+      directly.</para>
 
       <para>A turntable is visualized by two panels: the control and the audio
       panel. These are no longer combined for better layout management.</para>
 
       <para>Sometimes you might find a certain audio or control panel
       unnecessary - simply eating up space. Since release 3.73 it is possible
-      to minimize audio and control panels to the <emphasis>panel bar</emphasis>
-      with the tiny button with a blue bar icon in the upper right edge of
-      each panel. This bar works just like GNOME&#39;s window list or
-      KDE&#39;s kicker: When a panel is minimized a button in the bar will
+      to minimize audio and control panels to the <emphasis>panel
+      bar</emphasis> with the tiny button with a blue bar icon in the upper
+      right edge of each panel. This bar works just like GNOME's window list
+      or KDE's kicker: When a panel is minimized a button in the bar will
       appear, representing the minimized window. On clicking this button the
       button will be removed and the minimized panel is displayed again. When
       no panels are minimized the panel bar automatically disappears to save
         indicate the current position within the sample with a red cursor (a
         blue/green cursor indicates the turntable is muted).</para>
 
-        <para>Additionally there are some controls above the audio-display:</para>
+        <para>Additionally there are some controls above the
+        audio-display:</para>
 
         <itemizedlist>
           <listitem>
             <para><emphasis>File Button</emphasis></para>
 
             <para>This button holds the name of the audio-file currently
-            loaded. When there&#39;s no sample loaded the button will read
-            &#34;NONE&#34; to indicate the current status. Click on this
-            button to get a menu from which you can load/reload a sound file
-            or run an external soundfile editor. Alternatively you can
-            drag&#39;n&#39;drop files over the audio-display to load them.</para>
+            loaded. When there's no sample loaded the button will read "NONE"
+            to indicate the current status. Click on this button to get a menu
+            from which you can load/reload a sound file or run an external
+            soundfile editor. Alternatively you can drag'n'drop files over the
+            audio-display to load them.</para>
 
             <itemizedlist>
               <title>The File Button Menu</title>
             parameters you selected from this menu will be affected (for this
             turntable). Since Version 3.70 this mappings are no longer
             hardcoded to built-in controls but available for all parameters
-            that qualify as &#34;mappable&#34;. Note that this includes
-            plugins&#39; controls as well.</para>
+            that qualify as "mappable". Note that this includes plugins'
+            controls as well.</para>
           </listitem>
 
           <listitem>
 
             <para>This button is available only if terminatorX was built with
             ALSA MIDI support and the sequencer input port was created
-            successfully on startup. For more information on terminatorX&#39;
-            MIDI interface see <xref linkend="MIDI" />.</para>
+            successfully on startup. For more information on terminatorX' MIDI
+            interface see <xref linkend="MIDI" />.</para>
           </listitem>
         </itemizedlist>
       </sect3>
             <listitem>
               <para><emphasis>Pitch Adj. Button</emphasis></para>
 
-              <para>Using two (or more) loops and terminatorX&#39;
-              synchronization facility usually requires adjusting the pitch of
-              the loops so that the turntables play in sync. For precisely cut
-              loops this usually means making them run equally fast or one
-              running twice as fast as the other etc. Manually finding the
-              necessary pitch values usually consumes a significant amount of
-              time so the feature <emphasis>Pitch Adjust</emphasis> helps
-              speeding up this process.</para>
+              <para>Using two (or more) loops and terminatorX' synchronization
+              facility usually requires adjusting the pitch of the loops so
+              that the turntables play in sync. For precisely cut loops this
+              usually means making them run equally fast or one running twice
+              as fast as the other etc. Manually finding the necessary pitch
+              values usually consumes a significant amount of time so the
+              feature <emphasis>Pitch Adjust</emphasis> helps speeding up this
+              process.</para>
 
               <para>Clicking this button will cause the <emphasis>Compute
               Pitch</emphasis> dialog to pop up. With this dialog it is
               possible to specify how many loops of this turntable should be
               played as fast as a certain amount of loops of the master
               turntable. After pressing the <emphasis>Ok</emphasis> button
-              terminatorX will adjust the turntable&#39;s ptich accordingly in
+              terminatorX will adjust the turntable's ptich accordingly in
               order to match the given playback speed requirements.</para>
 
               <para>Note that this feature is proabably useless when loading
-              complete songs into terminatorX - it&#39;s intended for use with
+              complete songs into terminatorX - it's intended for use with
               precisely cut loops.</para>
             </listitem>
           </itemizedlist>
         <sect4>
           <title>Playback Panel</title>
 
-          <para>The playback panel holds all controls related to triggering the
-          turntable. For more details on synchronization see <xref
+          <para>The playback panel holds all controls related to triggering
+          the turntable. For more details on synchronization see <xref
           linkend="SYNCHRONIZATION" />.</para>
 
           <itemizedlist>
             <listitem>
               <para><emphasis>Stop Button</emphasis></para>
 
-              <para>Guess what, this stops this turntable&#39;s
+              <para>Guess what, this stops this turntable's
               audio-playback.</para>
             </listitem>
 
             <listitem>
               <para><emphasis>Client Button</emphasis></para>
 
-              <para>This button marks the turntable as <emphasis>sync-client</emphasis>,
-              so it will be triggered with the master automatically.</para>
+              <para>This button marks the turntable as
+              <emphasis>sync-client</emphasis>, so it will be triggered with
+              the master automatically.</para>
             </listitem>
 
             <listitem>
           </itemizedlist>
 
           <para>Below the effect queue a turntable shows some more controls:
-          <itemizedlist><listitem><para><emphasis>Pitch Control</emphasis></para><para>The
-          pitch control allows setting the default playback speed for that
-          turntable (the &#34;motor&#34; speed). Negative values will result
-          in the sample being played backwards.</para></listitem><listitem><para><emphasis>PAN
-          Control</emphasis></para><para>This parameter allows setting the
-          position of the turntable&#39;s main signal within the stereo
-          panorama.</para></listitem><listitem><para><emphasis>VU Meter</emphasis></para><para>The
-          displayed signal shows the turntable&#39;s current signal not
-          including the echo-signal which is mixed separately.</para></listitem></itemizedlist></para>
+          <itemizedlist>
+              <listitem>
+                <para><emphasis>Pitch Control</emphasis></para>
+
+                <para>The pitch control allows setting the default playback
+                speed for that turntable (the "motor" speed). Negative values
+                will result in the sample being played backwards.</para>
+              </listitem>
+
+              <listitem>
+                <para><emphasis>PAN Control</emphasis></para>
+
+                <para>This parameter allows setting the position of the
+                turntable's main signal within the stereo panorama.</para>
+              </listitem>
+
+              <listitem>
+                <para><emphasis>VU Meter</emphasis></para>
+
+                <para>The displayed signal shows the turntable's current
+                signal not including the echo-signal which is mixed
+                separately.</para>
+              </listitem>
+            </itemizedlist></para>
         </sect4>
       </sect3>
 
         <title>Parameter Menu</title>
 
         <para>TerminatorX can record events for nearly all parameters of a
-        turntable. All of these so-called &#34;sequencable&#34; parameters
-        have an extra pop-up menu since Version 3.81. Simply right-click on
-        the knob, button, slider of the parameter you want to setup, and a
-        menu with the following options will appear:<itemizedlist><listitem><para><emphasis>MIDI
-        Learn</emphasis></para><para>This options provides an easy method to
-        select the MIDI control to modify the parameter you select. If you
-        choose this menu entry, a tiny dialog box will pop up that reads
-        <emphasis>&#34;Waiting for MIDI Event...&#34;</emphasis>. The first
-        MIDI event terminatorX receives will now be mapped to control this
-        parameter.</para></listitem><listitem><para><emphasis>Remove MIDI
-        Binding</emphasis></para><para>If a MIDI event has been bound to a
-        parameter it can be removed by selecting this menu entry.</para></listitem><listitem><para><emphasis>Set
-        Upper MIDI Bound</emphasis></para><para>Sometimes it is preferable to
-        modify a certain parameter only within a specific value range - this
-        can be achieved with this option - by setting an upper and a lower
-        bound for the MIDI control of this parameter. When you select this
-        menu entry, the current setting of this parameter will be used as the
-        upper bound for the parameter&#39;s MIDI mapping.</para></listitem><listitem><para><emphasis>Reset
-        Upper MIDI Bound</emphasis></para><para>If an upper MIDI bound was set
-        for this parameter it can be removed by selecting this menu entry.</para></listitem><listitem><para><emphasis>Set
-        Lower MIDI Bound</emphasis></para><para>Works just like setting the
-        uper MIDI bound: when you select this menu entry, the current setting
-        of this parameter will be used as the lower bound for the
-        parameter&#39;s MIDI mapping.</para></listitem><listitem><para><emphasis>Reset
-        Lower MIDI Bound</emphasis></para><para>If a lower MIDI bound was set
-        for this parameter it can be removed by selecting this menu entry.</para></listitem><listitem><para><emphasis>Delete
-        Sequencer Events</emphasis></para><para>Just like the Sequencer menu
-        (see <xref linkend="SEQUENCERMENU" />) this entry allows you to delete
-        events recorded for this specific parameter.</para></listitem></itemizedlist></para>
+        turntable. All of these so-called "sequencable" parameters have an
+        extra pop-up menu since Version 3.81. Simply right-click on the knob,
+        button, slider of the parameter you want to setup, and a menu with the
+        following options will appear:<itemizedlist>
+            <listitem>
+              <para><emphasis>MIDI Learn</emphasis></para>
+
+              <para>This options provides an easy method to select the MIDI
+              control to modify the parameter you select. If you choose this
+              menu entry, a tiny dialog box will pop up that reads
+              <emphasis>"Waiting for MIDI Event..."</emphasis>. The first MIDI
+              event terminatorX receives will now be mapped to control this
+              parameter.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Remove MIDI Binding</emphasis></para>
+
+              <para>If a MIDI event has been bound to a parameter it can be
+              removed by selecting this menu entry.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Map MIDI Reverse</emphasis></para>
+
+              <para>This option can be turned either on or off: when enabled
+              the maximum value of the MIDI controller will be mapped to the
+              minimum value of the controlled parameter and the other way
+              round.</para>
+
+              <para>Note that this allows mapping a MIDI controller as a
+              crossfader: simply map the same MIDI controller to two different
+              turntables's volume controls (or optionally extra amplifier
+              plugins) and reverse one of these MIDI mappings.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Set Upper MIDI Bound</emphasis></para>
+
+              <para>Sometimes it is preferable to modify a certain parameter
+              only within a specific value range - this can be achieved with
+              this option - by setting an upper and a lower bound for the MIDI
+              control of this parameter. When you select this menu entry, the
+              current setting of this parameter will be used as the upper
+              bound for the parameter's MIDI mapping.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Reset Upper MIDI Bound</emphasis></para>
+
+              <para>If an upper MIDI bound was set for this parameter it can
+              be removed by selecting this menu entry.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Set Lower MIDI Bound</emphasis></para>
+
+              <para>Works just like setting the uper MIDI bound: when you
+              select this menu entry, the current setting of this parameter
+              will be used as the lower bound for the parameter's MIDI
+              mapping.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Reset Lower MIDI Bound</emphasis></para>
+
+              <para>If a lower MIDI bound was set for this parameter it can be
+              removed by selecting this menu entry.</para>
+            </listitem>
+
+            <listitem>
+              <para><emphasis>Delete Sequencer Events</emphasis></para>
+
+              <para>Just like the Sequencer menu (see <xref
+              linkend="SEQUENCERMENU" />) this entry allows you to delete
+              events recorded for this specific parameter.</para>
+            </listitem>
+          </itemizedlist></para>
       </sect3>
 
       <sect3>
 
         <para>With release 3.70 the effects are no longer hardcoded into the
         turntable. The effects are now arranged within an per-turntable
-        effect-queue. Additionally Version 3.82 introduces a second effect-queue
-       that follows the first: the queue for stereo LADSPA plugin effects.
-       The effect sequence is configurable by the user. To move
-        an effect to higher position within the queue, press the
+        effect-queue. Additionally Version 3.82 introduces a second
+        effect-queue that follows the first: the queue for stereo LADSPA
+        plugin effects. The effect sequence is configurable by the user. To
+        move an effect to higher position within the queue, press the
         <emphasis>blue upward arrow button</emphasis>. This will cause the
         effect to be rendered <emphasis>before</emphasis> the following
         effects. The <emphasis>blue downward arrow button</emphasis> will move
 
         <para>Now since release 3.71 the built-in echo effect is treated
         differently from other effects. Where all other effects feed their
-        signal back into the effect queue the echo effect doesn&#39;t touch
-        the input signal. It&#39;s echo-signal is mixed separately from the
-        turntable&#39;s main signal to allow a different panning value for the
+        signal back into the effect queue the echo effect doesn't touch the
+        input signal. It's echo-signal is mixed separately from the
+        turntable's main signal to allow a different panning value for the
         echo-signal. This mode of operation does have some side-effects:
         imagine a lowpass filter with a position after the echo effect in the
-        effect queue. This will result in the turntable&#39;s main signal
-        being lowpass-filtered but it will leave the echo-signal
+        effect queue. This will result in the turntable's main signal being
+        lowpass-filtered but it will leave the echo-signal
         lowpass-unfiltered.</para>
 
         <para>Some may call this behaviour a bug - whereas I would consider it
-        a feature ;). Anyway if the above description didn&#39;t clear things
-        up maybe the displayed figure does. It shows a schematic effect queue
+        a feature ;). Anyway if the above description didn't clear things up
+        maybe the displayed figure does. It shows a schematic effect queue
         with the built-in effects and two LADSPA effects enabled. Now with
         this setup you will not hear anything from the second LADSPA effect in
         the echo-signal.</para>
 
-       <para>Release 3.82 introduces a menu for each LADSPA plugin. Simply
-       click on the Plugin's label to operate the menu. Aside of displaying
-       detailed information about a plugin, the menu also contains some new
-       functionality: <emphasis>Add Dry/Wet Control</emphasis>. When activated 
-       the effect receives an extra Dry/Wet control that allows you to
-       modify to what extent the effect will actually effect the turntable's
-       signal. The extra control doesn't differ from the other controls: 
-       you can record events for it, etc. The additional control can be 
-       removed via the very same menu item that adds the control.
-       </para>
+        <para>Release 3.82 introduces a menu for each LADSPA plugin. Simply
+        click on the Plugin's label to operate the menu. Aside of displaying
+        detailed information about a plugin, the menu also contains some new
+        functionality: <emphasis>Add Dry/Wet Control</emphasis>. When
+        activated the effect receives an extra Dry/Wet control that allows you
+        to modify to what extent the effect will actually effect the
+        turntable's signal. The extra control doesn't differ from the other
+        controls: you can record events for it, etc. The additional control
+        can be removed via the very same menu item that adds the
+        control.</para>
 
         <itemizedlist>
           <listitem>
-            <para><emphasis>FX</emphasis> and 
-           <emphasis>Stereo FX Buttons</emphasis></para>
+            <para><emphasis>FX</emphasis> and <emphasis>Stereo FX
+            Buttons</emphasis></para>
 
             <para>Press this button to load a LADSPA plugin into the effect
             queue of the turntable. A menu holding the available
-            (terminatorX-&#34;compatible&#34;) LADSPA-plugins will pop up - mono
-           plugins are available from the <emphasis>FX</emphasis> menu, stereo
-           plugins from the <emphasis>Stereo FX</emphasis> menu. The
+            (terminatorX-"compatible") LADSPA-plugins will pop up - mono
+            plugins are available from the <emphasis>FX</emphasis> menu,
+            stereo plugins from the <emphasis>Stereo FX</emphasis> menu. The
             plugins are grouped within submenus according to the modules the
             plugins are contained in. Simply select the plugin you want to
             load from this menu and a panel for it will pop up at the end of
             duration parameter scales to the actual sample length: so if you
             set it to 0.5 you will hear the echo when the red playback cursor
             is half way through the sample. This is true for samples that are
-            shorter than terminatorX&#39; maximum echo buffer size only.</para>
+            shorter than terminatorX' maximum echo buffer size only.</para>
           </listitem>
 
           <listitem>
             <para><emphasis>Feedback Control</emphasis></para>
 
-            <para>Set the echo&#39;s feedback amount with this parameter.</para>
+            <para>Set the echo's feedback amount with this parameter.</para>
           </listitem>
 
           <listitem>
           <listitem>
             <para><emphasis>Pan Control</emphasis></para>
 
-            <para>The echo effect differs from other effects as it&#39;s
-            output signal will be mixed separately. The main goal here is to
-            allow positioning the echo signal at a position in the stereo
-            panorama that differs from the main panning position of the
-            turntable to achieve a somewhat spacial effect. The easy example
-            is: turntable&#39;s panning left, echo&#39;s panning right. As
-            both pan parameters are sequenceable you can create nice motion
-            effects from this starting point.</para>
+            <para>The echo effect differs from other effects as it's output
+            signal will be mixed separately. The main goal here is to allow
+            positioning the echo signal at a position in the stereo panorama
+            that differs from the main panning position of the turntable to
+            achieve a somewhat spacial effect. The easy example is:
+            turntable's panning left, echo's panning right. As both pan
+            parameters are sequenceable you can create nice motion effects
+            from this starting point.</para>
           </listitem>
         </itemizedlist>
       </sect3>
     <sect2 id="SYNCHRONIZATION">
       <title>Synchronization</title>
 
-      <para>Let&#39;s start off with an example: Say you have two drum loops
-      and one bassline loaded in three turntables. Of course you want these
-      samples to be triggered at the same time but you don&#39;t want to
-      invest time to cut them to the exact length. Therefore you decide which
-      of the drum loops to make the sync master. You&#39;ll have to do this
-      before you enable the audio engine (for now). Only one turntable can be
-      the sync master. Now you can make the other two sync clients which will
-      cause them to be (re-)triggered whenever the master is (re-)triggered.
-      The number you can select to the right of the <emphasis>client button</emphasis>
-      sets the trigger delay for the button: if it&#39;s set to zero the
-      turntable will be triggered with every master trigger, if it&#39;s set
-      to 1 it&#39;ll be triggered every 2nd master trigger and so on.</para>
+      <para>Let's start off with an example: Say you have two drum loops and
+      one bassline loaded in three turntables. Of course you want these
+      samples to be triggered at the same time but you don't want to invest
+      time to cut them to the exact length. Therefore you decide which of the
+      drum loops to make the sync master. You'll have to do this before you
+      enable the audio engine (for now). Only one turntable can be the sync
+      master. Now you can make the other two sync clients which will cause
+      them to be (re-)triggered whenever the master is (re-)triggered. The
+      number you can select to the right of the <emphasis>client
+      button</emphasis> sets the trigger delay for the button: if it's set to
+      zero the turntable will be triggered with every master trigger, if it's
+      set to 1 it'll be triggered every 2nd master trigger and so on.</para>
 
       <para>A nice side effect of this feature is: you can now scratch the
-      second (sync client) drum loop and no matter whether you&#39;re
-      scratching is good or not the beat will be triggered correctly again ;)</para>
+      second (sync client) drum loop and no matter whether you're scratching
+      is good or not the beat will be triggered correctly again ;)</para>
     </sect2>
 
     <sect2 id="GRABMODE">
       <title>Grab Mode Operation</title>
 
       <para>After pressing the <emphasis>Mouse Grab button</emphasis>
-      terminatorX enters &#34;grab mode&#34;. This mode actually blocks the
-      mouse (as its input is now used to control the real time parameters) and
-      therefore you&#39;ll have to know some mouse/keyboard shortcuts to
-      control the software without the GUI.</para>
+      terminatorX enters "grab mode". This mode actually blocks the mouse (as
+      its input is now used to control the real time parameters) and therefore
+      you'll have to know some mouse/keyboard shortcuts to control the
+      software without the GUI.</para>
 
-      <para>Press <keycap moreinfo="none">ESCAPE</keycap> to quit grab mode.</para>
+      <para>Press <keycap moreinfo="none">ESCAPE</keycap> to quit grab
+      mode.</para>
 
       <para>Select the turntable with input focus: The first turntable to hold
       the input focus will be the first turntable. You can now use <keycap
       moreinfo="none">TAB</keycap> or right mouse button to switch to the next
       turntable. Alternatively you can use <keycap moreinfo="none">F1</keycap>
-      to <keycap moreinfo="none">F12</keycap> to select turntable 1 to 12.</para>
+      to <keycap moreinfo="none">F12</keycap> to select turntable 1 to
+      12.</para>
 
       <para>Now the turntable that has the focus is the one you will
       manipulate with your mouse and keyboard inputs: Note that you can
             <row>
               <entry><keycap moreinfo="none">S</keycap></entry>
 
-              <entry>toggles &#34;Sync Client&#34;</entry>
+              <entry>toggles "Sync Client"</entry>
             </row>
 
             <row>
             <row>
               <entry><keycap moreinfo="none">F</keycap></entry>
 
-              <entry>(&#34;fast&#34;) warp mode (while scratching)</entry>
+              <entry>("fast") warp mode (while scratching)</entry>
             </row>
 
             <row>
               <entry><keycap moreinfo="none">W</keycap></entry>
 
-              <entry>same as above but the audio will be muted while warping</entry>
+              <entry>same as above but the audio will be muted while
+              warping</entry>
             </row>
           </tbody>
         </tgroup>
         </tgroup>
       </table>
 
-      <para>Scratching works as before: press <keycap moreinfo="none">SPACE</keycap>
-      or left mouse button to actually scratch: now your mouse controls the
-      turntables speed. Release it to let that turntable spin at default speed
-      again.</para>
+      <para>Scratching works as before: press <keycap
+      moreinfo="none">SPACE</keycap> or left mouse button to actually scratch:
+      now your mouse controls the turntables speed. Release it to let that
+      turntable spin at default speed again.</para>
     </sect2>
 
     <sect2 id="DRAGNDROP">
       widget that displays the audiodata).</para>
 
       <para>To add a file to the set (== to load the file into a *new*
-      turntable) simply drop the audiofile over the &#34;New Turntable&#34;
-      Button. To load a complete terminatorX-set simply drop the set file
-      (*.tX) over the &#34;Load Set&#34; button.</para>
+      turntable) simply drop the audiofile over the "New Turntable" Button. To
+      load a complete terminatorX-set simply drop the set file (*.tX) over the
+      "Load Set" button.</para>
     </sect2>
 
     <sect2 id="SEQUENCER">
 
       <itemizedlist>
         <listitem>
-          <para>master volume &#38; pitch</para>
+          <para>master volume &amp; pitch</para>
         </listitem>
 
         <listitem>
         </listitem>
 
         <listitem>
-          <para>(turntable) volume &#38; pitch</para>
+          <para>(turntable) volume &amp; pitch</para>
         </listitem>
 
         <listitem>
       <para>To record events simply press the <emphasis>Record</emphasis>
       button of the sequencer, then press the <emphasis>Play</emphasis>
       button. All actions (for sequenceable parameters - see above) you now
-      take will be recorded into the song list. Press <emphasis>Stop</emphasis>
-      and <emphasis>Play</emphasis> again to see/hear how terminatorX plays
-      back the events recorded before. You can now record events again for
-      e.g. another turntable or record other parameters for the same turntable
-      - whatever you want to do. Recording events for parameters for which
-      events have been recorded before will result in dubbing: if you touch a
-      parameter while recording, events previously recorded will be erased
-      from the moment you touch the parameter until you stop recording.</para>
+      take will be recorded into the song list. Press
+      <emphasis>Stop</emphasis> and <emphasis>Play</emphasis> again to
+      see/hear how terminatorX plays back the events recorded before. You can
+      now record events again for e.g. another turntable or record other
+      parameters for the same turntable - whatever you want to do. Recording
+      events for parameters for which events have been recorded before will
+      result in dubbing: if you touch a parameter while recording, events
+      previously recorded will be erased from the moment you touch the
+      parameter until you stop recording.</para>
 
       <para>When recording long sequences/songs you can use the
       sequencer-scale to start recording/playback from any song-position you
       want. To record a single parameter value at a certain position simply
-      move the sequencer-scale to that position, press <emphasis>Record,</emphasis>
-      set the parameter and press <emphasis>Stop</emphasis> again.</para>
+      move the sequencer-scale to that position, press
+      <emphasis>Record,</emphasis> set the parameter and press
+      <emphasis>Stop</emphasis> again.</para>
 
       <para>To selectively delete events from the sequencer see <xref
       linkend="SEQUENCERMENU" /> and <xref linkend="PARAMETERMENU" />.</para>
       <title>Plugins (LADSPA)</title>
 
       <para>Since release 3.70 terminatorX supports LADSPA-plugins. LADSPA is
-      the &#34;Linux Audio Developer&#39;s Simple Plugin API&#34; which was
-      designed by developers on the Linux-Audio-Developer-Mailinglist and is
-      maintained by Richard W.E. Furse. For more information on LADSPA, other
-      LADSPA-hosts and LADSPA-plugins checkout the <ulink
+      the "Linux Audio Developer's Simple Plugin API" which was designed by
+      developers on the Linux-Audio-Developer-Mailinglist and is maintained by
+      Richard W.E. Furse. For more information on LADSPA, other LADSPA-hosts
+      and LADSPA-plugins checkout the <ulink
       url="http://www.ladspa.org">LADSPA homepage</ulink>.</para>
 
       <para>Not every plugin is supported by terminatorX though. As the
       plugins are inserted into the per-turntable effect-queue, they have to
-      be mono or (as of Version 3.82) stereo plugins. This is why terminatorX will
-      load plugins with <emphasis>one</emphasis> or <emphasis>two</emphasis>
-      audio-in ports and <emphasis>one</emphasis> or <emphasis>two</emphasis>
-      audio-out ports only.</para>
+      be mono or (as of Version 3.82) stereo plugins. This is why terminatorX
+      will load plugins with <emphasis>one</emphasis> or
+      <emphasis>two</emphasis> audio-in ports and <emphasis>one</emphasis> or
+      <emphasis>two</emphasis> audio-out ports only.</para>
 
       <para>The decision on whether a plugin is terminatorX-suitable is made
       on terminatorX startup, so only plugins that fit into the effect queue
       will be offered in the mono plugin-menu that pops up when the
       <emphasis>FX</emphasis> button is clicked or in the stereo plugin menu
-      when the <emphasis>Stereo FX</emphasis> button si clicked. Depending on 
-      whether the
-      terminatorX binary you&#39;re using was built with or without liblrdf (<xref
-      linkend="LIBLRDF" />) support the plugin menu will either contain
-      sub-menus with plugin categories (with liblrdf) or just a single menu
-      with the <emphasis>Unclassified</emphasis> category.</para>
+      when the <emphasis>Stereo FX</emphasis> button si clicked. Depending on
+      whether the terminatorX binary you're using was built with or without
+      liblrdf (<xref linkend="LIBLRDF" />) support the plugin menu will either
+      contain sub-menus with plugin categories (with liblrdf) or just a single
+      menu with the <emphasis>Unclassified</emphasis> category.</para>
 
       <para>On startup terminatorX will print some information on the
       LADSPA-plugins analysis process to the standard output if you have
-      enabled &quot;Verbose Plugin Loading&quot; in the Preferences dialog. 
-      Watch the
+      enabled "Verbose Plugin Loading" in the Preferences dialog. Watch the
       terminal you run terminatorX from for that info if you have problems
       loading a plugin.</para>
 
       <para>As specified in the LADSPA-standard LADSPA-plugins can be located
       in multiple directories across the filesystem. To enable LADSPA-hosts to
       find those plugins you have to set the environment variable
-      <envar>LADSPA_PATH</envar> accordingly. Let&#39;s say you store your
-      plugins in <filename moreinfo="none">/usr/lib/ladspa</filename> and
-      <filename moreinfo="none">/home/yourlogin/plugins</filename> then you
-      would have to set:</para>
+      <envar>LADSPA_PATH</envar> accordingly. Let's say you store your plugins
+      in <filename moreinfo="none">/usr/lib/ladspa</filename> and <filename
+      moreinfo="none">/home/yourlogin/plugins</filename> then you would have
+      to set:</para>
 
-      <para><envar>LADSPA_PATH</envar>=<filename moreinfo="none">/usr/lib/ladspa:/home/yourlogin/plugins</filename></para>
+      <para><envar>LADSPA_PATH</envar>=<filename
+      moreinfo="none">/usr/lib/ladspa:/home/yourlogin/plugins</filename></para>
 
       <para>As a fallback terminatorX will look in the standard directories
       <filename moreinfo="none">/usr/lib/ladspa</filename> and <filename
       <sect3 id="LIBLRDF">
         <title>liblrdf support</title>
 
-        <para>Release 3.80 introduces support for Steve Harris&#39; great
-        <ulink url="http://plugin.org.uk/releases/lrdf/">liblrdf</ulink>
-        library which introduces an RDF based scheme to categorize LADSPA
-        plugins. This approach allows storing additional meta-data for LADSPA
-        plugins in separate RDF files. In order to make use of these RDF files
-        a terminatorX binary (compiled with liblrdf support of course)
-        requires the main <filename>ladspa.rdfs</filename> file and additional
-        RDF files containing meta information about the LADSPA plugins
-        installed. Steve Harris&#39; wonderful plugin library comes with such
-        an additional description file for example.</para>
+        <para>Release 3.80 introduces support for Steve Harris' great <ulink
+        url="http://plugin.org.uk/releases/lrdf/">liblrdf</ulink> library
+        which introduces an RDF based scheme to categorize LADSPA plugins.
+        This approach allows storing additional meta-data for LADSPA plugins
+        in separate RDF files. In order to make use of these RDF files a
+        terminatorX binary (compiled with liblrdf support of course) requires
+        the main <filename>ladspa.rdfs</filename> file and additional RDF
+        files containing meta information about the LADSPA plugins installed.
+        Steve Harris' wonderful plugin library comes with such an additional
+        description file for example.</para>
 
         <para>By default terminatorX will search the directories
-        <filename>/usr/share/ladspa/rdf</filename> and <filename>/usr/local/share/ladspa/rdf</filename>
-        for RDF files. In case the files were installed to other locations it
-        is possible to configure the LADSPA RDF path in the
-        <emphasis>Misc</emphasis> tab of the <emphasis>Preferences</emphasis>
-        dialog.</para>
+        <filename>/usr/share/ladspa/rdf</filename> and
+        <filename>/usr/local/share/ladspa/rdf</filename> for RDF files. In
+        case the files were installed to other locations it is possible to
+        configure the LADSPA RDF path in the <emphasis>Misc</emphasis> tab of
+        the <emphasis>Preferences</emphasis> dialog.</para>
 
         <para>If the RDF are read successfully on startup, the LADSPA menu
-        that pops up when clicking a turntable&#39;s <emphasis>FX</emphasis>
+        that pops up when clicking a turntable's <emphasis>FX</emphasis>
         button will feature multiple sub-menus with LADSPA plugin categories
         (eg <emphasis>Amplitude/Amplifier</emphasis>) in which you will find
         the according plugins. Plugins not categorized by the RDF files reside
       <para>Aside of controlling terminatorX with a regular mouse and keyboard
       it is possible to control parameters through MIDI events (since 3.80).
       The MIDI interface is based upon the ALSA sequencer API. On startup
-      terminatorX creates a MIDI input port called &#34;terminatorX&#34;. You
-      can now use for example the <ulink
+      terminatorX creates a MIDI input port called "terminatorX". You can now
+      use for example the <ulink
       url="http://pkl.net/%7Enode/alsa-patch-bay.html">alsa-patch-pay</ulink>
       to connect an output port of your choice (either a hardware MIDI input
       device or a software generating midi events) to the terminatorX input
-      port. If the &#34;<emphasis>Restore MIDI Connections</emphasis>&#34;
-      option is activated terminatorX will try to re-connect to the MIDI ports
-      it was connected to with the last run. However this approach is purely
+      port. If the "<emphasis>Restore MIDI Connections</emphasis>" option is
+      activated terminatorX will try to re-connect to the MIDI ports it was
+      connected to with the last run. However this approach is purely
       address-based and might fail miserably with software ports, in this case
       just disable the configuration options re-wire manually.</para>
 
-      <para>There are two ways to map MIDI events to a parameter:<itemizedlist><listitem><para>Via
-      the <emphasis>Configure MIDI Bindings</emphasis> dialog as described
-      below</para></listitem><listitem><para>Via the the a parameter&#39;s
-      menu (see <xref linkend="PARAMETERMENU" />)</para></listitem></itemizedlist></para>
+      <para>There are two ways to map MIDI events to a parameter:<itemizedlist>
+          <listitem>
+            <para>Via the <emphasis>Configure MIDI Bindings</emphasis> dialog
+            as described below</para>
+          </listitem>
+
+          <listitem>
+            <para>Via the the a parameter's menu (see <xref
+            linkend="PARAMETERMENU" />)</para>
+          </listitem>
+        </itemizedlist></para>
 
       <para>Once the connection is set up terminatorX receives MIDI events
       through the input port. To configure what MIDI events will have which
       effect on a terminatorX turntable you can bind MIDI events to parameters
       of your choice by clicking the <emphasis>MIDI</emphasis> button of the
-      turntable&#39;s audio panel. As a result the <emphasis>Configure MIDI
+      turntable's audio panel. As a result the <emphasis>Configure MIDI
       Bindings</emphasis> dialog will pop up which features a field labelled
       <emphasis>Selected MIDI Event</emphasis> that will frequently update to
       display the contents of the last MIDI event received by terminatorX. So
       wont have to reconfigure your bindings every time you start up
       terminatorX. If you are unhappy with a chosen binding you can select the
       parameter and click the <emphasis>Remove Binding</emphasis> button to
-      get rid of the parameter&#39;s MIDI mapping.</para>
+      get rid of the parameter's MIDI mapping.</para>
 
       <para>TeriminatorX now features a default MIDI mapping that can be
       enabled via the <emphasis>Turntables Menu</emphasis> (see <xref
       <table>
         <title>Default MIDI Controller Mapping</title>
 
-        <tgroup cols="2">
+        <tgroup cols="3">
           <thead>
             <row>
               <entry>Turntable Parameter</entry>
 
       <para>The toggle parameters of a turntable (where things can only be
       turned on or off) are mapped to MIDI NOTE events, where the first
-      turntable is mapped to &#39;C&#39;, the next to &#39;C#&#39;, the next
-      to &#39;D&#39; and so on. The &#34;function&#34; of the toggle is
-      defined via the selected MIDI channel:</para>
+      turntable is mapped to 'C', the next to 'C#', the next to 'D' and so on.
+      The "function" of the toggle is defined via the selected MIDI
+      channel:</para>
 
       <table>
         <title>Default MIDI Note On/Off Mapping</title>
 
       <para>If you want to use your joystick to control terminatorX - I wrote
       a tiny tool to create MIDI events from joystick motion called
-      <emphasis>aseqjoy</emphasis>. It&#39;s available from the <ulink
+      <emphasis>aseqjoy</emphasis>. It's available from the <ulink
       url="http://terminatorX.cx/aseqjoy.html">terminatorX website</ulink>,
       too.</para>
     </sect2>
     <sect2 id="JACKSUPPORT">
       <title>JACK Support</title>
 
-      <para>TerminatorX Version 3.81 brings support for the
-      <emphasis>JACK Audio Connection Kit</emphasis>. Instead of writing audio
-      data directly to some audio device terminatorX can send data to the JACK
-      Daemon for further processing.</para>
+      <para>TerminatorX Version 3.81 brings support for the <emphasis>JACK
+      Audio Connection Kit</emphasis>. Instead of writing audio data directly
+      to some audio device terminatorX can send data to the JACK Daemon for
+      further processing.</para>
 
       <para>To use the JACK backend you have to ensure that the JACK Daemon is
       up and running before you start terminatorX. The JACK backend is only
       available if terminatorX was capable of connecting to the JACK Daemon on
       startup. By default the two output ports of terminatorX will be
       connected to physical ports if available. You can then re-wire the ports
-      whatever way you want. They will not be deactivated - when
-      terminatorX&#39; audio engine is turned off, the audio backend emits
-      continuous silence.</para>
+      whatever way you want. They will not be deactivated - when terminatorX'
+      audio engine is turned off, the audio backend emits continuous
+      silence.</para>
     </sect2>
   </sect1>
 
       use. Currently there are three options: the OSS (Open Sound System)
       backend, the ALSA (Advanced Linux Sound Architecture) backend and the
       JACK (JACK Audio Connection Kit) backend. Some of these options might
-      not be available, if your terminatorX binary wasn&#39;t compiled to
-      support a certain backend.</para>
+      not be available, if your terminatorX binary wasn't compiled to support
+      a certain backend.</para>
 
       <para>The OSS and ALSA backends have dedicated configuration tabs, JACK
       requires no further configuration - for more details on JACK support see
       <para>The value for the <emphasis>Buffersize</emphasis> setting will be
       evaluated as 2^buffersize by OSS. So if you set the value to
       <emphasis>8</emphasis> the actual buffer size will be 2^8=256 Bytes. The
-      smaller the buffers&#39; size the better terminatorX will perform. The
+      smaller the buffers' size the better terminatorX will perform. The
       default setting of <emphasis>9</emphasis> should be acceptable in most
-      conditions, but if you here &#34;clicks&#34;, or &#34;drops&#34; in
-      audio output that are not related to your sample-material you will have
-      to increase the buffer size. On the other hand if you believe
-      terminatorX does not react fast enough you have to decrease this
-      parameter.</para>
+      conditions, but if you here "clicks", or "drops" in audio output that
+      are not related to your sample-material you will have to increase the
+      buffer size. On the other hand if you believe terminatorX does not react
+      fast enough you have to decrease this parameter.</para>
 
       <para>Additionally you can select the sampling rate you want terminatorX
       to operate on - note that recording to disk will use the same sample
       <emphasis>Buffer Time</emphasis> option lets you set the size for the
       complete ring buffer, while the <emphasis>Period Time</emphasis>
       determines how many audio samples will be transferred to the audio
-      device per cycle. I&#39;m not really sure on what kind of settings to
-      recommend, however I had best results when setting the
-      <emphasis>Period Time</emphasis> to 3rd or half of the
-      <emphasis>Buffer Time</emphasis>.</para>
-
-      <para>It&#39;s advisable to set the <emphasis>Buffer Time</emphasis> to
-      at least the double of the <emphasis>Period Time</emphasis>, but for a
-      more detailed description check out the ALSA documentation.</para>
+      device per cycle. I'm not really sure on what kind of settings to
+      recommend, however I had best results when setting the <emphasis>Period
+      Time</emphasis> to 3rd or half of the <emphasis>Buffer
+      Time</emphasis>.</para>
+
+      <para>It's advisable to set the <emphasis>Buffer Time</emphasis> to at
+      least the double of the <emphasis>Period Time</emphasis>, but for a more
+      detailed description check out the ALSA documentation.</para>
     </sect2>
 
     <sect2 id="INPUTTAB">
       <title><emphasis>Input</emphasis> Tab</title>
 
       <para>Between rendering and outputting these blocks terminatorX checks
-      for mouse motion. The problem with mice is: they don&#39;t report when
-      they have stopped. This is why terminatorX assumes your mouse has
-      stopped if there is no motion reported for certain amount of
-      render/output-cycles. This value is configurable via the
+      for mouse motion. The problem with mice is: they don't report when they
+      have stopped. This is why terminatorX assumes your mouse has stopped if
+      there is no motion reported for certain amount of render/output-cycles.
+      This value is configurable via the
       <emphasis>Stop-sense-cycles</emphasis> option. If you decrease your
       buffersize of course you shorten the cycle time as well, therefore if
       you here strange stop/run behaviour of the audio output while scratching
       <para>XInput Device: <emphasis>WARNING:</emphasis> Use this option
       *only* if you want to use an input device other than your default-mouse
       for scratching. Selecting your default pointer will cause terminatorX to
-      crash. See the &#34;Using a turntable&#34; section on the terminatorX
-      homepage for details.</para>
+      crash. See the "Using a turntable" section on the terminatorX homepage
+      for details.</para>
     </sect2>
 
     <sect2 id="USERINTERFACETAB">
       <title><emphasis>User Interface</emphasis> Tab</title>
 
-      <para>With <emphasis>Update Idle</emphasis> / <emphasis>Update Delay</emphasis>
-      you can configure GUI responsiveness: Higher <emphasis>Update Idle</emphasis>
-      will cause the wave display (position display) and flash-widgets to
-      update less often. Higher <emphasis>Update Delay</emphasis> values will
-      cause the parameter widgets to update less often.</para>
+      <para>With <emphasis>Update Idle</emphasis> / <emphasis>Update
+      Delay</emphasis> you can configure GUI responsiveness: Higher
+      <emphasis>Update Idle</emphasis> will cause the wave display (position
+      display) and flash-widgets to update less often. Higher <emphasis>Update
+      Delay</emphasis> values will cause the parameter widgets to update less
+      often.</para>
     </sect2>
 
     <sect2 id="colors">
-      <title><emphasis>Audio Colors</emphasis> and <emphasis>VU Colors</emphasis>
-      Tab</title>
+      <title><emphasis>Audio Colors</emphasis> and <emphasis>VU
+      Colors</emphasis> Tab</title>
 
       <para>Since Version 3.81 it is possible to configure the colors
-      terminatorX&#39; audio widgets. Simply click on the color you want to
-      modify and select the tone you prefer.</para>
+      terminatorX' audio widgets. Simply click on the color you want to modify
+      and select the tone you prefer.</para>
     </sect2>
 
     <sect2 id="MISCTAB">
       <title><emphasis>Misc</emphasis> Tab</title>
 
       <para>You can now enter the soundfile editor of your choice in the
-      &#34;Sound file editor&#34; field. This editor will be started when
-      clicking the <emphasis>Edit</emphasis>-button in the main panel of the
-      vtt-gui. If you enter for example &#34;myeditor&#34; terminatorX will
-      run &#34;myeditor sample_in_vtt.wav&#34;.</para>
+      "Sound file editor" field. This editor will be started when clicking the
+      <emphasis>Edit</emphasis>-button in the main panel of the vtt-gui. If
+      you enter for example "myeditor" terminatorX will run "myeditor
+      sample_in_vtt.wav".</para>
 
       <para>The <emphasis>LADSPA RDF Path</emphasis> defines where liblrdf
       will look for the RDF files for LADPSA Plugins.</para>
       terminatorX will use zlib to compress set files. This is very usefull
       for sets that have many events recorded.</para>
 
-      <para>See <xref linkend="MIDI" /> for more details on
-      <emphasis>Restore MIDI Connections</emphasis>. If you disable the
-      <emphasis>Ask for &#34;Quit&#34; Confirmation</emphasis> option
-      terminatorX will no longer ask if you really want to quit.</para>
+      <para>See <xref linkend="MIDI" /> for more details on <emphasis>Restore
+      MIDI Connections</emphasis>. If you disable the <emphasis>Ask for "Quit"
+      Confirmation</emphasis> option terminatorX will no longer ask if you
+      really want to quit.</para>
     </sect2>
   </sect1>
 
   <sect1 id="CONTACT">
     <title>Contact / Download</title>
 
-    <para>Find out more about terminatorX at it&#39;s <ulink
+    <para>Find out more about terminatorX at it's <ulink
     url="http://www.terminatorX.cx">homepage</ulink>.</para>
 
     <para>Send me comments, bug-reports, patches or scratches (see scratches
-    section on the terminatorX homepage) at: <email>alex@lisas.de</email></para>
+    section on the terminatorX homepage) at:
+    <email>alex@lisas.de</email></para>
   </sect1>
-</article>
+</article
\ No newline at end of file
index 96212c7a31619a4ddbe5a41f312f7f83c907cb3d..026fa56936252d5f66e39a05aa473c734aeb6457 100644 (file)
@@ -80,8 +80,8 @@ void LADSPA_Class::init() {
                LADSPA_Class::scandir(buffer);
                free (buffer); 
     
-       start = end;
-       if (*start == ':') start++;
+               start = end;
+               if (*start == ':') start++;
        }
        
        if (rdf_files.size() > 0) {
index cef6e88ee853cb0519f8cda004b26d4deeee3cf3..834ecd0b4c3f1787ac16d956f874952be8264ac0 100644 (file)
@@ -1076,35 +1076,36 @@ gboolean tX_seqpar::tX_seqpar_press(GtkWidget *widget, GdkEventButton *event, gp
                gtk_widget_set_sensitive(item, FALSE);
 #endif
 
-               item = gtk_check_menu_item_new_with_label("Map MIDI Reversed");
+               
+               item = gtk_menu_item_new_with_label("Remove MIDI Binding");
                gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
                gtk_widget_show(item);          
 
                if (sp->bound_midi_event.type==tX_midievent::NONE) {
                        gtk_widget_set_sensitive(item, FALSE);
                }
-               
-               gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), sp->get_reverse_midi());
-               
 #ifdef USE_ALSA_MIDI_IN
-               g_signal_connect(item, "activate", (GCallback) tX_seqpar::reverse_midi_binding, sp);            
+               g_signal_connect(item, "activate", (GCallback) tX_seqpar::remove_midi_binding, sp);             
 #else
                gtk_widget_set_sensitive(item, FALSE);
 #endif
 
-               
-               item = gtk_menu_item_new_with_label("Remove MIDI Binding");
+               item = gtk_check_menu_item_new_with_label("Map MIDI Reversed");
                gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
                gtk_widget_show(item);          
 
                if (sp->bound_midi_event.type==tX_midievent::NONE) {
                        gtk_widget_set_sensitive(item, FALSE);
                }
+               
+               gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), sp->get_reverse_midi());
+               
 #ifdef USE_ALSA_MIDI_IN
-               g_signal_connect(item, "activate", (GCallback) tX_seqpar::remove_midi_binding, sp);             
+               g_signal_connect(item, "activate", (GCallback) tX_seqpar::reverse_midi_binding, sp);            
 #else
                gtk_widget_set_sensitive(item, FALSE);
 #endif
+
                if (!sp->is_boolean) {
                        item = gtk_menu_item_new();
                        gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
index 35093aa1fa3ae006bc358b5dff99f2133f73611b..2dd43e3d42e18a6ca99ea680924b0408ad11c4b7 100644 (file)
@@ -195,12 +195,13 @@ vtt_class :: vtt_class (int do_create_gui)
        
        do_scratch=0;
        speed_last=1;
-       speed_real=1;\r
+       speed_real=1;
 }
 
 vtt_class :: ~vtt_class()
 {
        vtt_fx *effect;
+       vtt_fx_stereo_ladspa *stereo_effect;
        stop();
 
        main_list.remove(this);
@@ -217,6 +218,12 @@ vtt_class :: ~vtt_class()
                fx_list.remove(effect);
                delete effect;
        }
+
+       while (stereo_fx_list.size()) { 
+               stereo_effect=(*stereo_fx_list.begin());
+               stereo_fx_list.remove(stereo_effect);
+               delete stereo_effect;
+       }
        
        if (sync_master==this) {
                sync_master=NULL;
@@ -1573,7 +1580,7 @@ int vtt_class :: load_all(xmlDocPtr doc, char *fname) {
                                gtk_box_pack_start(GTK_BOX(control_parent), vtt->gui.control_box, TRUE, TRUE, 0);
                                gtk_box_pack_start(GTK_BOX(audio_parent), vtt->gui.audio_box, TRUE, TRUE, 0);
                                if (vtt->audio_hidden) vtt->hide_audio(vtt->audio_hidden);
-                               if (vtt->control_hidden) vtt->hide_control(vtt->control_hidden);\r
+                               if (vtt->control_hidden) vtt->hide_control(vtt->control_hidden);
                        }
                        if ((!elementFound) && (xmlStrcmp(cur->name, (xmlChar *) "sequencer")==0)) {
                                elementFound=1;
index f1ca0cc707acf0e358bb17c080a2c811406f3755..f6f04910217d680d31d08cdd4ac2bb7ee45707bf 100644 (file)
@@ -1032,7 +1032,7 @@ void build_vtt_gui(vtt_class *vtt)
        gui_set_tooltip(g->lp_enable, "Click here to enable the built-in lowpass effect.");
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(g->lp_enable), vtt->lp_enable);
        p->add_client_widget(vg_create_fx_bar(vtt, vtt->lp_fx, 0));
-       g_signal_connect(G_OBJECT(g->lp_enable), "button_press_event", (GtkSignalFunc) tX_seqpar::tX_seqpar_press, &vtt->sp_ec_enable); 
+       g_signal_connect(G_OBJECT(g->lp_enable), "button_press_event", (GtkSignalFunc) tX_seqpar::tX_seqpar_press, &vtt->sp_lp_enable); 
 
        p->add_client_widget(g->lp_enable);