]> Shamusworld >> Repos - ardour-manual-diverged/commitdiff
Sync with master branch.
authorShamus Hammons <jlhamm@acm.org>
Sat, 14 Jan 2017 23:31:07 +0000 (17:31 -0600)
committerShamus Hammons <jlhamm@acm.org>
Sat, 14 Jan 2017 23:31:07 +0000 (17:31 -0600)
Now synchronized with commit bbc044f232daa0ae7feb97e79e02368e531fee94.

32 files changed:
implode
implode.cpp
include/ableton-push2.html [new file with mode: 0644]
include/behringer-devices-in-mackielogic-control-mode.html [new file with mode: 0644]
include/calculating-feedback-and-strip-types-values.html [new file with mode: 0644]
include/controlling-ardour-with-osc.html
include/devices-not-listed.html [new file with mode: 0644]
include/devices-using-mackielogic-control-protocol.html [new file with mode: 0644]
include/feedback-in-osc.html [new file with mode: 0644]
include/mackie-control-setup-on-linux.html [new file with mode: 0644]
include/menu-actions-list.html [new file with mode: 0644]
include/midi-binding-maps.html [new file with mode: 0644]
include/midi-learn.html [new file with mode: 0644]
include/osc-control-in-ardour-4.7-and-prior.html [moved from include/controlling-ardour-with-osc-4.7-and-prior.html with 99% similarity]
include/osc-control.html [new file with mode: 0644]
include/osc-personal-monitoring.html [new file with mode: 0644]
include/osc-setup-dialog.html [new file with mode: 0644]
include/parameter-types-in-osc.html [new file with mode: 0644]
include/presonus-faderport.html [new file with mode: 0644]
include/querying-ardour-with-osc.html [new file with mode: 0644]
include/selection-considerations-in-osc.html [new file with mode: 0644]
include/ssl-nucleus.html [new file with mode: 0644]
include/working-with-encoders.html [new file with mode: 0644]
include/working-with-extenders.html [new file with mode: 0644]
master-doc.txt
source/css/app.css
source/images/detailed-editor-window.png [new file with mode: 0644]
source/images/detailed-mixer-window.png [new file with mode: 0644]
source/images/global-editor-window-split.png [new file with mode: 0644]
source/images/global-mixer-window-split.png [new file with mode: 0644]
source/images/ruler.png [new file with mode: 0644]
source/images/summary.png [new file with mode: 0644]

diff --git a/implode b/implode
index c9b87955c75c93d283bfe9da360bd4090cdf6b5f..a63c3a8315eef4cf4faa43bbf32c99c1b6efd3e8 100755 (executable)
Binary files a/implode and b/implode differ
index f845c1e09c6d3746ae33a0373fc89f27835d39dd..1f48395c5b350e8eb4073ac0b2092b18e6449f9a 100644 (file)
@@ -95,8 +95,8 @@ void CopyFileToStream(char * from, FILE * toFile)
        fseek(fromFile, 0, SEEK_END);
        long length = ftell(fromFile);
        rewind(fromFile);
-       long skipped = SkipHeader(fromFile);
-       skipped = ftell(fromFile);
+       SkipHeader(fromFile);
+       long skipped = ftell(fromFile) - 1;
 
        for(long i=skipped; i<length; i++)
                fputc(fgetc(fromFile), toFile);
diff --git a/include/ableton-push2.html b/include/ableton-push2.html
new file mode 100644 (file)
index 0000000..92549ef
--- /dev/null
@@ -0,0 +1,366 @@
+---
+layout: default
+title: Using the Ableton Push 2
+menu_title: Ableton Push 2
+---                        
+
+<p>
+  <img alt="the Ableton Push 2 surface" src="/images/push2-main.jpg">
+</p>
+<p>
+  Since version 5.4, Ardour has had extensive support for the Ableton
+  Push2. This is an expensive but beautifully engineered control
+  surface primarily targetting the workflow found in Ableton's Live
+  software and other similar tools such as Bitwig. As of version 5.4,
+  Ardour does not offer the same kind of workflow, so we have designed
+  our support for the Push 2 around mixing and editing and musical
+  performance, without the clip/scene oriented approach in Live. This
+  may change in future versions of Ardour.
+</p>
+
+<h2>Connecting the Push 2</h2>
+<p>
+  Plug the USB cable from the Push 2 into a USB2 or USB3 port on your
+  computer. For brighter backlighting, also plug in the power supply
+  (this is not necessary for use). 
+</p>
+<p>
+  The Push 2 will be automatically recognized by your operating
+  system, and will appear in any of the lists of possible MIDI ports
+  in both Ardour and other similar software.
+</p>
+<p>
+  To connect the Push 2 to Ardour, open the Preferences dialog, and
+  then click on "Control Surfaces". Click on the "Enable" button
+  in the line that says "Ableton Push 2" in order to activate Ardour's
+  Push 2 support. 
+</p>
+<p>
+  Once you select the input and output port, Ardour will initialize
+  the Push 2 and it will be ready to use. You only need do this
+  once: once these ports are connected and your session has been
+  saved, the connections will be made automatically in this and other
+  future sessions.
+</p>
+
+<h2>Push 2 Configuration</h2>
+<p>
+  The only configuration option at this time is whether the pads send
+  aftertouch or polyphonic pressure messages. You can alter this
+  setting via the Push 2 GUI, accessed by double-clicking on the "Push
+  2" entry in the control surfaces list.
+<p>
+<img alt="the Push 2 configuration dialog"
+     src="/images/push2-gui.png">
+</p>
+
+<h2>Basic Concepts</h2>
+<p>
+  With the Push 2 support in Ardour 5.4, you can do the following
+  things:
+  <dl>
+    <dt>Perform using the 8 x 8 pad "grid"</dt>
+    <dd>The Push 2 has really lovely pressure-sensitive pads that can
+    also generate either aftertouch or note (polyphonic) pressure.</dd>
+    <dt>Global Mixing</dt>
+    <dd>See many tracks at once, and control numerous parameters for each.</dd>
+    <dt>Track/Bus Mixing</dt>
+    <dd>View a single track/bus, with even more parameters for the track.</dd>
+    <dt>Choose the mode/scale, root note and more for the pads</dt>
+    <dd>37 scales are available. Like Live, Ardour offers both
+    "in-key" and "chromatic" pad layouts.</dd>
+  </dl>
+
+  ... plus a variety of tasks related to transport control, selection,
+  import, click track control and more.
+</p>
+
+<h2>Musical Performance</h2>
+<p>
+  Messages sent from the 8x8 pad grid and the "pitch bend bar" are
+  routed to a special MIDI port within Ardour called "Push 2 Pads"
+  (no extra latency is incurred from this routing). Although you can
+  manually connect this port to whatever you wish, the normal
+  behaviour of Ardour's Push 2 support is to connect the pads to the
+  most recently selected MIDI track.
+</p>
+<p>
+  This means that to play a soft-synth/instrument plugin in a given
+  MIDI track with the Push 2, you just need to select that track.
+</p>
+<p>
+  If multiple MIDI tracks are selected at once, the first selected
+  track will be used. Note that messages originating from all other
+  controls on the Push 2 will <em>not</em> not be delivered to the
+  "Push 2 Pads" port. This makes no difference in practice, because
+  the other controls do not send messages that are useful for musical
+  performance. 
+</p>
+
+<h2>Global Mix</h2>
+<p>
+  This is the default mode that Ardour will start the Push 2 in. In
+  this mode, the 8 knobs at the top of the device, the 8 buttons below
+  them, the video display and the 8 buttons below that are combined to
+  provide a global view of the session mix.
+</p>
+<p>
+  <img alt="global mix mode on Push2 screen"
+       src="/images/push2-globalmix.png">
+</p>
+<p>
+  The upper buttons are labelled by text in the video display just
+  below them. Pressing one of the buttons changes the function of the
+  knobs, and the parameters that will shown for each track/bus in the
+  display.
+</p>
+<p>
+  As of Ardour 5.4, the possible parameters are:
+  <dl>
+    <dt>Volumes</dt>
+    <dd>The display shows a knob and text displaying
+      the current gain setting for the track, and a meter that
+      corresponds precisely to the meter shown in the Ardour GUI for
+      that track. Changing the meter type (e.g. from Peak to K12) in the
+      GUI will also change it in the Push 2 display. The physical knob
+      will alter track/bus gain.
+    </dd>
+    <dt>Pans</dt>
+    <dd>The display shows a knob indicating the pan direction/azimuth
+    for the corresponding track/bus. Turning the physical knob will
+    pan the track left and right. If the track/bus has no panner
+    (i.e. it has only a single output), no knob is shown and the
+    physical knob will do nothing. </dd>
+    <dt>Pan Widths</dt>
+    <dd><p>For tracks with 2 outputs, the display will show a knob
+       indicating the pan width setting for the corresponding
+       track/bus. The physical knob can be turned to adjust the
+       width. 
+      </p>
+      <p>
+       Unlike many DAWs, Ardour's stereo panners have "width"
+       parameter that defaults to 100%. You cannot change the pan
+       direction/azimuth of a track with 100% width, but must first
+       reduce the width in order to pan it. Similarly, a track panned
+       anywhere other than dead center has limits on the maximum
+       width setting. If these concepts are not familiar to you,
+       please be aware than many DAWs use a "panner" that actually
+       implement "balance" and not "panning", hence the difference.
+      </p>
+    </dd>
+    <dt>A Sends</dt>
+    <dd>The display shows a knob indicating the gain level for the
+      first send in that track. If the track has no send, no knob will
+      be shown, and the physical knob for that track will do nothing.
+    </dd>
+    <dt>B Sends, C Sends, D Sends</dt>
+    <dd>Like "A Sends", but for the 2nd, 3rd and 4th sends of a
+      track/bus respectively.
+    </dd>
+  </dl>
+</p>
+<p>
+  To change which tracks are shown while in global mix mode, use the
+  left and right arrow/cursor keys just below and to the right of the
+  display. Tracks and busses that are hidden in Ardour's GUI will also
+  be hidden from display on the Push 2.
+</p>
+<p>
+  To select a track/bus directly from the Push 2, press the
+  corresponding button below the display. The track name will be
+  highlighted, and the selection will change in Ardour's GUI as well
+  (and also any other control surfaces).
+</p>
+
+<h3>Soloing and Muting in Global Mix mode</h3>
+<p>
+  The Solo and Mute buttons to the left of the video display can be
+  used to solo and mute tracks while in Global Mix mode. The operation
+  will be applied to the <em>first</em> currently selected
+  track(s).
+</p>
+<p>
+  There are two indications that one or more tracks are soloed:
+  <ol>
+    <li>The solo button will blink red</li>
+    <li>Track names will be prefixed by "*" if they are soloed, and
+      "-" if they are muted due to soloing.</li>
+  </ol>
+</p>
+<p>
+  To cancel solo, either:
+  <ul>
+    <li>Select the soloed track(s) and press the solo button
+      again</li>
+    <li>Press and hold the solo button for more than 1 second</li>
+  </ul>
+</p>
+
+<h2>Track Mix</h2>
+<p>Track Mix mode allows you to focus on a single track in more detail
+  than is possible in Global Mix mode. To enter (or leave) Track Mix
+  mode, press the "Mix" button.
+</p>
+<p>
+
+</p>
+<p>
+  In Track Mix mode, various aspects of the state of the first
+  selected track/bus will be displayed on the Push 2. Above the
+  display, the first 4 knobs control track volume (gain), pan
+  directiom/azimuth, pan width, and where appropriate, track input
+  trim. 
+</p>
+<p>
+  Below the display, 7 buttons provide immediate control of mute,
+  solo, rec-enable, monitoring (input or disk or automatic), solo
+  isolate and solo safe state. When a a track is muted due to other
+  track(s) soloing, the mute button will flash (to differentiate from
+  its state when it is explicitly muted). 
+</p>
+<p>
+  The video display also shows meters for the track, which as in
+  Global Mix mode, precisely match the meter type shown in Ardour's
+  GUI. There are also two time displays showing the current playhead
+  position in both musical (beats|bars|ticks) format, and as
+  hours:minutes:seconds.
+</p>
+<p>
+  To change which track is visible in Track Mix mode, use the
+  left/right arrow/cursor keys just below and to the right of the
+  video display.
+</p>
+
+<h2>Scale Selection</h2>
+<p>
+  Press the Scale button to enter Scale mode. The display will look
+  like this:
+</p>
+<p>
+  <img alt="track mix mode on Push2 screen"
+       src="/images/push2-scale.png">
+</p>
+<p>
+  In the center, 37 scales are presented. Scroll through them by
+  either using the cursor/arrow keys to the lower right of the
+  display, or the knobs above the display. The scale will change
+  dynamically as you scroll. You can also scroll in whole pages using
+  the upper right and upper left buttons above the display (they will
+  display "<" and ">" if scrolling is possible).
+</p>
+<p>
+  To change the root note of the scale, press the corresponding button
+  above or below the video display.The button will be lit to indicate
+  your selection (and the text will be highlighted).
+</p>
+<p>
+  By default, Ardour configures the Push 2 pads to use "in-key" mode,
+  where all pads correspond to notes "in" the chosen scale. Notes
+  corresponding to the root note, or the equivalent note in higher
+  octaves, are highlighted with the color of the current target MIDI
+  track.
+</p>
+<p>
+  In
+  "chromatic" mode, the pads correspond to a continuous sequence of
+  notes starting with your selected root note. Pads corresponding to
+  notes in the scale are illuminated; those corresponding to the root
+  note are lit with the color the current target MIDI track. Other
+  pads are left dark, but you can still play them.
+</p>
+<p>
+  To switch between them, press button on the lower left of the video
+  display; the text above it will display the current mode (though it
+  is usually visually self-evident from the pad lighting pattern).
+</p>
+<p>
+  To leave Scale mode, press the "Scale" button again. You may also
+  use the upper left button above the display, though if you have
+  scrolled left, it may require more than one press.
+</p>
+
+<h2>Specific Button/Knob Functions</h2>
+
+<p>
+  In addition to the layouts described above, many (but not all) of
+  the buttons and knobs around the edges of the Push 2 will carry out
+  various functions related to their (illuminated) label. As of Ardour
+  5.4, this includes:
+  <dl>
+    <dt>Metronome (button and adjacent knob)</dt>
+    <dd>
+      Enables/disables the click (metronome). The knob directly above
+      it will control the volume (gain) of the click.
+    </dd>
+    <dt>Undo/Redo</dt>
+    <dd>
+      Undo or redo the previous editing operation. 
+    </dd>
+    <dt>Delete</dt>
+    <dd>
+      Deletes the currently selected region, or range, or
+      note. Equivalent to using Ctrl/Cmd-x on the keyboard.
+    </dd>
+    <dt>Quantize</dt>
+    <dd>
+      If a MIDI region is selected in Ardour, this will open the
+      quantize dialog.
+    </dd>
+    <dt>Duplicate</dt>
+    <dd>
+      Duplicates the current region or range selection.
+    </dd>
+    <dt>Rec-Enable</dt>
+    <dd>
+      Enables and disables Ardour's global record enable state.
+    </dd>
+    <dt>Play</dt>
+    <dd>
+      Starts and stops the transport. Press Shift-Play to return to
+      the session start.
+    </dd>
+    <dt>Add Track</dt>
+    <dd>
+      Opens Ardour's Add Track/Bus dialog.
+    </dd>
+    <dt>Browse</dt>
+    <dd>
+      Open's Ardour's import dialog to select and audition existing
+      audio and MIDI files.
+    </dd>
+    <dt>Master</dt>
+    <dd>
+      Pressing this button jumps directly to Track Mix mode, with the
+      master out bus displayed.
+    </dd>
+    <dt>Cursor arrows</dt>
+    <dd>
+      These are used by some modes to navigate within the display (e.g
+      Scale mode). In other modes, the up/down cursor arrows will
+      scroll the GUI display up and down, while the left/right cursor
+      arrows will generally scroll within the Push 2 display itself.
+    </dd>
+    <dt>Repeat</dt>
+    <dd>
+      Enables/disables loop playback. This will follow Ardour's "loop
+      is mode" preference, just like the loop button in the Ardour
+      GUI. 
+    </dd>
+    <dt>Octave buttons</dt>
+    <dd>
+      These shift the root note of the current pad scale up or down by
+      1 octave. 
+    </dd>
+    <dt>Page buttons</dt>
+    <dd>
+      These scroll Ardour's editor display left and right along the
+      timeline. 
+    </dd>
+    <dt>Master (top right) knob</dt>
+    <dd>
+      This knob controls the gain/volume of Ardour's main output. If
+      the session has a monitor saec
+    </dd>
+  </dl>
+</p>
+
diff --git a/include/behringer-devices-in-mackielogic-control-mode.html b/include/behringer-devices-in-mackielogic-control-mode.html
new file mode 100644 (file)
index 0000000..39d0ce5
--- /dev/null
@@ -0,0 +1,262 @@
+---
+layout: default
+title: Behringer devices in Mackie/Logic Control Mode
+menu_title: Behringer devices
+---                        
+
+<h2>Behringer BCF-2000 Faders Controller</h2> 
+<p>
+  <img alt="Digramatic Image of the BCF2000"
+     src="/images/BCF2000.png">
+</p>
+<p>
+  The Behringer BCF-2000 Fader Controller is a control surface with 8 motorized 
+  faders, 8 rotary encoders and 30 push buttons. The device is a class
+  compliant USB Midi Interface and also has standard Midi DIN IN/OUT/THRU  ports.
+  The device has included a Mackie/Logic Control Emulation Mode since firmware v1.06.
+  If you're devices firmware is older than v1.06 it will require an update before
+  Mackie Control Emulation will work as described here.
+</p>
+<p>
+  <img alt="Digramatic Image of the BCF2000 in Edit Global Mode"
+     src="/images/BCF2000-EG.png">
+</p>
+
+<p>
+  In order to put the controller into Mackie/Logic control mode turn on the 
+  unit while holding third button from the left in the top most row
+  of buttons (under the rotary encoder row). Hold the button down until <dfn>EG</dfn>
+  or edit global mode is displayed on the LCD screen of the unit. The global parameters
+  can then be edited using the 8 rotary encoders in the top row. 
+</p>
+  <ul>
+    <li><code>
+      Encoder #1 sets the operating mode and should be set to <dfn>U-1</dfn> or
+      USB mode 1 if using with a USB cable connection.
+    </li></code>
+    <li><code>
+      Encoder #3 sets the foot switch mode and should most likely be set to
+      <dfn>Auto</dfn> to detect how the foot switch is wired. 
+    </li></code>
+    <li><code>
+      Encoder #5 sets the device id, if you are using only 1 device the id
+      should be set to <dfn>ID 1</dfn>. If you are using multiple BCF/BCR2000 each
+      device is required to be set up sequentially and one at a time.
+    </li></code>
+    <li><code>      
+      Encoder #7 controls the MIDI <dfn>Dead Time</dfn> or the amount of milliseconds
+      after a move has been made that the device ignores further changes, this 
+      should be set to <dfn>100</dfn>.
+    </li></code>
+    <li><code>
+      Encoder #8 controls the MIDI message <dfn>Send Interval</dfn> in milliseconds
+      and should be set to <dfn>10</dfn>
+    </li></code>
+  </ul>
+<p>
+  To exit the <dfn>EG</dfn> mode press the <dfn>Exit</dfn> button. The device is now
+  ready to use with Ardour.
+</p>
+
+<h3>Modes of Operation</h3>
+<p>
+  <img alt="Digramatic Image of the BCF2000 Control Modes"
+     src="/images/BCF2000-Modes.png">
+</p>
+<p>
+  The four buttons arranged in a rectangle and located under the Behringer logo 
+  are the mode selection buttons in Logic Control Emulation Mode,
+  currently Ardour has implemented support for two of these modes.
+</p>
+<p>
+The surface can be broken into 8 groups of controls.
+</p>
+
+<ol>
+  <li>The rotary encoders at the top of the device</li>
+  <li>The first row of buttons under the encoders</li>
+  <li>The second row of buttons under the encoders</li>
+  <li>The row of motorized faders<li>
+  <li>
+    The group of 4 buttons at the top right that will be
+    referred to here as the <dfn>Shift Group</dfn>
+  </li>
+  <li>
+    The group of 4 buttons under the <dfn>Shift Group</dfn>
+    referred to here as the <dfn>Mode Group</dfn>
+  </li>
+  <li>
+    The group of 2 buttons under the <dfn>Mode Group</dfn>
+    referred to here as the <dfn>Select Group</dfn>
+  </li>
+  <li>
+    The group of 4 buttons under the <dfn>Select Group</dfn>
+    referred to here as the <dfn>Transport Group</dfn>
+  </li>
+</ol>
+
+<h3>Mixer Pan Mode</h3>
+<p>
+  <img alt="Digramatic Image of the BCF2000 Control Modes"
+     src="/images/BCF2000-Pan.png">
+</p>
+<p>
+  This is the standard work mode that organizes the control surface to emulate
+  a standard mixer layout where controls for each track/bus are arranged vertically.
+  The order of the faders is either controlled by the order of the tracks in the
+  mixer or can be set manually by the user.
+</p>
+<dl>
+  <dt>Encoders</dt>
+  <dd>Mixer Pans. The red LEDs show the amount of pan left or right</dd>
+  <dt>First Row of Buttons</dt>
+  <dd>Mixer Mutes. The button led lights if the track is currently muted</dd>
+  <dt>Second Row of Buttons</dt>
+  <dd>Select Active Track/Bus. Currently selected track/bus is indicated by the button led</dd>
+  <dt>Faders</dt>
+  <dd>Mixer Gains</dd>
+  <dt>Shift Group</dt>
+  <dd>
+    The top and bottom left buttons are the simply shifts to change the function of other buttons
+  </dd>
+  <dd>
+    The top right is the <dfn>Fine Control</dfn> button that allows the increment values sent by
+    by rotary encoders and faders to be a small value for more precise editing. This button
+    can also act as a shift button.
+  </dd>
+  <dd>
+    The bottom right is the <dfn>Global Shift</dfn> button that allows you to change back to the
+    standard Mixer Pan view from other views and modes. This button can also act as a shift button.
+  </dd>
+  <dt>Mode Group</dt>
+  <dd>The top two buttons functions are not currently implemented in Ardour.</dd>
+  <dd>The bottom left button sets the device to <dfn>Pan</dfn> mode and should currently be lit</dd>
+  <dd>
+    The bottom right button sets the device to <dfn>Send</dfn> mode but will only allow the switch
+    if the currently selected track/bus has a send or sends to control.
+  </dd>
+  <dt>Select Group</dt>
+  <dd>
+    In this mode they function as bank select left and right. If your session has more than 8 tracks
+    the next set of 8 tracks is selected with the right button and the faders will move to match the
+    current gain settings of that bank of 8 tracks/busses. If the last bank contains less than 8 
+    tracks/busses the unused  faders will move to the bottom and the pan lights will all turn
+    off. An unlimited amount of tracks can be controlled with the device.
+  </dd>
+  <dt>Transport Group</dt>
+  <dd>The upper left button controls <dfn>Rewind<dfn>.
+  <dd>The upper right button controls <dfn>Fast Foreword</dfn>
+  <dd>The lower left button controls stop</dd>
+  <dd>The lower right button controls play</dd>
+</dl>
+<h3>Send Mode</h3>
+<p>
+  <img alt="Digramatic Image of the Send Mode"
+     src="/images/BCF2000-Send.png">
+</p>
+<p>
+  Send mode allows for the top row of encoders to control the sends for a selected channel.
+  One interesting option is to flip the controls from the encoders to the faders by pressing
+  the shift 1 button and the global view button at the same time.
+</p>
+<dl>
+  <dt>Encoders</dt>
+  <dd>
+    In send mode, the encoders control sends from left to right instead of mixer pans.
+    If there are less than 8 sends the behavior of the encoder will be to continue controlling
+    the mixer pan. Visually it's indicated by the change in the LED from originating at the 12
+    o'clock position to originating at the 7 o'clock position. If <dfn>FLIP</dfn> is pressed 
+    the encoder will control the mixer gain for the selected track/bus.
+  </dd>
+  <dt>First row of buttons</dt>
+  <dd>No Change</dd>
+  <dt>Second row of buttons</dt>
+  <dd>No Change.</dd>
+  <dt>Faders</dt>
+  <dd>
+    No change unless <dfn>FLIP</dfn>is pressed then it controls the send for the selected track/bus.
+  </dd>
+  <dt>Shift Group</dt>
+  <dd>No Change</dd>
+  <dt>Select Group</dt>
+  <dd>No Change</dd>
+  <dt>Transport Group</dt>
+  <dd>No Change</dd>
+</dl>
+<h3>Mixer Pan While Holding Shift 1</h3>
+<p>
+  <img alt="Digramatic Image of the Mixer Mode while holding down shift 1"
+     src="/images/BCF2000-Shift1.png">
+</p>
+<p>
+  The operations of various buttons change while holding down the <dfn>Shift 1</dfn> button
+</p>
+<dl>
+  <dt>Encoders</dt>
+  <dd>No Change</dd>
+  <dt>First row of buttons</dt>
+  <dd>These now control the Soloing of each track/bus in the current bank</dd>
+  <dt>Second row of buttons</dt>
+  <dd>These now control the Enable Record for each track</dd>
+  <dt>Faders</dt>
+  <dd>No Change</dd>
+  <dt>Shift Group</dt>
+  <dd>No change</dd>
+  <dt>Mode Group</dt>
+  <dd>No Change</dd>
+  <dt>Select Group</dt>
+  <dd>
+    These now change the current bank of tracks being controlled over by
+    one. So if you where controlling tracks 1-8 a push the right
+    button the surface would now control tracks 2-9 pressing the left
+    would then shift back to controlling tracks 1-8.
+  </dd>
+  <dt>Transport Group</dt>
+  <dd>The upper left now controls turning on and off <dfn>Loop</dfn> mode.</dd>
+  <dd>
+    The upper right now toggles
+    <dfn>Click</dfn>.
+  </dd>
+  <dd>The lower left toggles <dfn>Replace</dfn>.</dd>
+  <dd>
+    The lower right toggles
+    <dfn>Global Record</dfn>.
+  </dd>
+</dl>
+<h3>Mixer Pan While Holding Shift 2</h3>
+<p>
+  <img alt="Digramatic Image of the Mixer Mode while holding down shift 2"
+     src="/images/BCF2000-Shift2.png">
+</p>
+<p>
+  The operations of various buttons change while holding down the <dfn>Shift 2</dfn> button
+</p>
+<dl>
+  <dt>Encoders</dt>
+  <dd>No Change</dd>
+  <dt>First row of buttons</dt>
+  <dd>FIX ME</dd>
+  <dt>Second row of buttons</dt>
+  <dd>These now control setting up different <dfn>Views</dfn>. See bellow for more info</dd>
+  <dt>Faders</dt>
+  <dd>No Change</dd>
+  <dt>Shift Group</dt>
+  <dd>No change</dd>
+  <dt>Mode Group</dt>
+  <dd>No Change</dd>
+  <dt>Select Group</dt>
+  <dd>Left button controls <dfn>Undo</dfn>(NEEDS VERIFIED)</dd>
+  <dt>Transport Group</dt>
+  <dd>FIX ME</dd>
+  <dd>FIX ME</dd>
+  <dd>FIX ME</dd>
+  <dd>FIX ME</dd>
+</dl>
+<h3>Views</h3>
+<p>
+  <img alt="Digramatic Image of the LED display for different Views"
+     src="/images/BCF2000-Views.png">
+</p>
+<p>
+  FIX ME
+</p>
\ No newline at end of file
diff --git a/include/calculating-feedback-and-strip-types-values.html b/include/calculating-feedback-and-strip-types-values.html
new file mode 100644 (file)
index 0000000..91a9b70
--- /dev/null
@@ -0,0 +1,143 @@
+---
+layout: default
+title: OSC&#58; Feedback and Strip-types Values
+---
+
+<p><em>/set_surface</em> has two values the user needs to calculate before
+  use. In general these will not be calculated at run time, but
+  beforehand. There may be more than one button with different values
+  to turn various kinds of feedback on or off or to determine which
+  kinds of strips are currently viewed/controlled.
+</p>
+<p>Both ,<em>feedback</em> and <em>strip-types</em> use bitsets to keep
+  track what they are doing. Any number in a computer is made out of
+  bits that are on or off, but we represent them as normal base 10
+  numbers. Any one bit turned on will add a unique value to the
+  number as a whole. So for each kind of feedback or strip type
+  to be used, that number should be added to the total.</p>
+<h3>strip_types</h3>
+<p>
+  strip_types is an integer made up of bits. The easy way to
+  deal with this is to think of strip_types items being worth a number and
+  then adding all those numbers together for a value to send.
+  Strip Types will determine What kind of strips will be included in
+  bank. This would include: Audio, MIDI, busses, VCAs, Master, Monitor
+  and hidden or selected strips.
+</p>
+  <ul>
+       <li>
+               1       - AudioTracks.
+       </li>
+       <li>
+               2       - MidiTracks.
+       </li>
+       <li>
+               4       - AudioBuses.
+       </li>
+       <li>
+               8       - MidiBuses.
+       </li>
+       <li>
+               16      - VCAs.
+       </li>
+       <li>
+               32      - Master.
+       </li>
+       <li>
+               64      - Monitor.
+       </li>
+       <li>
+               128     - Audio Aux.
+       </li>
+       <li>
+               256     - Selected.
+       </li>
+       <li>
+               512     - Hidden.
+       </li>
+  </ul>
+<p class="note">
+  Selected and Hidden bits are normally not needed as Ardour defaults to
+  showing Selected strips and not showing Hidden strips. The purpose of
+  these two flags is to allow showing only Selected strips or only
+  Hidden strips. Using Hidden with other flags will allow Hidden strips
+  to show inline with other strips.
+</p>
+<p>
+  Some handy numbers to use might be: 15 (all tracks and buses), 31
+  (add VCAs to that). Master or Monitor strips are generally not useful
+  on a surface that has dedicated controls for these strips as there are
+  /master* and /monitor* commands already. However, on a surface with
+  just a bank of fader strips, adding master or monitor would allow
+  access to them within the banks. Selected would be useful for working
+  on a group or a set of user selected strips. Hidden shows strips the
+  GUI has hidden.
+</p>
+<p class-"note">
+  Audio Aux? say what? I am sure most people will have noticed that they
+  can find no <em>Aux</em> strips in the Ardour mixer. There are none.
+  There are buses that can be used a number of ways. From analog days,
+  in OSC, a bus is something that gets used as a sub mix before ending up
+  going to Master. An auxiliary bus is used like a separate mixer and
+  it's output goes outside the program or computer to be used as:
+  a monitor mix, a back up recording, or what have you. In OSC where
+  controller strips may be limited, it may be useful not to use up a
+  strip for an aux that is not really a part of the mix. It is also
+  useful to get a list of only aux buses if the control surface is a
+  phone used to provide talent monitor mix control on stage. Each
+  performer would be able to mix their own monitor. The user is free
+  to enable both buses and auxes if they would prefer.
+</p>
+
+<h3>feedback</h3>
+<p>Feedback is an integer made up of bits. The easy way to
+  deal with this is to think of feedback items being worth a number and
+  then adding all those numbers together for a value to send.
+</p>
+  <ul>
+       <li>
+               1 - Button status for strips.
+       </li>
+       <li>
+               2 - Variable control values for strips.
+       </li>
+       <li>
+               4 - Send SSID as path extension.
+       </li>
+       <li>
+               8 - heartbeat to surface.
+       </li>
+       <li>
+               16 - Enable master section feedback.
+       </li>
+       <li>
+               32 - Send Bar and Beat.
+       </li>
+       <li>
+               64 - Send timecode.
+       </li>
+       <li>
+               128 - Send meter as dB (-193 to +6) or 0 to 1 depending on gainmode
+       </li>
+       <li>
+               256 - Send meter a 16 bit value where each bit is a level
+               and all bits of lower level are on. For use in a LED strip. This
+               will not work if the above option is turned on.
+       </li>
+       <li>
+               512 - Send signal present, true if level is higher than -40dB
+       </li>
+       <li>
+               1024 - Send position in samples
+       </li>
+       <li>
+               2048 - Send position in time, hours, minutes, seconds and milliseconds
+       </li>
+       <li>
+               8192 - Turn on extra select channel feedback beyond what a /strip supports
+       </li>
+  </ul>
+<p>
+  So using a value of 19 would turn on feedback for strip and master
+  controls, but leave meters, timecode and bar/beat feedback off.
+</p>
index edf802a827bc7bea3a85a971ad075ddb2cdc36f1..194960fd7b8071c2529915d202b8bf3dc4283b76 100644 (file)
 ---
+layout: default
 title: Controlling Ardour with OSC
 ---
 
 <p>
-  <abbr title="Open Sound Control"><dfn>OSC</dfn></abbr> lets synthesizers 
-  and other devices communicate with Ardour. OSC devices can send commands 
-  relating to playback (such as play or stop), performance (such as volume, 
+  <abbr title="Open Sound Control"><dfn>OSC</dfn></abbr> lets synthesizers
+  and other devices communicate with Ardour. OSC devices can send commands
+  relating to playback (such as play or stop), performance (such as volume,
   play, stop, and almost any other function (such as Edit, or Undo).
 </p>
 
-<p class="note">
-  <em>Note:</em> OSC control has changed dramatically since Ardour 4.7.
-  The Path structure has been completely redone, Banking has been introduced,
-  The controller is now able to tell Ardour what kind of feedback it can
-  work with (including bank size) and two new math styles have been added
-  to gain controls. If you are using an Ardour version of 4.7 or less,
-  please read <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/osc-control-in-ardour-4.7-and-prior/">
-  Osc control in ardour 4.7 and prior.</a>
-</p>
-
-<p>
-  Ardour is probably one of the most OSC-controllable audio applications 
-  around, but as with all OSC-controllable apps, you can't do much without 
-  knowing what <dfn>messages</dfn> can be sent. This document describes the 
-  various categories of messages that Ardour understands. It is subject to 
-  change, particularly the "Actions" part below, since this relates to the 
-  GTK GUI for Ardour rather than the backend.
-</p>
-
-<h2>Connecting to Ardour via OSC</h2>
-
-<p>
-  OSC support is not enabled by default, but can be turned on via 
-  <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>. 
-  Once enabled, Ardour will listen on port <code>3819</code> by default. 
-  This port number can be changed by editing <code>$ARDOUR_CONFIG</code> 
-  and adding this line within the <code>&lt;Config&gt;</code> section:
-</p>
-
-<kbd class="input">&lt;Option name="osc-port" value="<em>Your choice
-here</em>"/&gt;</kbd>
-
-<p>
-  Ardour sends any feedback to the port and address that sent any
-  feedback request. The port does not have to match Ardour's port. In
-  fact it is better not to. This means that Ardour can deal with more
-  than one controller at a time. The two controllers can bank
-  independently and even use different math for faders. This could be
-  used to allow talent to adjust their own monitor mix using a tablet
-  or phone that can run an OSC controller. For a full explanation of
-  how Ardour's feedback works please read <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/feedback-in-osc/">
-  OSC feedback In Ardour.</a>
-</p>
-
-<h2>Control Surface Set Up</h2>
-
-<p>
-  Control surface set up allows the controller to tell Ardour about it's
-  capabilities. The surface can tell Ardour how many control strips it
-  has for banking, if it is capable of setting it's faders or buttons
-  to values set by Ardour's GUI or automation, What kind of math the
-  faders use and more.
-</p>
-
-<p>
-  Any time the <em>/set_surface</em> command is sent, the current bank
-  is recalculated and if feedback is turned on, the values of each
-  strip's controls are sent (or refreshed) as well. This will also
-  refresh the Master feedback setup.
-</p>
-
-<p class="note">
-  Surface Port Setting is available in the OSC GUI.
-</p>
-
-<p>
-  As of Ardour 5.1, There is now a GUI setup in response to those using
-  tablets with applications such as touchOSC or AndrOSC who need to be
-  able to set a port for Ardour to send to. It can also change the
-  default setting for set_surface. For more information about Ardour's
-  OSC configuration GUI please read <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/osc-setup-dialog/">
-  Ardour's Setup Dialog.</a>
-</p>
-
-<p>If /set_surface is not sent, the default values are used:
-  <ul>
-         <li><em>Bank Size</em>: 0&mdash;No banking (or infinite bank size).</li>
-         <li><em>Strip Types</em>: All strip types except hidden and special.</li>
-         <li><em>Feedback</em>: 0&mdash;All off.</li>
-         <li><em>Fader Mode</em>: 0&mdash;gain in dB (not relevant with feedback off)</li>
-  </ul>
-</p>
-
-<p>
-  These values give the same behaviour as prior versions of Ardour. (or the closest possible)
-</p>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/set_surface <em>bank_size</em> <em>strip_types</em>
-  <em>feedback</em> <em>fadermode</em></kbd></dt>
-  <dd>
-         See below for an explanation of each parameter.
-  </dd>
-</dl>
-
-<h3>bank_size</h3>
-
-<p>
-  Bank Size is the number of channel strips the controller supports
-  without banking. Setting this to 0 turns banking off by setting the
-  bank size to infinite.
-</p>
-
-<p class="note">
-       Bank size can also be set with <em>/set_surface/bank_size size.</em>
-</p>
-
-<h3>strip_types</h3>
-
-<p>
-  strip_types is an integer made up of bits. The easy way to
-  deal with this is to think of strip_types items being worth a number and
-  then adding all those numbers together for a value to send.
-  Strip Types will determine what kind of strips will be included in
-  bank. This would include: Audio, MIDI, buses, VCAs, Master, Monitor
-  and hidden or selected strips.
-</p>
-
-<p>
-  Aside from setting the track types for the main mix assignments, using
-  /set_surface/strip_types with more than one surface button will allow
-  switching between modes for example: inputs only, buses only,
-  selected only, hidden only, by having the buttons send values of: 3,
-  12, 256, 512. A full mix button might have a value 31.
-</p>
-
-<p>
-  While Master and Monitor are listed as possibilities, most surfaces
-  will not use them. Using /master and /monitor makes more sense.
-  However, in the case where there are no master or monitor fader strips
-  on the surface, it may be necessary to include them in the banked
-  strips.
-</p>
-
-<p>Please see: <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
-  Calculating Feedback and Strip-types Values.</a>
-</p>
-
-<p class="note">
-       Strip types can also be set with <em>/set_surface/strip_types types.</em>
-</p>
-
-<h3>feedback</h3> 
-
-<p>Feedback is an integer made up of bits. The easy way to
-  deal with this is to think of feedback items being worth a number and
-  then adding all those numbers together for a value to send.
-</p>
-
-<p>Please see: <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
-  Calculating Feedback and Strip-types Values.</a>
-</p>
-
-<p class="note">
-       Feedback can also be set with <em>/set_surface/feedback feedback.</em>
-</p>
-
-<h3>gainmode</h3>
-
-<p>
-  Gainmode is a an int that acts as a bool:
-  <ul>
-         <li><em>0 (or false)</em> dB value as a float from -193 to +6. Sent as
-         /strip/gain SSID value. (-193 or below are the same as -inf)</li>
-         <li><em>1 (or true)</em> A positional fader based on the same math
-         as Ardour's GUI.  An Float from 0 to 1. Sent as
-         /strip/fader SSID value</li>
-  </ul>
-</p>
-
-<p>
-  Gainmode applies only to feedback values. The controller can choose
-  which gain math to use by choosing to use the /*/gain or /*/fader path
-  to send to Ardour. This makes sure a controller that doesn't set up
-  Ardour's OSC can still use either math. The gainmode for feedback also
-  determines the path Ardour uses for feedback so that the feedback
-  messages match the control messages.
-</p>
-
-<p class="note">
-       Gain mode can also be set with <em>/set_surface/gainmode gainmode.</em>
-</p>
-
-<h2>Querying Ardour for information</h2>
-
-<p>
-  The control Surface may wish to control the type a frequency of
-  updates it receives. It can do this with querying commands. See: <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a>
-</p>
-  
-<h2>List of OSC messages</h2>
-
-<p class="note">
-       Parameter types show how the value will be used. However, they may
-       be sent as a different type if needed, see: <a
-       href="/using-control-surfaces/controlling-ardour-with-osc/parameter-types-in-osc/">
-       Parameter Types in OSC.</a>
-</p>
-
-<h3>Master or Global messages</h3>
-
-<h4>Transport Control</h4>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/transport_stop</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/transport_play</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/toggle_roll</kbd></dt>
-  <dd>Toggles between play and stop</dd>
-  <dt><kbd class="osc">/set_transport_speed <em>s</em></kbd></dt>
-  <dd>where <em>s</em> is a float ranging from -8.0f to 8.0f</dd>
-  <dt><kbd class="osc">/ffwd</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/rewind</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/goto_start</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/goto_end</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/jump_bars <em>bars</em></kbd></dt>
-  <dd>Where <em>bars</em> is a float (+/-) of the number of bars to jump</dd>
-  <dt><kbd class="osc">/jump_seconds <em>seconds</em></kbd></dt>
-  <dd>Where <em>seconds</em> is a float (+/-) of the number of seconds to jump</dd>
-  <dt><kbd class="osc">/add_marker</kbd></dt>
-  <dd>(adds marker to the current transport position)</dd>
-  <dt><kbd class="osc">/remove_marker</kbd></dt>
-  <dd>Removes marker at the current transport position (if there is one)</dd>
-  <dt><kbd class="osc">/mark_in</kbd></dt>
-  <dd>Marks the begining of a range at the current transport position</dd>
-  <dt><kbd class="osc">/mark_out</kbd></dt>
-  <dd>Marks the end of a range at the current transport position</dd>
-  <dt><kbd class="osc">/next_marker</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/prev_marker</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/locate <em>spos</em> <em>roll</em></kbd></dt>
-  <dd>where <em>spos</em> is the target position in samples and
-  <em>roll</em> is a bool/integer defining whether you want transport 
-  to be kept rolling or not</dd>
-  <dt><kbd class="osc">/loop_toggle</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/loop_location <em>start</em> <em>end</em></kbd></dt>
-  <dd><em>start</em> is the beginning of a loop and <em>end</em> is the
-  end of a loop both are integer frame positions.</dd>
-  <dt><kbd class="osc">/set_loop_range</kbd></dt>
-  <dd>Uses edit range as loop range</dd>
-  <dt><kbd class="osc">/set_session_range</kbd></dt>
-  <dd>Uses edit range as session range</dd>
-  <dt><kbd class="osc">/toggle_click</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/midi_panic</kbd></dt>
-  <dd>Ardour will send an all notes off to all midi tracks</dd>
-  <dt><kbd class="osc">/cancel_all_solos</kbd></dt>
-  <dd>Cancel All Solos/PFLs/AFLs</dd>
-</dl>
-
-<h4>Transport Information</h4>
-
-<dl>
-  <dt><kbd class="osc">/transport_frame</kbd></dt>
-  <dd>Ardour sends /transport_frame <em>current_frame</em></dd>
-  <dt><kbd class="osc">/transport_speed</kbd></dt>
-  <dd>Ardour sends /transport_speed <em>speed</em></dd>
-  <dt><kbd class="osc">/record_enabled</kbd></dt>
-  <dd>Ardour sends /record_enabled <em>recordenable_status</em></dd>
-</dl>
-
-<h4>Editing-related</h4>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/undo</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/redo</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/save_state</kbd></dt>
-  <dd>(this is the regular <kbd class="menu">Session &gt; Save</kbd>
-  operation)</dd>
-  <dt><kbd class="osc">/quick_snapshot_switch</kbd></dt>
-  <dd>Take a snapshot and switch to new version</dd>
-  <dt><kbd class="osc">/quick_snapshot_stay</kbd></dt>
-  <dd>Take a snapshot and keep working on this version</dd>
-  <dt><kbd class="osc">/fit_*_track(s)</kbd></dt>
-  <dd>Were <em>*</em> is one of 1, 2, 4, 8, 16, 32 or all. Fits this
-  many tracks in editor window. (add s for more than 1)</dd>
-  <dt><kbd class="osc">/zoom_*</kbd></dt>
-  <dd>Zoom editor to include <em>*</em> where <em>*</em> is 100_ms, 1_sec,
-  10_sec, 1_min, 5_min, 10_min or to_session</dd>
-  <dt><kbd class="osc">/temporal_zoom_in</kbd></dt>
-  <dd>Zoom editor in to show less time</dd>
-  <dt><kbd class="osc">/temporal_zoom_out</kbd></dt>
-  <dd>Zoom editor out to show more time</dd>
-  <dt><kbd class="osc">/scroll_up_1_track</kbd></dt>
-  <dd>Scroll the editor pane up 1 track</dd>
-  <dt><kbd class="osc">/scroll_up_1_page</kbd></dt>
-  <dd>Scroll the editor pane up 1 page</dd>
-  <dt><kbd class="osc">/scroll_dn_1_track</kbd></dt>
-  <dd>Scroll the editor pane down 1 track</dd>
-  <dt><kbd class="osc">/scroll_dn_1_page</kbd></dt>
-  <dd>Scroll the editor pane down 1 page</dd>
-</dl>
-
-<h4>Recording control</h4>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/toggle_punch_in</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/toggle_punch_out</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/set_punch_range</kbd></dt>
-  <dd>Uses edit range as punch range</dd>
-  <dt><kbd class="osc">/rec_enable_toggle</kbd></dt>
-  <dd></dd>
-  <!--dt><kbd class="osc">/toggle_all_rec_enables</kbd></dt>
-  <dd>(toggles all tracks' recording state)</dd-->
-  <dt><kbd class="osc">/stop_forget</kbd></dt>
-  <dd>Stop transport and delete/forget last take</dd>
-</dl>
-
-<h4>Master and Monitor strip control</h4>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/master/gain <em>dB</em></kbd></dt>
-  <dd>See gain in strips</dd>
-  <dt><kbd class="osc">/master/fader  <em>position</em></kbd></dt>
-  <dd>See fader in strips</dd>
-  <dt><kbd class="osc">/master/trimdB <em>dB</em></kbd></dt>
-  <dd>see trimdb in strips</dd>
-  <dt><kbd class="osc">/master/pan_stereo_position <em>position</em></kbd></dt>
-  <dd>See pan_stereo_position in strips</dd>
-  <dt><kbd class="osc">/master/mute  <em>yn</em></kbd></dt>
-  <dd>See mute in strips</dd>
-  <dt><kbd class="osc">/monitor/gain <em>dB</em></kbd></dt>
-  <dd>See gain in strips</dd>
-  <dt><kbd class="osc">/monitor/fader  <em>position</em></kbd></dt>
-  <dd>See fader in strips</dd>
-</dl>
-
-<h3>Track specific operations</h3>
-
-<p>
-  For each of the following, <em>ssid</em> is the Surface Strip ID for the track
-</p>
-
-<p class="note">
-  SSID has a different meaning than RID in Ardour version 4.7 and before.
-  Effectively, banking is always being used and the SSID is generated on
-  the fly. The SSID is the position of the strip within bank as an int
-  1 to bank size. There are no gaps as there have been in the past.
-  Depending on the value of strip_types sent to Ardour, Master and
-  Monitor, may be included in the list of SSIDs or not as set in
-  <em>/set_surface</em>.
-</p>
-
-<p class="note">
-  Some Surfaces (many Android applets) are not able to deal with more
-  than one parameter in a command. However, the two parameter commands
-  below can also be sent as /strip/command/ssid param. In this case the
-  param should be a float even if an int is required below.
-</p>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/bank_up </kbd></dt>
-  <dd>Change bank to the next higher bank.</dd>
-  <dt><kbd class="osc">/bank_down </kbd></dt>
-  <dd>Change bank to the next lower bank.</dd>
-  <dt><kbd class="osc">/strip/mute <em>ssid</em> <em>mute_st</em></kbd></dt>
-  <dd>where <em>mute_st</em> is a bool/int representing the desired mute state of the track</dd>
-  <dt><kbd class="osc">/strip/solo <em>ssid</em> <em>solo_st</em></kbd></dt>
-  <dd>where <em>solo_st</em> is a bool/int representing the desired solo state of the track</dd>
-  <dt><kbd class="osc">/strip/solo_iso <em>ssid</em> <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the desired solo isolate state of the track</dd>
-  <dt><kbd class="osc">/strip/solo_safe <em>ssid</em> <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the desired solo safe/lock state of the track</dd>
-  <dt><kbd class="osc">/strip/monitor_input <em>ssid</em> <em>monitor_st</em></kbd></dt>
-  <dd>where <em>monitor_st</em> is a bool/int where 1 is forced input monitoring.</dd>
-  <dt><kbd class="osc">/strip/monitor_disk <em>ssid</em> <em>monitor_st</em></kbd></dt>
-  <dd>where <em>monitor_st</em> is a bool/int where 1 is forced disk monitoring. When input and disk are both off, 
-  Auto monitoring is enabled.</dd>
-  <dt><kbd class="osc">/strip/recenable <em>ssid</em> <em>rec_st</em></kbd></dt>
-  <dd>where <em>rec_st</em> is a bool/int representing the desired rec state of the track</dd>
-  <dt><kbd class="osc">/strip/record_safe <em>ssid</em> <em>rec_st</em></kbd></dt>
-  <dd>where <em>rec_st</em> is a bool/int representing the desired record safe state of the track</dd>
-  <dt><kbd class="osc">/strip/polarity <em>ssid</em> <em>invert</em></kbd></dt>
-  <dd>where <em>invert</em> is a bool/int representing the desired polarity of the track</dd>
-  <dt><kbd class="osc">/strip/gain <em>ssid</em>  <em>gain</em></kbd></dt>
-  <dd>where <em>gain</em> is a float ranging from -193 to 6 representing the desired gain of the track in dB.</dd>
-  <dt><kbd class="osc">/strip/fader <em>ssid</em>  <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the fader control position.</dd>
-  <dt><kbd class="osc">/strip/trimdB <em>ssid</em>  <em>trim_db</em></kbd></dt>
-  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the desired trim of the track in dB.</dd>
-  <dt><kbd class="osc">/strip/pan_stereo_position <em>ssid</em> <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan position of the track</dd>
-  <dt><kbd class="osc">/strip/pan_stereo_width <em>ssid</em> <em>width</em></kbd></dt>
-  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the desired pan width of the track</dd>
-  <dt><kbd class="osc">/strip/send/gain <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
-  ranging from -193 to +6 representing the desired gain in dB for the send</dd>
-  <dt><kbd class="osc">/strip/send/fader <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
-  ranging from 0 to 1 representing the desired position for the send as a fader</dd>
-  <dt><kbd class="osc">/strip/send/enable <em>ssid</em> <em>sendid</em> <em>state</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>state</em> is 1 for enabled and 0 for disabled</dd>
-  <dt><kbd class="osc">/strip/list </kbd></dt>
-  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a></dd>
-  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
-  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a></dd>
-  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
-  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a></dd>
-  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
-  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a></dd>
-  <dt><kbd class="osc">/strip/plugin/descriptor <em>ssid</em></kbd></dt>
-  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
-  Querying Ardour with OSC.</a></dd>
-  <dt><kbd class="osc">/strip/plugin/reset <em>ssid</em> <em>piid</em> </kbd></dt>
-  <dd>where <em>piid</em> = nth Plugin, will reset all values to the plugin's original values</dd>
-  <dt><kbd class="osc">/strip/plugin/activate <em>ssid</em> <em>piid</em> </kbd></dt>
-  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to active</dd>
-  <dt><kbd class="osc">/strip/plugin/deactivate <em>ssid</em> <em>piid</em> </kbd></dt>
-  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to inactive</dd>
-  <dt><kbd class="osc">/strip/plugin/parameter <em>ssid</em> <em>piid</em> <em>param</em> <em>value</em></kbd></dt>
-  <dd>where <em>piid</em> = nth Plugin, <em>param</em> = nth param, <em>value</em>
-  is a float ranging from 0 to 1 representing the desired parameter value</dd>
-  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>name</em></kbd></dt>
-  <dd>where <em>name</em> is a string for the desired name of the track</dd>
-</dl>
-
-<h3>Selected Strip Operations</h3>
-
-<p>
-  New for Ardour 5, A whole set of operations that work on the selected
-  or expanded strip.
-</p>
-
-<p class="note">
-  Selected strip operations are complex enough for their own page.
-  Please read: <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/selection-considerations-in-osc/">
-  Selection Considerations in OSC.</a> This is most important if more
-  than one OSC surface is being used with Ardour.
-</p>
-
-<p>
-  There are two kinds of selection in OSC. GUI selection and local
-  expansion. By default expansion follows selection.
-  <ul>
-       <li>
-               GUI selection: Use <em>/strip/select</em> to set.  Selecting
-               a strip in the GUI will set OSC surface select and the surface
-               will set GUI selection as well.
-       </li>
-       <li>
-               Local expansion: Use <em>/strip/expand</em> to expand a strip
-               without changing overall selection. When /strip/expand is set
-               to 0 or false, the select channel will go back to using the
-               strip selected by the GUI. While expand is turned on,
-               selecting a strip on the GUI does not
-               select the OSC strip. Sending a /strip/select message will
-               override the expand as if it had been set to false.
-               Good for more than one OSC controller at a time.
-       </li>
-  </ul>
-</p>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/strip/select <em>ssid</em> <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> = 1 for select. Sets both GUI select and strip
-  to expanded mode. (0 is ignored)</dd>
-  <dt><kbd class="osc">/strip/expand <em>ssid</em> <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> = 1 for expanded mode. Sets only local strip to
-  Expanded. Setting to 0 resets the expansion to follow selection.</dd>
-  <dt><kbd class="osc">/select/expand <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> = 1 for expanded mode, 0 for Select mode.</dd>
-  <dt><kbd class="osc">/select/recenable <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
-  <dt><kbd class="osc">/select/record_safe <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for safe and 0 for unlocked</dd>
-  <dt><kbd class="osc">/select/mute <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
-  <dt><kbd class="osc">/select/solo <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
-  <dt><kbd class="osc">/select/solo_iso <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the desired solo isolate state of the track</dd>
-  <dt><kbd class="osc">/select/solo_safe <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the desired solo safe/lock state of the track</dd>
-  <dt><kbd class="osc">/select/monitor_input <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for monitor from input and 0 for auto</dd>
-  <dt><kbd class="osc">/select/monitor_disk <em>y/n</em></kbd></dt>
-  <dd>Where <em>y/n</em> is 1 for monitor from disk and 0 for auto</dd>
-  <dt><kbd class="osc">/select/polarity <em>invert</em></kbd></dt>
-  <dd>where <em>invert</em> is a bool/int representing the desired polarity of the track</dd>
-  <dt><kbd class="osc">/select/gain <em>gain</em></kbd></dt>
-  <dd>Where <em>gain</em> is a float ranging from -193 to 6 representing the desired gain of the track in dB.</dd>
-  <dt><kbd class="osc">/select/fader <em>position</em></kbd></dt>
-  <dd>Where <em>position</em> is an float ranging from 0 to 1 representing the fader control position.</dd>
-  <dt><kbd class="osc">/select/trimdB <em>trim_db</em></kbd></dt>
-  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the desired trim of the track in dB.</dd>
-  <dt><kbd class="osc">/select/pan_stereo_position <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan position of the track</dd>
-  <dt><kbd class="osc">/select/pan_stereo_width <em>width</em></kbd></dt>
-  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the desired pan width of the track</dd>
-  <dt><kbd class="osc">/select/pan_elevation_position <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan elevation of the track</dd>
-  <dt><kbd class="osc">/select/pan_frontback_position <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired front to back position of the track</dd>
-  <dt><kbd class="osc">/select/pan_lfe_control <em>value</em></kbd></dt>
-  <dd>where <em>value</em> is a float ranging from 0 to 1 representing the desired LFE control value for the track</dd>
-  <dt><kbd class="osc">/select/send_gain", <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
-  ranging from -193 to +6 representing the desired gain in dB for the send</dd>
-  <dt><kbd class="osc">/select/send_fader", <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
-  ranging from 0 to 1 representing the desired position for the send as a fader</dd>
-  <dt><kbd class="osc">/select/send_enable", <em>sendid</em> <em>state</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>state</em> is 1 for enabled and 0 for disabled</dd>
-</dl>
-
-<h3>Menu actions</h3>
-
-<p>
-  Every single menu item in Ardour's GUI is accessible via OSC. There is
-  a single common syntax to trigger the action as if it was selected
-  with the mouse (or keyboard):
-</p>
-
-<kbd class="osc">/access_action <em>action_name</em></kbd>
-
-<p>
-  The list below shows all available values of <em>action-name</em> as of
-  June 2016 for Ardour 5.0.pre0.1. You can get the current list at any
-  time by running Ardour with the -b flag.
-</p>
-
-<dl class="bindings">
-       <dt><strong>Action Name</strong></dt><dd><strong>Menu Name</strong></dd>
-  <!-- ProcessorMenu - ok -->
-  <dt><kbd class="osc">ProcessorMenu/ab_plugins</kbd></dt><dd>A/B Plugins</dd>
-  <dt><kbd class="osc">ProcessorMenu/activate_all</kbd></dt><dd>Activate All</dd>
-  <dt><kbd class="osc">ProcessorMenu/clear</kbd></dt><dd>Clear (all)</dd>
-  <dt><kbd class="osc">ProcessorMenu/clear_post</kbd></dt><dd>Clear (post-fader)</dd>
-  <dt><kbd class="osc">ProcessorMenu/clear_pre</kbd></dt><dd>Clear (pre-fader)</dd>
-  <dt><kbd class="osc">ProcessorMenu/controls</kbd></dt><dd>Controls</dd>
-  <dt><kbd class="osc">ProcessorMenu/copy</kbd></dt><dd>Copy</dd>
-  <dt><kbd class="osc">ProcessorMenu/cut</kbd></dt><dd>Cut</dd>
-  <dt><kbd class="osc">ProcessorMenu/deactivate_all</kbd></dt><dd>Deactivate All</dd>
-  <dt><kbd class="osc">ProcessorMenu/delete</kbd></dt><dd>Delete</dd>
-  <dt><kbd class="osc">ProcessorMenu/deselectall</kbd></dt><dd>Deselect All</dd>
-  <dt><kbd class="osc">ProcessorMenu/edit-generic</kbd></dt><dd>Edit with generic controls...</dd>
-  <dt><kbd class="osc">ProcessorMenu/edit</kbd></dt><dd>Edit...</dd>
-  <dt><kbd class="osc">ProcessorMenu/newaux</kbd></dt><dd>New Aux Send ...</dd>
-  <dt><kbd class="osc">ProcessorMenu/newinsert</kbd></dt><dd>New Insert</dd>
-  <dt><kbd class="osc">ProcessorMenu/newplugin</kbd></dt><dd>New Plugin</dd>
-  <dt><kbd class="osc">ProcessorMenu/newsend</kbd></dt><dd>New External Send ...</dd>
-  <dt><kbd class="osc">ProcessorMenu/paste</kbd></dt><dd>Paste</dd>
-  <dt><kbd class="osc">ProcessorMenu/rename</kbd></dt><dd>Rename</dd>
-  <dt><kbd class="osc">ProcessorMenu/selectall</kbd></dt><dd>Select All</dd>
-  <dt><kbd class="osc">ProcessorMenu/send_options</kbd></dt><dd>Send Options</dd>
-  <!-- Common - updated -->
-  <dt><kbd class="osc">Common/Hide</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/NewMIDITracer</kbd></dt><dd>MIDI Tracer</dd>
-  <dt><kbd class="osc">Common/Quit</kbd></dt><dd>Quit</dd>
-  <dt><kbd class="osc">Common/Save</kbd></dt><dd>Save</dd>
-  <dt><kbd class="osc">Common/ToggleMaximalEditor</kbd></dt><dd>Maximize Editor Space</dd>
-  <dt><kbd class="osc">Common/ToggleMaximalMixer</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/ToggleMixerList</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/ToggleMonitorSection</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack10</kbd></dt><dd>Toggle Record Enable Track 10</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack11</kbd></dt><dd>Toggle Record Enable Track 11</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack12</kbd></dt><dd>Toggle Record Enable Track 12</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack13</kbd></dt><dd>Toggle Record Enable Track 13</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack14</kbd></dt><dd>Toggle Record Enable Track 14</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack15</kbd></dt><dd>Toggle Record Enable Track 15</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack16</kbd></dt><dd>Toggle Record Enable Track 16</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack17</kbd></dt><dd>Toggle Record Enable Track 17</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack18</kbd></dt><dd>Toggle Record Enable Track 18</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack19</kbd></dt><dd>Toggle Record Enable Track 19</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack1</kbd></dt><dd>Toggle Record Enable Track 1</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack20</kbd></dt><dd>Toggle Record Enable Track 20</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack21</kbd></dt><dd>Toggle Record Enable Track 21</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack22</kbd></dt><dd>Toggle Record Enable Track 22</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack23</kbd></dt><dd>Toggle Record Enable Track 23</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack24</kbd></dt><dd>Toggle Record Enable Track 24</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack25</kbd></dt><dd>Toggle Record Enable Track 25</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack26</kbd></dt><dd>Toggle Record Enable Track 26</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack27</kbd></dt><dd>Toggle Record Enable Track 27</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack28</kbd></dt><dd>Toggle Record Enable Track 28</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack29</kbd></dt><dd>Toggle Record Enable Track 29</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack2</kbd></dt><dd>Toggle Record Enable Track 2</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack30</kbd></dt><dd>Toggle Record Enable Track 30</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack31</kbd></dt><dd>Toggle Record Enable Track 31</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack32</kbd></dt><dd>Toggle Record Enable Track 32</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack3</kbd></dt><dd>Toggle Record Enable Track 3</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack4</kbd></dt><dd>Toggle Record Enable Track 4</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack5</kbd></dt><dd>Toggle Record Enable Track 5</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack6</kbd></dt><dd>Toggle Record Enable Track 6</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack7</kbd></dt><dd>Toggle Record Enable Track 7</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack8</kbd></dt><dd>Toggle Record Enable Track 8</dd>
-  <dt><kbd class="osc">Common/ToggleRecordEnableTrack9</kbd></dt><dd>Toggle Record Enable Track 9</dd>
-  <dt><kbd class="osc">Common/attach-editor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/attach-mixer</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/attach-preferences</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/change-editor-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/change-mixer-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/change-preferences-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/Chat</kbd></dt><dd>Chat</dd>
-  <dt><kbd class="osc">Common/cheat-sheet</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/detach-editor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/detach-mixer</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/detach-preferences</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/forums</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/hide-editor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/hide-mixer</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/hide-preferences</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/howto-report</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/key-change-editor-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/key-change-mixer-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/key-change-preferences-visibility</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/Manual</kbd></dt><dd>Manual</dd>
-  <dt><kbd class="osc">Common/menu-show-preferences</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/next-tab</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/previous-tab</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/Reference</kbd></dt><dd>Reference</dd>
-  <dt><kbd class="osc">Common/show-editor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/show-mixer</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/show-preferences</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/toggle-editor-mixer</kbd></dt><dd>Toggle Editor+Mixer</dd>
-  <dt><kbd class="osc">Common/toggle-luawindow</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/toggle-meterbridge</kbd></dt><dd>Meterbridge</dd>
-  <dt><kbd class="osc">Common/tracker</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/website</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Common/website-dev</kbd></dt><dd></dd>
-  <!-- MIDI - updated-->
-  <dt><kbd class="osc">MIDI/panic</kbd></dt><dd>Panic</dd>
-  <!-- Main - updated -->
-  <dt><kbd class="osc">Main/AddLuaScript</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/AddTrackBus</kbd></dt><dd>Add Track or Bus...</dd>
-  <dt><kbd class="osc">Main/CleanupPeakFiles</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/CleanupUnused</kbd></dt><dd>Clean-up Unused Sources...</dd>
-  <dt><kbd class="osc">Main/Close</kbd></dt><dd>Close</dd>
-  <dt><kbd class="osc">Main/CloseVideo</kbd></dt><dd>Remove Video</dd>
-  <dt><kbd class="osc">Main/EditMetadata</kbd></dt><dd>Edit Metadata...</dd>
-  <dt><kbd class="osc">Main/Escape</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/ExportAudio</kbd></dt><dd>Export To Audio File(s)...</dd>
-  <dt><kbd class="osc">Main/Export</kbd></dt><dd>Export</dd>
-  <dt><kbd class="osc">Main/ExportVideo</kbd></dt><dd>Export To Video File</dd>
-  <dt><kbd class="osc">Main/FlushWastebasket</kbd></dt><dd>Flush Wastebasket</dd>
-  <dt><kbd class="osc">Main/ImportMetadata</kbd></dt><dd>Import Metadata...</dd>
-  <dt><kbd class="osc">Main/Metadata</kbd></dt><dd>Metadata</dd>
-  <dt><kbd class="osc">Main/New</kbd></dt><dd>New...</dd>
-  <dt><kbd class="osc">Main/Open</kbd></dt><dd>Open...</dd>
-  <dt><kbd class="osc">Main/OpenVideo</kbd></dt><dd>Open Video</dd>
-  <dt><kbd class="osc">Main/QuickSnapshotStay</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/QuickSnapshotSwitch</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/Recent</kbd></dt><dd>Recent...</dd>
-  <dt><kbd class="osc">Main/RemoveLuaScript</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/Rename</kbd></dt><dd>Rename...</dd>
-  <dt><kbd class="osc">Main/SaveAs</kbd></dt><dd>Save As...</dd>
-  <dt><kbd class="osc">Main/SaveTemplate</kbd></dt><dd>Save Template...</dd>
-  <dt><kbd class="osc">Main/Scripting</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/SnapshotStay</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/SnapshotSwitch</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/StemExport</kbd></dt><dd>Stem export...</dd>
-  <dt><kbd class="osc">Main/cancel-solo</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main/duplicate-routes</kbd></dt><dd></dd>
-  <!-- Main_menu - updated -->
-  <dt><kbd class="osc">Main_menu/AudioFileFormatData</kbd></dt><dd>Sample Format</dd>
-  <dt><kbd class="osc">Main_menu/AudioFileFormatHeader</kbd></dt><dd>File Type</dd>
-  <dt><kbd class="osc">Main_menu/AudioFileFormat</kbd></dt><dd>Audio File Format</dd>
-  <dt><kbd class="osc">Main_menu/Cleanup</kbd></dt><dd>Clean-up</dd>
-  <dt><kbd class="osc">Main_menu/ControlSurfaces</kbd></dt><dd>Control Surfaces</dd>
-  <dt><kbd class="osc">Main_menu/Denormals</kbd></dt><dd>Denormal Handling</dd>
-  <dt><kbd class="osc">Main_menu/Help</kbd></dt><dd>Help</dd>
-  <dt><kbd class="osc">Main_menu/KeyMouseActions</kbd></dt><dd>Misc. Shortcuts</dd>
-  <dt><kbd class="osc">Main_menu/MeteringFallOffRate</kbd></dt><dd>Fall Off Rate</dd>
-  <dt><kbd class="osc">Main_menu/MeteringHoldTime</kbd></dt><dd>Hold Time</dd>
-  <dt><kbd class="osc">Main_menu/Metering</kbd></dt><dd>Metering</dd>
-  <dt><kbd class="osc">Main_menu/MixerMenu</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main_menu/Plugins</kbd></dt><dd>Plugins</dd>
-  <dt><kbd class="osc">Main_menu/PrefsMenu</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Main_menu/Session</kbd></dt><dd>Session</dd>
-  <dt><kbd class="osc">Main_menu/Sync</kbd></dt><dd>Sync</dd>
-  <dt><kbd class="osc">Main_menu/TransportOptions</kbd></dt><dd>Options</dd>
-  <dt><kbd class="osc">Main_menu/WindowMenu</kbd></dt><dd>Window</dd>
-  <!-- Options -->
-  <dt><kbd class="osc">options/SendMidiClock</kbd></dt><dd>Send MIDI Clock</dd>
-  <dt><kbd class="osc">options/SendMIDIfeedback</kbd></dt><dd>Send MIDI Feedback</dd>
-  <dt><kbd class="osc">options/SendMMC</kbd></dt><dd>Send MMC</dd>
-  <dt><kbd class="osc">options/SendMTC</kbd></dt><dd>Send MTC</dd>
-  <dt><kbd class="osc">options/UseMMC</kbd></dt><dd>Use MMC</dd>
-  <!-- Transport -->
-  <dt><kbd class="osc">Transport/ForwardFast</kbd></dt><dd>Forward (Fast)</dd>
-  <dt><kbd class="osc">Transport/Forward</kbd></dt><dd>Forward</dd>
-  <dt><kbd class="osc">Transport/ForwardSlow</kbd></dt><dd>Forward (Slow)</dd>
-  <dt><kbd class="osc">Transport/GotoEnd</kbd></dt><dd>Goto End</dd>
-  <dt><kbd class="osc">Transport/GotoStart</kbd></dt><dd>Goto Start</dd>
-  <dt><kbd class="osc">Transport/GotoWallClock</kbd></dt><dd>Goto Wall Clock</dd>
-  <dt><kbd class="osc">Transport/GotoZero</kbd></dt><dd>Goto Zero</dd>
-  <dt><kbd class="osc">Transport/Loop</kbd></dt><dd>Play Loop Range</dd>
-  <dt><kbd class="osc">Transport/PlayPreroll</kbd></dt><dd>Play Selection w/Preroll</dd>
-  <dt><kbd class="osc">Transport/PlaySelection</kbd></dt><dd>Play Selected Range</dd>
-  <dt><kbd class="osc">Transport/Record</kbd></dt><dd>Enable Record</dd>
-  <dt><kbd class="osc">Transport/RewindFast</kbd></dt><dd>Rewind (Fast)</dd>
-  <dt><kbd class="osc">Transport/Rewind</kbd></dt><dd>Rewind</dd>
-  <dt><kbd class="osc">Transport/RewindSlow</kbd></dt><dd>Rewind (Slow)</dd>
-  <dt><kbd class="osc">Transport/Roll</kbd></dt><dd>Roll</dd>
-  <dt><kbd class="osc">Transport/Stop</kbd></dt><dd>Stop</dd>
-  <dt><kbd class="osc">Transport/ToggleAutoInput</kbd></dt><dd>Auto Input</dd>
-  <dt><kbd class="osc">Transport/ToggleAutoPlay</kbd></dt><dd>Auto Play</dd>
-  <dt><kbd class="osc">Transport/ToggleAutoReturn</kbd></dt><dd>Auto Return</dd>
-  <dt><kbd class="osc">Transport/ToggleClick</kbd></dt><dd>Click</dd>
-  <dt><kbd class="osc">Transport/ToggleExternalSync</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/ToggleFollowEdits</kbd></dt><dd>Follow Edits</dd>
-  <dt><kbd class="osc">Transport/TogglePunchIn</kbd></dt><dd>Punch In</dd>
-  <dt><kbd class="osc">Transport/TogglePunch</kbd></dt><dd>Punch In/Out</dd>
-  <dt><kbd class="osc">Transport/TogglePunchOut</kbd></dt><dd>Punch Out</dd>
-  <dt><kbd class="osc">Transport/ToggleRollForgetCapture</kbd></dt><dd>Stop and Forget Capture</dd>
-  <dt><kbd class="osc">Transport/ToggleRoll</kbd></dt><dd>Start/Stop</dd>
-  <dt><kbd class="osc">Transport/ToggleRollMaybe</kbd></dt><dd>Start/Continue/Stop</dd>
-  <dt><kbd class="osc">Transport/ToggleTimeMaster</kbd></dt><dd>Time Master</dd>
-  <dt><kbd class="osc">Transport/ToggleVideoSync</kbd></dt><dd>Sync Startup to Video</dd>
-  <dt><kbd class="osc">Transport/TransitionToReverse</kbd></dt><dd>Transition To Reverse</dd>
-  <dt><kbd class="osc">Transport/TransitionToRoll</kbd></dt><dd>Transition To Roll</dd>
-  <dt><kbd class="osc">Transport/Transport</kbd></dt><dd>Transport</dd>
-  <dt><kbd class="osc">Transport/alternate-GotoStart</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/alternate-ToggleRoll</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/alternate-numpad-decimal</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/alternate-record-roll</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/focus-on-clock</kbd></dt><dd>Focus On Clock</dd>
-  <dt><kbd class="osc">Transport/numpad-0</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-1</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-2</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-3</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-4</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-5</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-6</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-7</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-8</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-9</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/numpad-decimal</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Transport/primary-clock-bbt</kbd></dt><dd>Bars & Beats</dd>
-  <dt><kbd class="osc">Transport/primary-clock-minsec</kbd></dt><dd>Minutes & Seconds</dd>
-  <dt><kbd class="osc">Transport/primary-clock-samples</kbd></dt><dd>Samples</dd>
-  <dt><kbd class="osc">Transport/primary-clock-timecode</kbd></dt><dd>Timecode</dd>
-  <dt><kbd class="osc">Transport/record-roll</kbd></dt><dd>Start Recording</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-bbt</kbd></dt><dd>Bars & Beats</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-minsec</kbd></dt><dd>Minutes & Seconds</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-samples</kbd></dt><dd>Samples</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-timecode</kbd></dt><dd>Timecode</dd>
-  <!-- WIndow -->
-  <dt><kbd class="osc">Window/toggle-about</kbd></dt><dd>About</dd>
-  <dt><kbd class="osc">Window/toggle-add-routes</kbd></dt><dd>Add Tracks/Busses</dd>
-  <dt><kbd class="osc">Window/toggle-add-video</kbd></dt><dd>Add Tracks/Busses</dd>
-  <dt><kbd class="osc">Window/toggle-audio-connection-manager</kbd></dt><dd>Audio Connections</dd>
-  <dt><kbd class="osc">Window/toggle-audio-midi-setup</kbd></dt><dd>Audio/MIDI Setup</dd>
-  <dt><kbd class="osc">Window/toggle-big-clock</kbd></dt><dd>Big Clock</dd>
-  <dt><kbd class="osc">Window/toggle-bundle-manager</kbd></dt><dd>Bundle Manager</dd>
-  <dt><kbd class="osc">Window/toggle-inspector</kbd></dt><dd>Tracks and Busses</dd>
-  <dt><kbd class="osc">Window/toggle-key-editor</kbd></dt><dd>Key Bindings</dd>
-  <dt><kbd class="osc">Window/toggle-locations</kbd></dt><dd>Locations</dd>
-  <dt><kbd class="osc">Window/toggle-midi-connection-manager</kbd></dt><dd>MIDI Connections</dd>
-  <dt><kbd class="osc">Window/toggle-script-manager</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Window/toggle-session-options-editor</kbd></dt><dd>Properties</dd>
-  <dt><kbd class="osc">Window/toggle-speaker-config</kbd></dt><dd>Speaker Configuration</dd>
-  <dt><kbd class="osc">Window/toggle-video-export</kbd></dt><dd></dd>
-  <!-- Editor -->
-  <dt><kbd class="osc">Editor/SnapMode</kbd></dt><dd>Snap Mode</dd>
-  <dt><kbd class="osc">Editor/SnapTo</kbd></dt><dd>Snap to</dd>
-  <dt><kbd class="osc">Editor/ToggleGroupTabs</kbd></dt><dd>Show Group Tabs</dd>
-  <dt><kbd class="osc">Editor/ToggleJadeo</kbd></dt><dd>Video Monitor</dd>
-  <dt><kbd class="osc">Editor/ToggleMeasureVisibility</kbd></dt><dd>Show Measures</dd>
-  <dt><kbd class="osc">Editor/ToggleSummary</kbd></dt><dd>Show Summary</dd>
-  <dt><kbd class="osc">Editor/add-location-from-playhead</kbd></dt><dd>Add Mark from Playhead</dd>
-  <dt><kbd class="osc">Editor/addExistingAudioFiles</kbd></dt><dd>Import</dd>
-  <dt><kbd class="osc">Editor/addExistingPTFiles</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/addExternalAudioToRegionList</kbd></dt><dd>Import to Region List...</dd>
-  <dt><kbd class="osc">Editor/alt-finish-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alt-start-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-add-location-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-alternate-redo</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-editor-delete</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-jump-backward-to-mark</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-jump-forward-to-mark</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-redo</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-remove-location-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-select-all-after-edit-cursor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-select-all-before-edit-cursor</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-tab-to-transient-backwards</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/alternate-tab-to-transient-forwards</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/bring-into-session</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/center-edit-cursor</kbd></dt><dd>Center Edit Point</dd>
-  <dt><kbd class="osc">Editor/center-playhead</kbd></dt><dd>Center Playhead</dd>
-  <dt><kbd class="osc">Editor/crop</kbd></dt><dd>Crop</dd>
-  <dt><kbd class="osc">Editor/cycle-edit-point</kbd></dt><dd>Change Edit Point</dd>
-  <dt><kbd class="osc">Editor/cycle-edit-point-with-marker</kbd></dt><dd>Change Edit Point Including Marker</dd>
-  <dt><kbd class="osc">Editor/cycle-snap-mode</kbd></dt><dd>Next Snap Mode</dd>
-  <dt><kbd class="osc">Editor/cycle-zoom-focus</kbd></dt><dd>Next Zoom Focus</dd>
-  <dt><kbd class="osc">Editor/deselect-all</kbd></dt><dd>Deselect All</dd>
-  <dt><kbd class="osc">Editor/duplicate-range</kbd></dt><dd>Duplicate Range</dd>
-  <dt><kbd class="osc">Editor/edit-at-mouse</kbd></dt><dd>Mouse</dd>
-  <dt><kbd class="osc">Editor/edit-at-playhead</kbd></dt><dd>Playhead</dd>
-  <dt><kbd class="osc">Editor/edit-at-selected-marker</kbd></dt><dd>Marker</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-end</kbd></dt><dd>To Next Region End</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-start</kbd></dt><dd>To Next Region Start</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-sync</kbd></dt><dd>To Next Region Sync</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-end</kbd></dt><dd>To Previous Region End</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-start</kbd></dt><dd>To Previous Region Start</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-sync</kbd></dt><dd>To Previous Region Sync</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-range-end</kbd></dt><dd>To Range End</dd>
-  <dt><kbd class="osc">Editor/edit-cursor-to-range-start</kbd></dt><dd>To Range Start</dd>
-  <dt><kbd class="osc">Editor/edit-to-playhead</kbd></dt><dd>Active Mark to Playhead</dd>
-  <dt><kbd class="osc">Editor/editor-copy</kbd></dt><dd>Copy</dd>
-  <dt><kbd class="osc">Editor/editor-crop</kbd></dt><dd>Crop</dd>
-  <dt><kbd class="osc">Editor/editor-cut</kbd></dt><dd>Cut</dd>
-  <dt><kbd class="osc">Editor/editor-delete</kbd></dt><dd>Delete</dd>
-  <dt><kbd class="osc">Editor/editor-fade-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/editor-paste</kbd></dt><dd>Paste</dd>
-  <dt><kbd class="osc">Editor/editor-separate</kbd></dt><dd>Separate</dd>
-  <dt><kbd class="osc">Editor/expand-tracks</kbd></dt><dd>Expand Track Height</dd>
-  <dt><kbd class="osc">Editor/export-audio</kbd></dt><dd>Export Audio</dd>
-  <dt><kbd class="osc">Editor/export-range</kbd></dt><dd>Export Range</dd>
-  <dt><kbd class="osc">Editor/finish-loop-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/finish-punch-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/finish-range</kbd></dt><dd>Finish Range</dd>
-  <dt><kbd class="osc">Editor/fit-selection</kbd></dt><dd>Fit Selected Tracks</dd>
-  <dt><kbd class="osc">Editor/fit_16_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_1_track</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_2_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_32_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_4_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_8_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/fit_all_tracks</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/goto-mark-1</kbd></dt><dd>Locate to Mark 1</dd>
-  <dt><kbd class="osc">Editor/goto-mark-2</kbd></dt><dd>Locate to Mark 2</dd>
-  <dt><kbd class="osc">Editor/goto-mark-3</kbd></dt><dd>Locate to Mark 3</dd>
-  <dt><kbd class="osc">Editor/goto-mark-4</kbd></dt><dd>Locate to Mark 4</dd>
-  <dt><kbd class="osc">Editor/goto-mark-5</kbd></dt><dd>Locate to Mark 5</dd>
-  <dt><kbd class="osc">Editor/goto-mark-6</kbd></dt><dd>Locate to Mark 6</dd>
-  <dt><kbd class="osc">Editor/goto-mark-7</kbd></dt><dd>Locate to Mark 7</dd>
-  <dt><kbd class="osc">Editor/goto-mark-8</kbd></dt><dd>Locate to Mark 8</dd>
-  <dt><kbd class="osc">Editor/goto-mark-9</kbd></dt><dd>Locate to Mark 9</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-10</kbd></dt><dd>Goto View 10</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-11</kbd></dt><dd>Goto View 11</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-12</kbd></dt><dd>Goto View 12</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-1</kbd></dt><dd>Goto View 1</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-2</kbd></dt><dd>Goto View 2</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-3</kbd></dt><dd>Goto View 3</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-4</kbd></dt><dd>Goto View 4</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-5</kbd></dt><dd>Goto View 5</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-6</kbd></dt><dd>Goto View 6</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-7</kbd></dt><dd>Goto View 7</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-8</kbd></dt><dd>Goto View 8</dd>
-  <dt><kbd class="osc">Editor/goto-visual-state-9</kbd></dt><dd>Goto View 9</dd>
-  <dt><kbd class="osc">Editor/importFromSession</kbd></dt><dd>Import From Session</dd>
-  <dt><kbd class="osc">Editor/insert-time</kbd></dt><dd>Insert Time</dd>
-  <dt><kbd class="osc">Editor/invert-selection</kbd></dt><dd>Invert Selection</dd>
-  <dt><kbd class="osc">Editor/jump-backward-to-mark</kbd></dt><dd>Jump to Previous Mark</dd>
-  <dt><kbd class="osc">Editor/jump-forward-to-mark</kbd></dt><dd>Jump to Next Mark</dd>
-  <dt><kbd class="osc">Editor/lock</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/main-menu-play-selected-regions</kbd></dt><dd>Play Selected Regions</dd>
-  <dt><kbd class="osc">Editor/move-range-end-to-next-region-boundary</kbd></dt><dd>Move Range End to Next Region Boundary</dd>
-  <dt><kbd class="osc">Editor/move-range-end-to-previous-region-boundary</kbd></dt><dd>Move Range End to Previous Region Boundary</dd>
-  <dt><kbd class="osc">Editor/move-range-start-to-next-region-boundary</kbd></dt><dd>Move Range Start to Next Region Boundary</dd>
-  <dt><kbd class="osc">Editor/move-range-start-to-previous-region-boundary</kbd></dt><dd>Move Range Start to Previous Region Boundary</dd>
-  <dt><kbd class="osc">Editor/move-selected-tracks-down</kbd></dt><dd>Move Selected Tracks Down</dd>
-  <dt><kbd class="osc">Editor/move-selected-tracks-up</kbd></dt><dd>Move Selected Tracks Up</dd>
-  <dt><kbd class="osc">Editor/next-snap-choice</kbd></dt><dd>Next Snap Choice</dd>
-  <dt><kbd class="osc">Editor/next-snap-choice-music-only</kbd></dt><dd>Next Musical Snap Choice</dd>
-  <dt><kbd class="osc">Editor/nudge-next-backward</kbd></dt><dd>Nudge Next Earlier</dd>
-  <dt><kbd class="osc">Editor/nudge-next-forward</kbd></dt><dd>Nudge Next Later</dd>
-  <dt><kbd class="osc">Editor/nudge-playhead-backward</kbd></dt><dd>Nudge Playhead Backward</dd>
-  <dt><kbd class="osc">Editor/nudge-playhead-forward</kbd></dt><dd>Nudge Playhead Forward</dd>
-  <dt><kbd class="osc">Editor/play-edit-range</kbd></dt><dd>Play Edit Range</dd>
-  <dt><kbd class="osc">Editor/play-from-edit-point-and-return</kbd></dt><dd>Play from Edit Point and Return</dd>
-  <dt><kbd class="osc">Editor/play-from-edit-point</kbd></dt><dd>Play From Edit Point</dd>
-  <dt><kbd class="osc">Editor/playhead-backward-to-grid</kbd></dt><dd>Playhead To Previous Grid</dd>
-  <dt><kbd class="osc">Editor/playhead-forward-to-grid</kbd></dt><dd>Playhead To Next Grid</dd>
-  <dt><kbd class="osc">Editor/playhead-to-edit</kbd></dt><dd>Playhead to Active Mark</dd>
-  <dt><kbd class="osc">Editor/playhead-to-next-region-boundary</kbd></dt><dd>Playhead to Next Region Boundary</dd>
-  <dt><kbd class="osc">Editor/playhead-to-next-region-boundary-noselection</kbd></dt><dd>Playhead to Next Region Boundary (No Track Selection)</dd>
-  <dt><kbd class="osc">Editor/playhead-to-next-region-end</kbd></dt><dd>Playhead to Next Region End</dd>
-  <dt><kbd class="osc">Editor/playhead-to-next-region-start</kbd></dt><dd>Playhead to Next Region Start</dd>
-  <dt><kbd class="osc">Editor/playhead-to-next-region-sync</kbd></dt><dd>Playhead to Next Region Sync</dd>
-  <dt><kbd class="osc">Editor/playhead-to-previous-region-boundary</kbd></dt><dd>Playhead to Previous Region Boundary</dd>
-  <dt><kbd class="osc">Editor/playhead-to-previous-region-boundary-noselection</kbd></dt><dd>Playhead to Previous Region Boundary (No Track Selection)</dd>
-  <dt><kbd class="osc">Editor/playhead-to-previous-region-end</kbd></dt><dd>Playhead to Previous Region End</dd>
-  <dt><kbd class="osc">Editor/playhead-to-previous-region-start</kbd></dt><dd>Playhead to Previous Region Start</dd>
-  <dt><kbd class="osc">Editor/playhead-to-previous-region-sync</kbd></dt><dd>Playhead to Previous Region Sync</dd>
-  <dt><kbd class="osc">Editor/playhead-to-range-end</kbd></dt><dd>Playhead to Range End</dd>
-  <dt><kbd class="osc">Editor/playhead-to-range-start</kbd></dt><dd>Playhead to Range Start</dd>
-  <dt><kbd class="osc">Editor/prev-snap-choice</kbd></dt><dd>Previous Snap Choice</dd>
-  <dt><kbd class="osc">Editor/prev-snap-choice-music-only</kbd></dt><dd>Previous Musical Snap Choice</dd>
-  <dt><kbd class="osc">Editor/redo</kbd></dt><dd>Redo</dd>
-  <dt><kbd class="osc">Editor/redo-last-selection-op</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/remove-last-capture</kbd></dt><dd>Remove Last Capture</dd>
-  <dt><kbd class="osc">Editor/remove-location-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/remove-time</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/remove-track</kbd></dt><dd>Remove</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-10</kbd></dt><dd>Save View 10</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-11</kbd></dt><dd>Save View 11</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-12</kbd></dt><dd>Save View 12</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-1</kbd></dt><dd>Save View 1</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-2</kbd></dt><dd>Save View 2</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-3</kbd></dt><dd>Save View 3</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-4</kbd></dt><dd>Save View 4</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-5</kbd></dt><dd>Save View 5</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-6</kbd></dt><dd>Save View 6</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-7</kbd></dt><dd>Save View 7</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-8</kbd></dt><dd>Save View 8</dd>
-  <dt><kbd class="osc">Editor/save-visual-state-9</kbd></dt><dd>Save View 9</dd>
-  <dt><kbd class="osc">Editor/script-action-1</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-2</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-3</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-4</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-5</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-6</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-7</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-8</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/script-action-9</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/scroll-backward</kbd></dt><dd>Scroll Backward</dd>
-  <dt><kbd class="osc">Editor/scroll-forward</kbd></dt><dd>Scroll Forward</dd>
-  <dt><kbd class="osc">Editor/scroll-playhead-backward</kbd></dt><dd>Playhead Backward</dd>
-  <dt><kbd class="osc">Editor/scroll-playhead-forward</kbd></dt><dd>Playhead Forward</dd>
-  <dt><kbd class="osc">Editor/scroll-tracks-down</kbd></dt><dd>Scroll Tracks Down</dd>
-  <dt><kbd class="osc">Editor/scroll-tracks-up</kbd></dt><dd>Scroll Tracks Up</dd>
-  <dt><kbd class="osc">Editor/select-all-after-edit-cursor</kbd></dt><dd>Select All After Edit Point</dd>
-  <dt><kbd class="osc">Editor/select-all-before-edit-cursor</kbd></dt><dd>Select All Before Edit Point</dd>
-  <dt><kbd class="osc">Editor/select-all-between-cursors</kbd></dt><dd>Select All Overlapping Edit Range</dd>
-  <dt><kbd class="osc">Editor/select-all-in-loop-range</kbd></dt><dd>Select All in Loop Range</dd>
-  <dt><kbd class="osc">Editor/select-all-in-punch-range</kbd></dt><dd>Select All in Punch Range</dd>
-  <dt><kbd class="osc">Editor/select-all-objects => Ctrl+A</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/select-all-tracks => Ctrl+T</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/select-all-within-cursors</kbd></dt><dd>Select All Inside Edit Range</dd>
-  <dt><kbd class="osc">Editor/select-from-regions</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/select-loop-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/select-next-route</kbd></dt><dd>Select Next Track or Bus</dd>
-  <dt><kbd class="osc">Editor/select-prev-route</kbd></dt><dd>Select Previous Track or Bus</dd>
-  <dt><kbd class="osc">Editor/select-punch-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/select-range-between-cursors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/selected-marker-to-next-region-boundary</kbd></dt><dd>To Next Region Boundary</dd>
-  <dt><kbd class="osc">Editor/selected-marker-to-next-region-boundary-noselection</kbd></dt><dd>To Next Region Boundary (No Track Selection)</dd>
-  <dt><kbd class="osc">Editor/selected-marker-to-previous-region-boundary</kbd></dt><dd>To Previous Region Boundary</dd>
-  <dt><kbd class="osc">Editor/selected-marker-to-previous-region-boundary-noselection</kbd></dt><dd>To Previous Region Boundary (No Track Selection)</dd>
-  <dt><kbd class="osc">Editor/select-range-between-cursors</kbd></dt><dd>Select Edit Range</dd>
-  <dt><kbd class="osc">Editor/separate-from-loop</kbd></dt><dd>Separate Using Loop Range</dd>
-  <dt><kbd class="osc">Editor/separate-from-punch</kbd></dt><dd>Separate Using Punch Range</dd>
-  <dt><kbd class="osc">Editor/set-edit-lock</kbd></dt><dd>Lock</dd>
-  <dt><kbd class="osc">Editor/set-edit-point</kbd></dt><dd>Active Marker to Mouse</dd>
-  <dt><kbd class="osc">Editor/set-edit-ripple</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/set-edit-slide</kbd></dt><dd>Slide</dd>
-  <dt><kbd class="osc">Editor/set-loop-from-edit-range</kbd></dt><dd>Set Loop from Edit Range</dd>
-  <dt><kbd class="osc">Editor/set-playhead</kbd></dt><dd>Playhead to Mouse</dd>
-  <dt><kbd class="osc">Editor/set-punch-from-edit-range</kbd></dt><dd>Set Punch from Edit Range</dd>
-  <dt><kbd class="osc">Editor/set-session-end-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/set-session-from-edit-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/set-session-start-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/set-tempo-from-edit-range</kbd></dt><dd>Set Tempo from Edit Range = Bar</dd>
-  <dt><kbd class="osc">Editor/show-editor-list</kbd></dt><dd>Show Editor List</dd>
-  <dt><kbd class="osc">Editor/show-editor-mixer</kbd></dt><dd>Show Editor Mixer</dd>
-  <dt><kbd class="osc">Editor/show-marker-lines</kbd></dt><dd>Show Marker Lines</dd>
-  <dt><kbd class="osc">Editor/shrink-tracks</kbd></dt><dd>Shrink Track Height</dd>
-  <dt><kbd class="osc">Editor/snap-magnetic</kbd></dt><dd>Magnetic</dd>
-  <dt><kbd class="osc">Editor/snap-normal</kbd></dt><dd>Grid</dd>
-  <dt><kbd class="osc">Editor/snap-off</kbd></dt><dd>No Grid</dd>
-  <dt><kbd class="osc">Editor/sound-midi-notes</kbd></dt><dd>Sound Selected MIDI Notes</dd>
-  <dt><kbd class="osc">Editor/start-loop-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/start-punch-range</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/start-range</kbd></dt><dd>Start Range</dd>
-  <dt><kbd class="osc">Editor/start-range-from-playhead</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/step-mouse-mode</kbd></dt><dd>Step Mouse Mode</dd>
-  <dt><kbd class="osc">Editor/step-tracks-down</kbd></dt><dd>Step Tracks Down</dd>
-  <dt><kbd class="osc">Editor/step-tracks-up</kbd></dt><dd>Step Tracks Up</dd>
-  <dt><kbd class="osc">Editor/tab-to-transient-backwards</kbd></dt><dd>Move Earlier to Transient</dd>
-  <dt><kbd class="osc">Editor/tab-to-transient-forwards</kbd></dt><dd>Move Later to Transient</dd>
-  <dt><kbd class="osc">Editor/temporal-zoom-in</kbd></dt><dd>Zoom In</dd>
-  <dt><kbd class="osc">Editor/temporal-zoom-out</kbd></dt><dd>Zoom Out</dd>
-  <dt><kbd class="osc">Editor/toggle-edit-mode</kbd></dt><dd>Toggle Edit Mode</dd>
-  <dt><kbd class="osc">Editor/toggle-follow-playhead</kbd></dt><dd>Follow Playhead</dd>
-  <dt><kbd class="osc">Editor/toggle-log-window</kbd></dt><dd>Log</dd>
-  <dt><kbd class="osc">Editor/toggle-midi-input-active</kbd></dt><dd>Toggle MIDI Input Active for Editor-Selected Tracks/Busses</dd>
-  <dt><kbd class="osc">Editor/toggle-skip-playback</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/toggle-stationary-playhead</kbd></dt><dd>Stationary Playhead</dd>
-  <dt><kbd class="osc">Editor/toggle-track-active</kbd></dt><dd>Toggle Active</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-frame</kbd></dt><dd>Frame number</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-fullscreen</kbd></dt><dd>Fullscreen</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-letterbox</kbd></dt><dd>Letterbox</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-ontop</kbd></dt><dd>Always on Top</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-osdbg</kbd></dt><dd>Timecode Background</dd>
-  <dt><kbd class="osc">Editor/toggle-vmon-timecode</kbd></dt><dd>Timecode</dd>
-  <dt><kbd class="osc">Editor/toggle-zoom</kbd></dt><dd>Toggle Zoom State</dd>
-  <dt><kbd class="osc">Editor/track-height-large</kbd></dt><dd>Large</dd>
-  <dt><kbd class="osc">Editor/track-height-larger</kbd></dt><dd>Larger</dd>
-  <dt><kbd class="osc">Editor/track-height-largest</kbd></dt><dd>Largest</dd>
-  <dt><kbd class="osc">Editor/track-height-normal</kbd></dt><dd>Normal</dd>
-  <dt><kbd class="osc">Editor/track-height-small</kbd></dt><dd>Small</dd>
-  <dt><kbd class="osc">Editor/track-mute-toggle</kbd></dt><dd>Toggle Mute</dd>
-  <dt><kbd class="osc">Editor/track-record-enable-toggle</kbd></dt><dd>Toggle Record Enable</dd>
-  <dt><kbd class="osc">Editor/track-solo-isolate-toggle</kbd></dt><dd>Toggle Solo Isolate</dd>
-  <dt><kbd class="osc">Editor/track-solo-toggle</kbd></dt><dd>Toggle Solo</dd>
-  <dt><kbd class="osc">Editor/undo</kbd></dt><dd>Undo</dd>
-  <dt><kbd class="osc">Editor/undo-last-selection-op</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom-to-selection</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom-to-session</kbd></dt><dd>Zoom to Session</dd>
-  <dt><kbd class="osc">Editor/zoom-vmon-100</kbd></dt><dd>Original Size</dd>
-  <dt><kbd class="osc">Editor/zoom_100_ms</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_10_min</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_10_ms</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_10_sec</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_1_min</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_1_sec</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Editor/zoom_5_min</kbd></dt><dd></dd>
-  <!-- EditorMenu -  updated -->
-  <dt><kbd class="osc">EditorMenu/ActionScripts</kbd></dt><dd></dd>
-  <dt><kbd class="osc">EditorMenu/AlignMenu</kbd></dt><dd>Align</dd>
-  <dt><kbd class="osc">EditorMenu/Autoconnect</kbd></dt><dd>Autoconnect</dd>
-  <dt><kbd class="osc">EditorMenu/Crossfades</kbd></dt><dd>Crossfades</dd>
-  <dt><kbd class="osc">EditorMenu/EditCursorMovementOptions</kbd></dt><dd>Move Selected Marker</dd>
-  <dt><kbd class="osc">EditorMenu/Edit</kbd></dt><dd>Edit</dd>
-  <dt><kbd class="osc">EditorMenu/EditPointMenu</kbd></dt><dd>Edit Point</dd>
-  <dt><kbd class="osc">EditorMenu/EditSelectRangeOptions</kbd></dt><dd>Select Range Operations</dd>
-  <dt><kbd class="osc">EditorMenu/EditSelectRegionOptions</kbd></dt><dd>Select Regions</dd>
-  <dt><kbd class="osc">EditorMenu/FadeMenu</kbd></dt><dd>Fade</dd>
-  <dt><kbd class="osc">EditorMenu/LatchMenu</kbd></dt><dd>Latch</dd>
-  <dt><kbd class="osc">EditorMenu/Link</kbd></dt><dd>Link</dd>
-  <dt><kbd class="osc">EditorMenu/LocateToMarker</kbd></dt><dd>Locate to Markers</dd>
-  <dt><kbd class="osc">EditorMenu/MIDI</kbd></dt><dd>MIDI Options</dd>
-  <dt><kbd class="osc">EditorMenu/MarkerMenu</kbd></dt><dd>Markers</dd>
-  <dt><kbd class="osc">EditorMenu/MeterFalloff</kbd></dt><dd>Meter falloff</dd>
-  <dt><kbd class="osc">EditorMenu/MeterHold</kbd></dt><dd>Meter hold</dd>
-  <dt><kbd class="osc">EditorMenu/MiscOptions</kbd></dt><dd>Misc Options</dd>
-  <dt><kbd class="osc">EditorMenu/Monitoring</kbd></dt><dd>Monitoring</dd>
-  <dt><kbd class="osc">EditorMenu/MoveActiveMarkMenu</kbd></dt><dd>Active Mark</dd>
-  <dt><kbd class="osc">EditorMenu/MovePlayHeadMenu</kbd></dt><dd>Playhead</dd>
-  <dt><kbd class="osc">EditorMenu/PlayMenu</kbd></dt><dd>Play</dd>
-  <dt><kbd class="osc">EditorMenu/PrimaryClockMenu</kbd></dt><dd>Primary Clock</dd>
-  <dt><kbd class="osc">EditorMenu/Pullup</kbd></dt><dd>Pullup / Pulldown</dd>
-  <dt><kbd class="osc">EditorMenu/RegionEditOps</kbd></dt><dd>Region operations</dd>
-  <dt><kbd class="osc">EditorMenu/RegionGainMenu</kbd></dt><dd>Gain</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuDuplicate</kbd></dt><dd>Duplicate</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuEdit</kbd></dt><dd>Edit</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuFades</kbd></dt><dd>Fades</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuGain</kbd></dt><dd>Gain</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenu</kbd></dt><dd>Region</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuLayering</kbd></dt><dd>Layering</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuMIDI</kbd></dt><dd>MIDI</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuPosition</kbd></dt><dd>Position</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuRanges</kbd></dt><dd>Ranges</dd>
-  <dt><kbd class="osc">EditorMenu/RegionMenuTrim</kbd></dt><dd>Trim</dd>
-  <dt><kbd class="osc">EditorMenu/RulerMenu</kbd></dt><dd>Rulers</dd>
-  <dt><kbd class="osc">EditorMenu/SavedViewMenu</kbd></dt><dd>Views</dd>
-  <dt><kbd class="osc">EditorMenu/ScrollMenu</kbd></dt><dd>Scroll</dd>
-  <dt><kbd class="osc">EditorMenu/SecondaryClockMenu</kbd></dt><dd>Secondary Clock</dd>
-  <dt><kbd class="osc">EditorMenu/Select</kbd></dt><dd>Select</dd>
-  <dt><kbd class="osc">EditorMenu/SelectMenu</kbd></dt><dd>Select</dd>
-  <dt><kbd class="osc">EditorMenu/SeparateMenu</kbd></dt><dd>Separate</dd>
-  <dt><kbd class="osc">EditorMenu/SetLoopMenu</kbd></dt><dd>Loop</dd>
-  <dt><kbd class="osc">EditorMenu/SetPunchMenu</kbd></dt><dd>Punch</dd>
-  <dt><kbd class="osc">EditorMenu/Solo</kbd></dt><dd>Solo</dd>
-  <dt><kbd class="osc">EditorMenu/Subframes</kbd></dt><dd>Subframes</dd>
-  <dt><kbd class="osc">EditorMenu/SyncMenu</kbd></dt><dd>Sync</dd>
-  <dt><kbd class="osc">EditorMenu/TempoMenu</kbd></dt><dd>Tempo</dd>
-  <dt><kbd class="osc">EditorMenu/Timecode</kbd></dt><dd>Timecode fps</dd>
-  <dt><kbd class="osc">EditorMenu/Tools</kbd></dt><dd>Tools</dd>
-  <dt><kbd class="osc">EditorMenu/TrackHeightMenu</kbd></dt><dd>Height</dd>
-  <dt><kbd class="osc">EditorMenu/TrackMenu</kbd></dt><dd>Track</dd>
-  <dt><kbd class="osc">EditorMenu/VideoMonitorMenu</kbd></dt><dd>Video Monitor</dd>
-  <dt><kbd class="osc">EditorMenu/View</kbd></dt><dd>View</dd>
-  <dt><kbd class="osc">EditorMenu/ZoomFocus</kbd></dt><dd>Zoom Focus</dd>
-  <dt><kbd class="osc">EditorMenu/ZoomFocusMenu</kbd></dt><dd>Zoom Focus</dd>
-  <dt><kbd class="osc">EditorMenu/ZoomMenu</kbd></dt><dd>Zoom</dd>
-  <!-- mouseMode - updated-->
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-audition</kbd></dt><dd>Audition Tool</dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-content</kbd></dt><dd></dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-cut</kbd></dt><dd></dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-draw</kbd></dt><dd>Note Drawing Tool</dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-object</kbd></dt><dd>Object Tool</dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-object-range</kbd></dt><dd>Smart Object Mode</dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-range</kbd></dt><dd>Range Tool</dd>
-  <dt><kbd class="osc">MouseMode/set-mouse-mode-timefx</kbd></dt><dd>Time FX Tool</dd>
-  <!-- Region - updated-->
-  <dt><kbd class="osc">Region/add-range-marker-from-region</kbd></dt><dd>Add Single Range Marker</dd>
-  <dt><kbd class="osc">Region/add-range-markers-from-region</kbd></dt><dd>Add Range Marker Per Region</dd>
-  <dt><kbd class="osc">Region/align-regions-end</kbd></dt><dd>Align End</dd>
-  <dt><kbd class="osc">Region/align-regions-end-relative</kbd></dt><dd>Align End Relative</dd>
-  <dt><kbd class="osc">Region/align-regions-start</kbd></dt><dd>Align Start</dd>
-  <dt><kbd class="osc">Region/align-regions-start-relative</kbd></dt><dd>Align Start Relative</dd>
-  <dt><kbd class="osc">Region/align-regions-sync</kbd></dt><dd>Align Sync</dd>
-  <dt><kbd class="osc">Region/align-regions-sync-relative</kbd></dt><dd>Align Sync Relative</dd>
-  <dt><kbd class="osc">/Region/alternate-nudge-backward</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Region/alternate-nudge-forward</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Region/alternate-set-fade-in-length</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Region/alternate-set-fade-out-length</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Region/boost-region-gain</kbd></dt><dd>Boost Gain</dd>
-  <dt><kbd class="osc">Region/bounce-regions-processed</kbd></dt><dd>Bounce (without processing)</dd>
-  <dt><kbd class="osc">Region/bounce-regions-unprocessed</kbd></dt><dd>Bounce (with processing)</dd>
-  <dt><kbd class="osc">Region/choose-top-region-context-menu</kbd></dt><dd>Choose Top...</dd>
-  <dt><kbd class="osc">Region/choose-top-region</kbd></dt><dd>Choose Top...</dd>
-  <dt><kbd class="osc">Region/close-region-gaps</kbd></dt><dd>Close Gaps</dd>
-  <dt><kbd class="osc">Region/combine-regions</kbd></dt><dd>Combine</dd>
-  <dt><kbd class="osc">Region/cut-region-gain</kbd></dt><dd>Cut Gain</dd>
-  <dt><kbd class="osc">Region/duplicate-region</kbd></dt><dd>Duplicate</dd>
-  <dt><kbd class="osc">Region/export-region</kbd></dt><dd>Export...</dd>
-  <dt><kbd class="osc">Region/fork-region</kbd></dt><dd>Unlink from other copies</dd>
-  <dt><kbd class="osc">Region/insert-patch-change-context</kbd></dt><dd>Insert Patch Change...</dd>
-  <dt><kbd class="osc">Region/insert-patch-change</kbd></dt><dd>Insert Patch Change...</dd>
-  <dt><kbd class="osc">Region/insert-region-from-region-list</kbd></dt><dd>Insert Region From Region List</dd>
-  <dt><kbd class="osc">/Region/legatize-region</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Region/loop-region</kbd></dt><dd>Loop</dd>
-  <dt><kbd class="osc">Region/loudness-analyze-region</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Region/lower-region</kbd></dt><dd>Lower</dd>
-  <dt><kbd class="osc">Region/lower-region-to-bottom</kbd></dt><dd>Lower to Bottom</dd>
-  <dt><kbd class="osc">Region/multi-duplicate-region</kbd></dt><dd>Multi-Duplicate...</dd>
-  <dt><kbd class="osc">Region/naturalize-region</kbd></dt><dd>Move to Original Position</dd>
-  <dt><kbd class="osc">Region/normalize-region</kbd></dt><dd>Normalize...</dd>
-  <dt><kbd class="osc">Region/nudge-backward-by-capture-offset</kbd></dt><dd>Nudge Earlier by Capture Offset</dd>
-  <dt><kbd class="osc">Region/nudge-backward</kbd></dt><dd>Nudge Earlier</dd>
-  <dt><kbd class="osc">Region/nudge-forward-by-capture-offset</kbd></dt><dd>Nudge Later by Capture Offset</dd>
-  <dt><kbd class="osc">Region/nudge-forward</kbd></dt><dd>Nudge Later</dd>
-  <dt><kbd class="osc">Region/pitch-shift-region</kbd></dt><dd>Pitch Shift...</dd>
-  <dt><kbd class="osc">Region/place-transient</kbd></dt><dd>Place Transient</dd>
-  <dt><kbd class="osc">Region/play-selected-regions</kbd></dt><dd>Play</dd>
-  <dt><kbd class="osc">Region/quantize-region</kbd></dt><dd>Quantize...</dd>
-  <dt><kbd class="osc">Region/raise-region</kbd></dt><dd>Raise</dd>
-  <dt><kbd class="osc">Region/raise-region-to-top</kbd></dt><dd>Raise to Top</dd>
-  <dt><kbd class="osc">Region/region-fill-track</kbd></dt><dd>Fill Track</dd>
-  <dt><kbd class="osc">Region/remove-region</kbd></dt><dd>Remove</dd>
-  <dt><kbd class="osc">Region/remove-region-sync</kbd></dt><dd>Remove Sync</dd>
-  <dt><kbd class="osc">Region/rename-region</kbd></dt><dd>Rename...</dd>
-  <dt><kbd class="osc">Region/reset-region-gain-envelopes</kbd></dt><dd>Reset Envelope</dd>
-  <dt><kbd class="osc">Region/reset-region-scale-amplitude</kbd></dt><dd>Reset Gain</dd>
-  <dt><kbd class="osc">Region/reverse-region</kbd></dt><dd>Reverse</dd>
-  <dt><kbd class="osc">Region/separate-under-region</kbd></dt><dd>Separate Under</dd>
-  <dt><kbd class="osc">Region/sequence-regions</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Region/set-fade-in-length</kbd></dt><dd>Set Fade In Length</dd>
-  <dt><kbd class="osc">Region/set-fade-out-length</kbd></dt><dd>Set Fade Out Length</dd>
-  <dt><kbd class="osc">Region/set-loop-from-region</kbd></dt><dd>Set Loop Range</dd>
-  <dt><kbd class="osc">Region/set-punch-from-region</kbd></dt><dd>Set Punch</dd>
-  <dt><kbd class="osc">Region/set-region-sync-position</kbd></dt><dd>Set Sync Position</dd>
-  <dt><kbd class="osc">Region/set-selection-from-region</kbd></dt><dd>Set Range Selection</dd>
-  <dt><kbd class="osc">Region/set-tempo-from-region</kbd></dt><dd>Set Tempo from Region = Bar</dd>
-  <dt><kbd class="osc">Region/show-region-list-editor</kbd></dt><dd>List Editor...</dd>
-  <dt><kbd class="osc">Region/show-region-properties</kbd></dt><dd>Properties...</dd>
-  <dt><kbd class="osc">Region/show-rhythm-ferret</kbd></dt><dd>Rhythm Ferret...</dd>
-  <dt><kbd class="osc">Region/snap-regions-to-grid</kbd></dt><dd>Snap Position To Grid</dd>
-  <dt><kbd class="osc">Region/split-multichannel-region</kbd></dt><dd>Make Mono Regions</dd>
-  <dt><kbd class="osc">Region/split-region-at-transients</kbd></dt><dd>Split at Percussion Onsets</dd>
-  <dt><kbd class="osc">Region/split-region</kbd></dt><dd>Split</dd>
-  <dt><kbd class="osc">Region/strip-region-silence</kbd></dt><dd>Strip Silence...</dd>
-  <dt><kbd class="osc">Region/toggle-opaque-region</kbd></dt><dd>Opaque</dd>
-  <dt><kbd class="osc">Region/toggle-region-fade-in</kbd></dt><dd>Fade In</dd>
-  <dt><kbd class="osc">Region/toggle-region-fade-out</kbd></dt><dd>Fade Out</dd>
-  <dt><kbd class="osc">Region/toggle-region-fades</kbd></dt><dd>Fades</dd>
-  <dt><kbd class="osc">Region/toggle-region-gain-envelope-active</kbd></dt><dd>Envelope Active</dd>
-  <dt><kbd class="osc">Region/toggle-region-lock</kbd></dt><dd>Lock</dd>
-  <dt><kbd class="osc">Region/toggle-region-lock-style</kbd></dt><dd>Glue to Bars and Beats</dd>
-  <dt><kbd class="osc">Region/toggle-region-mute</kbd></dt><dd>Mute</dd>
-  <dt><kbd class="osc">Region/toggle-region-video-lock</kbd></dt><dd>Lock to Video</dd>
-  <dt><kbd class="osc">Region/transform-region</kbd></dt><dd></dd>
-  <dt><kbd class="osc">Region/transpose-region</kbd></dt><dd>Transpose...</dd>
-  <dt><kbd class="osc">Region/trim-back</kbd></dt><dd>Trim End at Edit Point</dd>
-  <dt><kbd class="osc">Region/trim-front</kbd></dt><dd>Trim Start at Edit Point</dd>
-  <dt><kbd class="osc">Region/trim-region-to-loop</kbd></dt><dd>Trim to Loop</dd>
-  <dt><kbd class="osc">Region/trim-region-to-punch</kbd></dt><dd>Trim to Punch</dd>
-  <dt><kbd class="osc">Region/trim-to-next-region</kbd></dt><dd>Trim to Next</dd>
-  <dt><kbd class="osc">Region/trim-to-previous-region</kbd></dt><dd>Trim to Previous</dd>
-  <dt><kbd class="osc">Region/uncombine-regions</kbd></dt><dd>Uncombine</dd>
-  <!-- RegionList ok -->
-  <dt><kbd class="osc">RegionList/RegionListSort</kbd></dt><dd>Sort</dd>
-  <dt><kbd class="osc">RegionList/SortAscending</kbd></dt><dd>Ascending</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionEndinFile</kbd></dt><dd>By Region End in File</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionLength</kbd></dt><dd>By Region Length</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionName</kbd></dt><dd>By Region Name</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionPosition</kbd></dt><dd>By Region Position</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionStartinFile</kbd></dt><dd>By Region Start in File</dd>
-  <dt><kbd class="osc">RegionList/SortByRegionTimestamp</kbd></dt><dd>By Region Timestamp</dd>
-  <dt><kbd class="osc">RegionList/SortBySourceFileCreationDate</kbd></dt><dd>By Source File Creation Date</dd>
-  <dt><kbd class="osc">RegionList/SortBySourceFileLength</kbd></dt><dd>By Source File Length</dd>
-  <dt><kbd class="osc">RegionList/SortBySourceFileName</kbd></dt><dd>By Source File Name</dd>
-  <dt><kbd class="osc">RegionList/SortBySourceFilesystem</kbd></dt><dd>By Source Filesystem</dd>
-  <dt><kbd class="osc">RegionList/SortDescending</kbd></dt><dd>Descending</dd>
-  <dt><kbd class="osc">RegionList/removeUnusedRegions</kbd></dt><dd>Remove Unused</dd>
-  <dt><kbd class="osc">RegionList/rlAudition</kbd></dt><dd>Audition</dd>
-  <dt><kbd class="osc">RegionList/rlHide</kbd></dt><dd>Hide</dd>
-  <dt><kbd class="osc">RegionList/rlShow</kbd></dt><dd>Show</dd>
-  <dt><kbd class="osc">RegionList/rlShowAll</kbd></dt><dd>Show All</dd>
-  <dt><kbd class="osc">RegionList/rlShowAuto</kbd></dt><dd>Show Automatic Regions</dd>
-  <!-- Rulers - ok -->
-  <dt><kbd class="osc">Rulers/toggle-bbt-ruler</kbd></dt><dd>Bars & Beats</dd>
-  <dt><kbd class="osc">Rulers/toggle-cd-marker-ruler</kbd></dt><dd>CD Markers</dd>
-  <dt><kbd class="osc">Rulers/toggle-loop-punch-ruler</kbd></dt><dd>Loop/Punch</dd>
-  <dt><kbd class="osc">Rulers/toggle-marker-ruler</kbd></dt><dd>Markers</dd>
-  <dt><kbd class="osc">Rulers/toggle-meter-ruler</kbd></dt><dd>Meter</dd>
-  <dt><kbd class="osc">Rulers/toggle-minsec-ruler</kbd></dt><dd>Min:Sec</dd>
-  <dt><kbd class="osc">Rulers/toggle-range-ruler</kbd></dt><dd>Ranges</dd>
-  <dt><kbd class="osc">Rulers/toggle-samples-ruler</kbd></dt><dd>Samples</dd>
-  <dt><kbd class="osc">Rulers/toggle-tempo-ruler</kbd></dt><dd>Tempo</dd>
-  <dt><kbd class="osc">Rulers/toggle-timecode-ruler</kbd></dt><dd>Timecode</dd>
-  <dt><kbd class="osc">Rulers/toggle-video-ruler</kbd></dt><dd>Video</dd>
-  <!-- Shuttle Actions... these don't seem to be there any more
-  <dt><kbd class="osc">ShuttleActions/SetShuttleUnitsPercentage</kbd></dt><dd>Percentage</dd>
-  <dt><kbd class="osc">ShuttleActions/SetShuttleUnitsSemitones</kbd></dt><dd>Semitones</dd-->
-  <!-- snap checked -->
-  <dt><kbd class="osc">Snap/snap-to-asixteenthbeat</kbd></dt><dd>Snap to Sixteenths</dd>
-  <dt><kbd class="osc">Snap/snap-to-bar</kbd></dt><dd>Snap to Bar</dd>
-  <dt><kbd class="osc">Snap/snap-to-beat</kbd></dt><dd>Snap to Beat</dd>
-  <dt><kbd class="osc">Snap/snap-to-cd-frame</kbd></dt><dd>Snap to CD Frame</dd>
-  <dt><kbd class="osc">Snap/snap-to-eighths</kbd></dt><dd>Snap to Eighths</dd>
-  <dt><kbd class="osc">Snap/snap-to-fifths</kbd></dt><dd>Snap to Fifths</dd>
-  <dt><kbd class="osc">Snap/snap-to-fourteenths</kbd></dt><dd>Snap to Fourteenths</dd>
-  <dt><kbd class="osc">Snap/snap-to-halves</kbd></dt><dd>Snap to Halves</dd>
-  <dt><kbd class="osc">Snap/snap-to-mark</kbd></dt><dd>Snap to Mark</dd>
-  <dt><kbd class="osc">Snap/snap-to-minutes</kbd></dt><dd>Snap to Minutes</dd>
-  <dt><kbd class="osc">Snap/snap-to-onetwentyeighths</kbd></dt><dd>Snap to One Twenty Eighths</dd>
-  <dt><kbd class="osc">Snap/snap-to-quarters</kbd></dt><dd>Snap to Quarters</dd>
-  <dt><kbd class="osc">Snap/snap-to-region-boundary</kbd></dt><dd>Snap to Region Boundary</dd>
-  <dt><kbd class="osc">Snap/snap-to-region-end</kbd></dt><dd>Snap to Region End</dd>
-  <dt><kbd class="osc">Snap/snap-to-region-start</kbd></dt><dd>Snap to Region Start</dd>
-  <dt><kbd class="osc">Snap/snap-to-region-sync</kbd></dt><dd>Snap to Region Sync</dd>
-  <dt><kbd class="osc">Snap/snap-to-seconds</kbd></dt><dd>Snap to Seconds</dd>
-  <dt><kbd class="osc">Snap/snap-to-sevenths</kbd></dt><dd>Snap to Sevenths</dd>
-  <dt><kbd class="osc">Snap/snap-to-sixths</kbd></dt><dd>Snap to Sixths</dd>
-  <dt><kbd class="osc">Snap/snap-to-sixtyfourths</kbd></dt><dd>Snap to Sixty Fourths</dd>
-  <dt><kbd class="osc">Snap/snap-to-tenths</kbd></dt><dd>Snap to Tenths</dd>
-  <dt><kbd class="osc">Snap/snap-to-thirds</kbd></dt><dd>Snap to Thirds</dd>
-  <dt><kbd class="osc">Snap/snap-to-thirtyseconds</kbd></dt><dd>Snap to Thirty Seconds</dd>
-  <dt><kbd class="osc">Snap/snap-to-timecode-frame</kbd></dt><dd>Snap to Timecode Frame</dd>
-  <dt><kbd class="osc">Snap/snap-to-timecode-minutes</kbd></dt><dd>Snap to Timecode Minutes</dd>
-  <dt><kbd class="osc">Snap/snap-to-timecode-seconds</kbd></dt><dd>Snap to Timecode Seconds</dd>
-  <dt><kbd class="osc">Snap/snap-to-twelfths</kbd></dt><dd>Snap to Twelfths</dd>
-  <dt><kbd class="osc">Snap/snap-to-twentieths</kbd></dt><dd>Snap to Twentieths</dd>
-  <dt><kbd class="osc">Snap/snap-to-twentyeighths</kbd></dt><dd>Snap to Twenty Eighths</dd>
-  <dt><kbd class="osc">Snap/snap-to-twentyfourths</kbd></dt><dd>Snap to Twenty Fourths</dd>
-  <!-- Zoom section ok -->
-  <dt><kbd class="osc">Zoom/zoom-focus-center</kbd></dt><dd>Zoom Focus Center</dd>
-  <dt><kbd class="osc">Zoom/zoom-focus-edit</kbd></dt><dd>Zoom Focus Edit Point</dd>
-  <dt><kbd class="osc">Zoom/zoom-focus-left</kbd></dt><dd>Zoom Focus Left</dd>
-  <dt><kbd class="osc">Zoom/zoom-focus-mouse</kbd></dt><dd>Zoom Focus Mouse</dd>
-  <dt><kbd class="osc">Zoom/zoom-focus-playhead</kbd></dt><dd>Zoom Focus Playhead</dd>
-  <dt><kbd class="osc">Zoom/zoom-focus-right</kbd></dt><dd>Zoom Focus Right</dd>
-  <!-- Mixer section totally new -->
-  <dt><kbd class="osc">/Mixer/ab-plugins</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/copy-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/cut-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/decrement-gain</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/delete-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/increment-gain</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/mute</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/paste-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/recenable</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/scroll-left</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/scroll-right</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/select-all-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/select-none</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/solo</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/toggle-midi-input-active</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/toggle-processors</kbd></dt><dd></dd>
-  <dt><kbd class="osc">/Mixer/unity-gain</kbd></dt><dd></dd>
-</dl>
-
diff --git a/include/devices-not-listed.html b/include/devices-not-listed.html
new file mode 100644 (file)
index 0000000..579ca6e
--- /dev/null
@@ -0,0 +1,18 @@
+---
+layout: default
+title: What to do if your Device is not Listed
+menu_title: Unlisted devices
+---
+
+<p>
+  All Mackie Control devices are based on the original Logic Control and the
+  documentation in the user manual that came with it. The Mackie Control and
+  the Mackie Control Pro and so on, all use this same protocol. Any units
+  from other manufactures will also use the same encoding as best the
+  hardware will allow. If the unit in use has more than one Mackie Control
+  option, it is best to choose Logic Control or LC. Any Templates for the
+  buttons should be chosen the same way as the Function key Editor uses these
+  button names. The "Mackie Control" option should be considered default and
+  should be tried with any unlisted device before attemping to create a
+  custom definition file.
+</p>
diff --git a/include/devices-using-mackielogic-control-protocol.html b/include/devices-using-mackielogic-control-protocol.html
new file mode 100644 (file)
index 0000000..32051b8
--- /dev/null
@@ -0,0 +1,66 @@
+---
+layout: default
+title: Devices using Mackie/Logic Control Protocol
+menu_title: Mackie/Logic Control Devices
+---                        
+
+<p>
+  This will walk you through the process of configuring and using 
+  a MIDI control surface with Ardour that uses the <dfn>Mackie Control
+  protocol</dfn> (MCP) or <dfn>Logic Control protocol</dfn>. Devices that 
+  have been tested and are known to work include the SSL Nucleus, Mackie 
+  Control Pro (plus extenders), Behringer devices in Mackie/Logic mode, 
+  and Steinberg CMC devices.
+</p>
+
+<h2>Enabling Mackie Control in Ardour</h2>
+<p>
+  Navigate to <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>.
+  Double-click on <kbd class="menu">Mackie Control</kbd> to see the setup dialog:
+</p>
+<img src="" alt="Mackie Control Setup Dialog" />
+<p>
+  From the selector at the top, choose the type of device you are using. 
+  (<a
+  href="/using-control-surfaces/devices-using-mackielogic-control-protocol/devices-not-listed/">
+  What to do if your device is not listed</a>).
+</p>
+<p>
+  Once your setup is complete, click "OK" to close the dialog. Now click 
+  on the enable checkbox for "Mackie Control".
+</p>
+
+<h2>Connecting control surface and Ardour MIDI ports</h2>
+<p>
+  If you are using a device that uses ipMIDI, such as the SSL Nucleus, no 
+  MIDI port connections are required &mdash; Ardour and your control 
+  surface will be able to talk to each other automatically.
+</p>
+<p>
+  If you are using a device that uses normal MIDI (via a standard MIDI or 
+  USB cable), you need to connect Ardour's Mackie Control in and out ports 
+  to the MIDI ports leading to and coming from the control surface.
+</p>
+<p>
+  When you have made these connections once, Ardour will recreate them 
+  for you in the future, as long as you leave Mackie Control enabled.
+</p>
+
+<h2>Customizing your control surface</h2>
+<p>
+  Every possible Mackie Control button can be bound to any action present 
+  in Ardour's GUI. Please check your control surface page for suggestions.
+</p>
+
+<h2>Preparing your device for use with Ardour</h2>
+<p>
+  Most interfaces will require some configuration to send and respond to 
+  MCP.
+</p> 
+
+<p class="note">
+  When setting up the control surface, do <em>not</em> use "Pro Tools"
+  mode. Pro Tools is the only DAW that still requires HUI. The rest of
+  world uses Mackie Control Protocol. Ardour does not support HUI.
+</p>
+  
diff --git a/include/feedback-in-osc.html b/include/feedback-in-osc.html
new file mode 100644 (file)
index 0000000..1b40557
--- /dev/null
@@ -0,0 +1,243 @@
+---
+layout: default
+title: OSC&#58; Feedback
+---
+
+<p>
+  Feedback from the Ardour to the the control surface is very useful for
+  a number of things. Motor faders need to know where the the track
+  they have been attached to is at before they were assigned otherwise
+  the DAW fader will jump to where the controller fader is. Likewise,
+  the buttons on each strip need to know what their value is so they can
+  light their LED correctly. Transport controls should let you know if
+  they are active too. This is what feedback is all about.
+</p>
+<p>
+  Ardour does feedback by sending the same path back that is used to
+  control the same function. As such any controls that have feedback
+  have a parameter that is the value of the control or it's state
+  (on or off). In the case of OSC paths listed on the main OSC page
+  as having no parameter, if they have feedback, they will also work
+  with a 1 for button press and 0 for button release. This is because
+  many OSC controllers will only use exactly the same path for feedback
+  as for control. For example:
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/transport_stop</kbd></dt>
+  <dd></dd>
+</dl>
+<p>can be used also in the form:</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/transport_stop <em>press</em></kbd></dt>
+  <dd>where <em>press</em> is an int/bool indicating if the button is pressed or not.</dd>
+</dl>
+
+<p>
+  The feedback does not have the same meaning as the control message.
+  Where the button release sent to Ardour will be ignored and has no
+  meaning. Both states have meaning in feedback to the controller.
+  The feedback will be:
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is an int/bool indicating if the transport is stopped or not.</dd>
+</dl>
+<p>
+  With feedback turned on, OSC control commands that try to change a
+  control that does not exist will get feedback that resets that control
+  to off. For example, sending a /strip/recenable to a buss will not work
+  and Ardour will try to turn the controller LED off in that case. Also
+  note that Pan operation may be limited by pan width in some cases.
+  That is with pan width at 100% (or -100%) there is no pan position
+  movement available.
+</p>
+<p>
+  It may come as a surprise, but feedback often generates more network
+  traffic than control itself does. Some things are more obvious like
+  head position or meters. But even a simple button push like transport
+  start sends not only a signal to turn on the play LED, but also one to
+  turn off the stop LED, the Rewind LED, the Fast Forward LED and the
+  Loop LED. That is still minor, think instead of a surface refresh
+  such as happens when the surface is first connected and then most of
+  that happens every time the fader strips are banked. This is why
+  feedback is enabled in sections so that as little feedback as is
+  actually needed is sent. This is also a consideration if the surface
+  is connected via wifi.
+</p>
+<h2>List of OSC feedback messages</h2>
+
+<h3>Feedback only</h3>
+<p>
+  These messages are feedback only. They are sent as status from Ardour
+  and some of them may be enabled separately from other feedback. See:
+  <a href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+  Calculating Feedback and Strip-types Values.</a>
+</p>
+<p class="note">
+  See strip section below for info about ssid and wrapping it into the
+  path. Also /master and /monitor support what the /strip does.
+</p>
+<p>
+  In the case where Gainmode is set to position, the track name will
+  show the dB value while values are changing.
+</p>
+<dl class="bindings">
+  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
+  <dd>where <em>track_name</em> is a string representing the name of the track</dd>
+  <dt><kbd class="osc">/session_name <em>session_name</em></kbd></dt>
+  <dd>where <em>session_name</em> is a string representing the name of the session</dd>
+  <dt><kbd class="osc">/strip/meter <em>ssid</em> <em>meter</em></kbd></dt>
+  <dd>where <em>meter</em> is a value repesenting the current audio level.
+  (the exact math used is determined by the feedback bits set)</dd>
+  <dt><kbd class="osc">/strip/signal <em>ssid</em> <em>signal</em></kbd></dt>
+  <dd>where <em>signal</em> is a float indicating the instantaneous
+  audio level is -40dB or higher.</dd>
+  <dt><kbd class="osc">/position/smpte <em>time</em></kbd></dt>
+  <dd>where <em>time</em> is a string with the current play head time. Seconds as per smpte.</dd>
+  <dt><kbd class="osc">/position/bbt <em>beat</em></kbd></dt>
+  <dd>where <em>beat</em> is a string with the current play head bar/beat.</dd>
+  <dt><kbd class="osc">/position/time <em>time</em></kbd></dt>
+  <dd>where <em>time</em> is a string with the current play head time. Seconds are in milliseconds</dd>
+  <dt><kbd class="osc">/position/samples <em>samples</em></kbd></dt>
+  <dd>where <em>samples</em> is a string with the current play head position in samples.</dd>
+  <dt><kbd class="osc">/heartbeat <em>LED</em></kbd></dt>
+  <dd>where <em>LED</em> is a float that cycles 1/0 at 1 second intervals.</dd>
+  <dt><kbd class="osc">/record_tally <em>state</em></kbd></dt>
+  <dd>Some record enable is true or "ready to record". For a "Recording" sign at studio door.</dd>
+</dl>
+
+<h3>Transport Control</h3>
+<dl class="bindings">
+  <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
+  <dd><em>state</em> is true when transport is stopped</dd>
+  <dt><kbd class="osc">/transport_play <em>state</em></kbd></dt>
+  <dd><em>state</em> is true when transport speed is 1.0</dd>
+  <dt><kbd class="osc">/ffwd <em>state</em></kbd></dt>
+  <dd><em>state</em> is true when transport is moving forward but not at speed 1.0</dd>
+  <dt><kbd class="osc">/rewind <em>state</em></kbd></dt>
+  <dd><em>state</em> is true when transport speed is less than 0.0</dd>
+  <dt><kbd class="osc">/loop_toggle <em>state</em></kbd></dt>
+  <dd><em>state</em> is true when loop mode is true</dd>
+  <dt><kbd class="osc">/cancel_all_solos <em>state</em></kbd></dt>
+  <dd>Where <em>state</em> true indicates there are active solos that can be canceled.</dd>
+</dl>
+
+<h3>Recording control</h3>
+<dl class="bindings">
+  <!--dt><kbd class="osc">/toggle_punch_in</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/toggle_punch_out</kbd></dt>
+  <dd></dd-->
+  <dt><kbd class="osc">/rec_enable_toggle <em>state</em></kbd></dt>
+  <dd>Master record enabled.</dd>
+</dl>
+
+<h3>Master and monitor strips</h3>
+<p>
+  Master and monitor strips are similar to track strips but do not use
+  the SSID. Rather they use their name as part of the path:
+</p>
+<dl class="bindings">
+  <dt><kbd class="osc">/master/gain <em>dB</em></kbd></dt>
+  <dd>where <em>dB</em> is a float ranging from -193 to +6 representing the actual gain of master in dB</dd>
+  <dt><kbd class="osc">/master/fader  <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
+  <dt><kbd class="osc">/master/trimdB <em>dB</em></kbd></dt>
+  <dd>where <em>dB</em> is a float ranging from -20 to +20 representing the actual trim for master in dB</dd>
+  <dt><kbd class="osc">/master/pan_stereo_position <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position for master</dd>
+  <dt><kbd class="osc">/master/mute  <em>yn</em></kbd></dt>
+  <dd>where <em>yn</em> is a bool/int representing the actual mute state of the Master strip</dd>
+  <dt><kbd class="osc">/monitor/gain <em>dB</em></kbd></dt>
+  <dd>where <em>dB</em> is a float ranging from -193 to 6 representing the actual gain of monitor in dB</dd>
+  <dt><kbd class="osc">/monitor/fader  <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
+</dl>
+
+<h3>Track specific operations</h3>
+<p>
+  For each of the following, <em>ssid</em> is the surface strip ID for the track
+</p>
+<p class="note">
+  Some Surfaces (many Android applets) are not able to deal with more
+  than one parameter in a command. However, the two parameter commands
+  below can also be sent as /strip/command/ssid param. Feedback can be
+  set to match this with the /set_surface/feedback <em>state</em>
+  command. See <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+  Calculating Feedback and Strip-types Values.</a>
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/bank_up <em>LED</em></kbd></dt>
+  <dd>where <em>LED</em> is a bool that indicates another bank_up operation is possible.</dd>
+  <dt><kbd class="osc">/bank_down <em>LED</em></kbd></dt>
+  <dd>where <em>LED</em> is a bool that indicates another bank_down operation is possible.</dd>
+  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
+  <dd>where <em>track_name</em> is a string representing the name of the track
+  (note there is no coresponding command to set the track name)</dd>
+  <dt><kbd class="osc">/strip/mute <em>ssid</em> <em>mute_st</em></kbd></dt>
+  <dd>where <em>mute_st</em> is a bool/int representing the actual mute state of the track</dd>
+  <dt><kbd class="osc">/strip/solo <em>ssid</em> <em>solo_st</em></kbd></dt>
+  <dd>where <em>solo_st</em> is a bool/int representing the actual solo state of the track</dd>
+  <dt><kbd class="osc">/strip/monitor_input <em>ssid</em> <em>monitor_st</em></kbd></dt>
+  <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor input</dd>
+  <dt><kbd class="osc">/strip/monitor_disk <em>ssid</em> <em>monitor_st</em></kbd></dt>
+  <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor disk,
+  where both disk and input are false/0, auto monitoring is used.</dd>
+  <dt><kbd class="osc">/strip/recenable <em>ssid</em> <em>rec_st</em></kbd></dt>
+  <dd>where <em>rec_st</em> is a bool/int representing the actual rec state of the track</dd>
+  <dt><kbd class="osc">/strip/record_safe <em>ssid</em> <em>rec_st</em></kbd></dt>
+  <dd>where <em>rec_st</em> is a bool/int representing the actual record safe state of the track</dd>
+  <dt><kbd class="osc">/strip/gain <em>ssid</em> <em>gain</em></kbd></dt>
+  <dd>where <em>gain</em> is a float ranging from -193 to 6 representing the actual gain of the track in dB.</dd>
+  <dt><kbd class="osc">/strip/fader <em>ssid</em>  <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is an float ranging from 0 to 1 representing the actual fader position of the track.</dd>
+  <dt><kbd class="osc">/strip/trimdB <em>ssid</em>  <em>trim_db</em></kbd></dt>
+  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the actual trim of the track in dB.</dd>
+  <dt><kbd class="osc">/strip/pan_stereo_position <em>ssid</em> <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position of the track</dd>
+</dl>
+<h3>Selection Operations</h3>
+<p>
+  Selection feedback is the same as for strips, only the path changes
+  from <em>/strip</em> to <em>/select</em> and there is no <em>ssid</em>.
+  there are some extra feedback and commands that will be listed here.
+</p>
+<dl class="bindings">
+  <dt><kbd class="osc">/select/n_inputs <em>number</em></kbd></dt>
+  <dd>where <em>number</em> number of inputs for this strip</dd>
+  <dt><kbd class="osc">/select/n_outputs <em>number</em></kbd></dt>
+  <dd>where <em>number</em> number of outputs for this strip</dd>
+  <dt><kbd class="osc">/select/comment <em>text</em></kbd></dt>
+  <dd>where <em>text</em> is the strip comment</dd>
+  <dt><kbd class="osc">/select/solo_iso <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the Actual solo isolate state of the track</dd>
+  <dt><kbd class="osc">/select/solo_safe <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the actual solo safe/lock state of the track</dd>
+  <dt><kbd class="osc">/select/polarity <em>invert</em></kbd></dt>
+  <dd>where <em>invert</em> is a bool/int representing the actual polarity of the track</dd>
+  <dt><kbd class="osc">/select/pan_stereo_width <em>width</em></kbd></dt>
+  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the actual pan width of the track</dd>
+  <dt><kbd class="osc">/select/send_gain", <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em>is a float
+  ranging from -193 to +6 representing the actual gain in dB for the send</dd>
+  <dt><kbd class="osc">/select/send_fader", <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em>is a float
+  ranging from 0 to 1 representing the actual position for the send as a fader</dd>
+  <dt><kbd class="osc">/select/send_name <em>sendid</em> <em>send_name</em></kbd></dt>
+  <dd>where <em>send_name</em> is a string representing the name of the buss
+  this send goes to.</dd>
+</dl>
+<h3>Menu actions</h3>
+<p>
+  Every single menu item in Ardour's GUI is accessible via OSC. However,
+  there is no provision for returning the state of anything set this way.
+  This is not a bad thing as most menu items either do not have an on/off
+  state or that state is quite visible. Binding that affect other parameters
+  that OSC does track will show on those OSC controls. Examples of this
+  might be track record enable for tracks 1 to 32, play or stop.
+</p>
diff --git a/include/mackie-control-setup-on-linux.html b/include/mackie-control-setup-on-linux.html
new file mode 100644 (file)
index 0000000..e155e5a
--- /dev/null
@@ -0,0 +1,20 @@
+---
+layout: default
+title: Mackie Control Setup on Linux
+---                        
+
+<h2>Devices using ipMIDI</h2>
+<p>
+  If you are using a device like the SSL Nucleus that uses ipMIDI, 
+  no set up is required other than to ensure that your control surface 
+  and computer are both connected to the same network.
+</p>
+
+<h2>Devices using conventional MIDI</h2>
+<p>
+  Before attempting to use a Mackie Control device that communicates via 
+  a standard MIDI cable or a USB cable, you should ensure that 
+  <a href="/setting-up-your-system/setting-up-midi/midi-on-linux/">your Linux 
+  MIDI environment is setup</a>.
+</p>
+  
diff --git a/include/menu-actions-list.html b/include/menu-actions-list.html
new file mode 100644 (file)
index 0000000..8bf4131
--- /dev/null
@@ -0,0 +1,743 @@
+---
+layout: default
+title: List of Menu Actions
+---
+
+
+<h2>Menu actions</h2>
+<p>
+  Every single menu item in Ardour's GUI is accessible by control
+  surfaces or scripts.
+  </p>
+
+<p>
+  The list below shows all available values of <em>action-name</em> as of
+  June 2016 for Ardour 5.0.pre0.1. You can get the current list at any
+  time by running Ardour with the -b flag.
+  </p>
+<dl class="bindings">
+       <dt><strong>Action Name</strong></dt><dd><strong>Menu Name</strong></dd>
+  <!-- ProcessorMenu - ok -->
+  <dt><kbd class="osc">ProcessorMenu/ab_plugins</kbd></dt><dd>A/B Plugins</dd>
+  <dt><kbd class="osc">ProcessorMenu/activate_all</kbd></dt><dd>Activate All</dd>
+  <dt><kbd class="osc">ProcessorMenu/clear</kbd></dt><dd>Clear (all)</dd>
+  <dt><kbd class="osc">ProcessorMenu/clear_post</kbd></dt><dd>Clear (post-fader)</dd>
+  <dt><kbd class="osc">ProcessorMenu/clear_pre</kbd></dt><dd>Clear (pre-fader)</dd>
+  <dt><kbd class="osc">ProcessorMenu/controls</kbd></dt><dd>Controls</dd>
+  <dt><kbd class="osc">ProcessorMenu/copy</kbd></dt><dd>Copy</dd>
+  <dt><kbd class="osc">ProcessorMenu/cut</kbd></dt><dd>Cut</dd>
+  <dt><kbd class="osc">ProcessorMenu/deactivate_all</kbd></dt><dd>Deactivate All</dd>
+  <dt><kbd class="osc">ProcessorMenu/delete</kbd></dt><dd>Delete</dd>
+  <dt><kbd class="osc">ProcessorMenu/deselectall</kbd></dt><dd>Deselect All</dd>
+  <dt><kbd class="osc">ProcessorMenu/edit-generic</kbd></dt><dd>Edit with generic controls...</dd>
+  <dt><kbd class="osc">ProcessorMenu/edit</kbd></dt><dd>Edit...</dd>
+  <dt><kbd class="osc">ProcessorMenu/newaux</kbd></dt><dd>New Aux Send ...</dd>
+  <dt><kbd class="osc">ProcessorMenu/newinsert</kbd></dt><dd>New Insert</dd>
+  <dt><kbd class="osc">ProcessorMenu/newplugin</kbd></dt><dd>New Plugin</dd>
+  <dt><kbd class="osc">ProcessorMenu/newsend</kbd></dt><dd>New External Send ...</dd>
+  <dt><kbd class="osc">ProcessorMenu/paste</kbd></dt><dd>Paste</dd>
+  <dt><kbd class="osc">ProcessorMenu/rename</kbd></dt><dd>Rename</dd>
+  <dt><kbd class="osc">ProcessorMenu/selectall</kbd></dt><dd>Select All</dd>
+  <dt><kbd class="osc">ProcessorMenu/send_options</kbd></dt><dd>Send Options</dd>
+  <!-- Common - updated -->
+  <dt><kbd class="osc">Common/Hide</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/NewMIDITracer</kbd></dt><dd>MIDI Tracer</dd>
+  <dt><kbd class="osc">Common/Quit</kbd></dt><dd>Quit</dd>
+  <dt><kbd class="osc">Common/Save</kbd></dt><dd>Save</dd>
+  <dt><kbd class="osc">Common/ToggleMaximalEditor</kbd></dt><dd>Maximize Editor Space</dd>
+  <dt><kbd class="osc">Common/ToggleMaximalMixer</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/ToggleMixerList</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/ToggleMonitorSection</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack10</kbd></dt><dd>Toggle Record Enable Track 10</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack11</kbd></dt><dd>Toggle Record Enable Track 11</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack12</kbd></dt><dd>Toggle Record Enable Track 12</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack13</kbd></dt><dd>Toggle Record Enable Track 13</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack14</kbd></dt><dd>Toggle Record Enable Track 14</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack15</kbd></dt><dd>Toggle Record Enable Track 15</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack16</kbd></dt><dd>Toggle Record Enable Track 16</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack17</kbd></dt><dd>Toggle Record Enable Track 17</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack18</kbd></dt><dd>Toggle Record Enable Track 18</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack19</kbd></dt><dd>Toggle Record Enable Track 19</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack1</kbd></dt><dd>Toggle Record Enable Track 1</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack20</kbd></dt><dd>Toggle Record Enable Track 20</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack21</kbd></dt><dd>Toggle Record Enable Track 21</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack22</kbd></dt><dd>Toggle Record Enable Track 22</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack23</kbd></dt><dd>Toggle Record Enable Track 23</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack24</kbd></dt><dd>Toggle Record Enable Track 24</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack25</kbd></dt><dd>Toggle Record Enable Track 25</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack26</kbd></dt><dd>Toggle Record Enable Track 26</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack27</kbd></dt><dd>Toggle Record Enable Track 27</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack28</kbd></dt><dd>Toggle Record Enable Track 28</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack29</kbd></dt><dd>Toggle Record Enable Track 29</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack2</kbd></dt><dd>Toggle Record Enable Track 2</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack30</kbd></dt><dd>Toggle Record Enable Track 30</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack31</kbd></dt><dd>Toggle Record Enable Track 31</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack32</kbd></dt><dd>Toggle Record Enable Track 32</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack3</kbd></dt><dd>Toggle Record Enable Track 3</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack4</kbd></dt><dd>Toggle Record Enable Track 4</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack5</kbd></dt><dd>Toggle Record Enable Track 5</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack6</kbd></dt><dd>Toggle Record Enable Track 6</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack7</kbd></dt><dd>Toggle Record Enable Track 7</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack8</kbd></dt><dd>Toggle Record Enable Track 8</dd>
+  <dt><kbd class="osc">Common/ToggleRecordEnableTrack9</kbd></dt><dd>Toggle Record Enable Track 9</dd>
+  <dt><kbd class="osc">Common/attach-editor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/attach-mixer</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/attach-preferences</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/change-editor-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/change-mixer-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/change-preferences-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/Chat</kbd></dt><dd>Chat</dd>
+  <dt><kbd class="osc">Common/cheat-sheet</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/detach-editor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/detach-mixer</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/detach-preferences</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/forums</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/hide-editor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/hide-mixer</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/hide-preferences</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/howto-report</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/key-change-editor-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/key-change-mixer-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/key-change-preferences-visibility</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/Manual</kbd></dt><dd>Manual</dd>
+  <dt><kbd class="osc">Common/menu-show-preferences</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/next-tab</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/previous-tab</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/Reference</kbd></dt><dd>Reference</dd>
+  <dt><kbd class="osc">Common/show-editor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/show-mixer</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/show-preferences</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/toggle-editor-mixer</kbd></dt><dd>Toggle Editor+Mixer</dd>
+  <dt><kbd class="osc">Common/toggle-luawindow</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/toggle-meterbridge</kbd></dt><dd>Meterbridge</dd>
+  <dt><kbd class="osc">Common/tracker</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/website</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Common/website-dev</kbd></dt><dd></dd>
+  <!-- MIDI - updated-->
+  <dt><kbd class="osc">MIDI/panic</kbd></dt><dd>Panic</dd>
+  <!-- Main - updated -->
+  <dt><kbd class="osc">Main/AddLuaScript</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/AddTrackBus</kbd></dt><dd>Add Track or Bus...</dd>
+  <dt><kbd class="osc">Main/CleanupPeakFiles</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/CleanupUnused</kbd></dt><dd>Clean-up Unused Sources...</dd>
+  <dt><kbd class="osc">Main/Close</kbd></dt><dd>Close</dd>
+  <dt><kbd class="osc">Main/CloseVideo</kbd></dt><dd>Remove Video</dd>
+  <dt><kbd class="osc">Main/EditMetadata</kbd></dt><dd>Edit Metadata...</dd>
+  <dt><kbd class="osc">Main/Escape</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/ExportAudio</kbd></dt><dd>Export To Audio File(s)...</dd>
+  <dt><kbd class="osc">Main/Export</kbd></dt><dd>Export</dd>
+  <dt><kbd class="osc">Main/ExportVideo</kbd></dt><dd>Export To Video File</dd>
+  <dt><kbd class="osc">Main/FlushWastebasket</kbd></dt><dd>Flush Wastebasket</dd>
+  <dt><kbd class="osc">Main/ImportMetadata</kbd></dt><dd>Import Metadata...</dd>
+  <dt><kbd class="osc">Main/Metadata</kbd></dt><dd>Metadata</dd>
+  <dt><kbd class="osc">Main/New</kbd></dt><dd>New...</dd>
+  <dt><kbd class="osc">Main/Open</kbd></dt><dd>Open...</dd>
+  <dt><kbd class="osc">Main/OpenVideo</kbd></dt><dd>Open Video</dd>
+  <dt><kbd class="osc">Main/QuickSnapshotStay</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/QuickSnapshotSwitch</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/Recent</kbd></dt><dd>Recent...</dd>
+  <dt><kbd class="osc">Main/RemoveLuaScript</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/Rename</kbd></dt><dd>Rename...</dd>
+  <dt><kbd class="osc">Main/SaveAs</kbd></dt><dd>Save As...</dd>
+  <dt><kbd class="osc">Main/SaveTemplate</kbd></dt><dd>Save Template...</dd>
+  <dt><kbd class="osc">Main/Scripting</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/SnapshotStay</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/SnapshotSwitch</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/StemExport</kbd></dt><dd>Stem export...</dd>
+  <dt><kbd class="osc">Main/cancel-solo</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main/duplicate-routes</kbd></dt><dd></dd>
+  <!-- Main_menu - updated -->
+  <dt><kbd class="osc">Main_menu/AudioFileFormatData</kbd></dt><dd>Sample Format</dd>
+  <dt><kbd class="osc">Main_menu/AudioFileFormatHeader</kbd></dt><dd>File Type</dd>
+  <dt><kbd class="osc">Main_menu/AudioFileFormat</kbd></dt><dd>Audio File Format</dd>
+  <dt><kbd class="osc">Main_menu/Cleanup</kbd></dt><dd>Clean-up</dd>
+  <dt><kbd class="osc">Main_menu/ControlSurfaces</kbd></dt><dd>Control Surfaces</dd>
+  <dt><kbd class="osc">Main_menu/Denormals</kbd></dt><dd>Denormal Handling</dd>
+  <dt><kbd class="osc">Main_menu/Help</kbd></dt><dd>Help</dd>
+  <dt><kbd class="osc">Main_menu/KeyMouseActions</kbd></dt><dd>Misc. Shortcuts</dd>
+  <dt><kbd class="osc">Main_menu/MeteringFallOffRate</kbd></dt><dd>Fall Off Rate</dd>
+  <dt><kbd class="osc">Main_menu/MeteringHoldTime</kbd></dt><dd>Hold Time</dd>
+  <dt><kbd class="osc">Main_menu/Metering</kbd></dt><dd>Metering</dd>
+  <dt><kbd class="osc">Main_menu/MixerMenu</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main_menu/Plugins</kbd></dt><dd>Plugins</dd>
+  <dt><kbd class="osc">Main_menu/PrefsMenu</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Main_menu/Session</kbd></dt><dd>Session</dd>
+  <dt><kbd class="osc">Main_menu/Sync</kbd></dt><dd>Sync</dd>
+  <dt><kbd class="osc">Main_menu/TransportOptions</kbd></dt><dd>Options</dd>
+  <dt><kbd class="osc">Main_menu/WindowMenu</kbd></dt><dd>Window</dd>
+  <!-- Options -->
+  <dt><kbd class="osc">options/SendMidiClock</kbd></dt><dd>Send MIDI Clock</dd>
+  <dt><kbd class="osc">options/SendMIDIfeedback</kbd></dt><dd>Send MIDI Feedback</dd>
+  <dt><kbd class="osc">options/SendMMC</kbd></dt><dd>Send MMC</dd>
+  <dt><kbd class="osc">options/SendMTC</kbd></dt><dd>Send MTC</dd>
+  <dt><kbd class="osc">options/UseMMC</kbd></dt><dd>Use MMC</dd>
+  <!-- Transport -->
+  <dt><kbd class="osc">Transport/ForwardFast</kbd></dt><dd>Forward (Fast)</dd>
+  <dt><kbd class="osc">Transport/Forward</kbd></dt><dd>Forward</dd>
+  <dt><kbd class="osc">Transport/ForwardSlow</kbd></dt><dd>Forward (Slow)</dd>
+  <dt><kbd class="osc">Transport/GotoEnd</kbd></dt><dd>Goto End</dd>
+  <dt><kbd class="osc">Transport/GotoStart</kbd></dt><dd>Goto Start</dd>
+  <dt><kbd class="osc">Transport/GotoWallClock</kbd></dt><dd>Goto Wall Clock</dd>
+  <dt><kbd class="osc">Transport/GotoZero</kbd></dt><dd>Goto Zero</dd>
+  <dt><kbd class="osc">Transport/Loop</kbd></dt><dd>Play Loop Range</dd>
+  <dt><kbd class="osc">Transport/PlayPreroll</kbd></dt><dd>Play Selection w/Preroll</dd>
+  <dt><kbd class="osc">Transport/PlaySelection</kbd></dt><dd>Play Selected Range</dd>
+  <dt><kbd class="osc">Transport/Record</kbd></dt><dd>Enable Record</dd>
+  <dt><kbd class="osc">Transport/RewindFast</kbd></dt><dd>Rewind (Fast)</dd>
+  <dt><kbd class="osc">Transport/Rewind</kbd></dt><dd>Rewind</dd>
+  <dt><kbd class="osc">Transport/RewindSlow</kbd></dt><dd>Rewind (Slow)</dd>
+  <dt><kbd class="osc">Transport/Roll</kbd></dt><dd>Roll</dd>
+  <dt><kbd class="osc">Transport/Stop</kbd></dt><dd>Stop</dd>
+  <dt><kbd class="osc">Transport/ToggleAutoInput</kbd></dt><dd>Auto Input</dd>
+  <dt><kbd class="osc">Transport/ToggleAutoPlay</kbd></dt><dd>Auto Play</dd>
+  <dt><kbd class="osc">Transport/ToggleAutoReturn</kbd></dt><dd>Auto Return</dd>
+  <dt><kbd class="osc">Transport/ToggleClick</kbd></dt><dd>Click</dd>
+  <dt><kbd class="osc">Transport/ToggleExternalSync</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/ToggleFollowEdits</kbd></dt><dd>Follow Edits</dd>
+  <dt><kbd class="osc">Transport/TogglePunchIn</kbd></dt><dd>Punch In</dd>
+  <dt><kbd class="osc">Transport/TogglePunch</kbd></dt><dd>Punch In/Out</dd>
+  <dt><kbd class="osc">Transport/TogglePunchOut</kbd></dt><dd>Punch Out</dd>
+  <dt><kbd class="osc">Transport/ToggleRollForgetCapture</kbd></dt><dd>Stop and Forget Capture</dd>
+  <dt><kbd class="osc">Transport/ToggleRoll</kbd></dt><dd>Start/Stop</dd>
+  <dt><kbd class="osc">Transport/ToggleRollMaybe</kbd></dt><dd>Start/Continue/Stop</dd>
+  <dt><kbd class="osc">Transport/ToggleTimeMaster</kbd></dt><dd>Time Master</dd>
+  <dt><kbd class="osc">Transport/ToggleVideoSync</kbd></dt><dd>Sync Startup to Video</dd>
+  <dt><kbd class="osc">Transport/TransitionToReverse</kbd></dt><dd>Transition To Reverse</dd>
+  <dt><kbd class="osc">Transport/TransitionToRoll</kbd></dt><dd>Transition To Roll</dd>
+  <dt><kbd class="osc">Transport/Transport</kbd></dt><dd>Transport</dd>
+  <dt><kbd class="osc">Transport/alternate-GotoStart</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/alternate-ToggleRoll</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/alternate-numpad-decimal</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/alternate-record-roll</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/focus-on-clock</kbd></dt><dd>Focus On Clock</dd>
+  <dt><kbd class="osc">Transport/numpad-0</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-1</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-2</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-3</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-4</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-5</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-6</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-7</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-8</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-9</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/numpad-decimal</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Transport/primary-clock-bbt</kbd></dt><dd>Bars &amp; Beats</dd>
+  <dt><kbd class="osc">Transport/primary-clock-minsec</kbd></dt><dd>Minutes &amp; Seconds</dd>
+  <dt><kbd class="osc">Transport/primary-clock-samples</kbd></dt><dd>Samples</dd>
+  <dt><kbd class="osc">Transport/primary-clock-timecode</kbd></dt><dd>Timecode</dd>
+  <dt><kbd class="osc">Transport/record-roll</kbd></dt><dd>Start Recording</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-bbt</kbd></dt><dd>Bars &amp; Beats</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-minsec</kbd></dt><dd>Minutes &amp; Seconds</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-samples</kbd></dt><dd>Samples</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-timecode</kbd></dt><dd>Timecode</dd>
+  <!-- WIndow -->
+  <dt><kbd class="osc">Window/toggle-about</kbd></dt><dd>About</dd>
+  <dt><kbd class="osc">Window/toggle-add-routes</kbd></dt><dd>Add Tracks/Busses</dd>
+  <dt><kbd class="osc">Window/toggle-add-video</kbd></dt><dd>Add Tracks/Busses</dd>
+  <dt><kbd class="osc">Window/toggle-audio-connection-manager</kbd></dt><dd>Audio Connections</dd>
+  <dt><kbd class="osc">Window/toggle-audio-midi-setup</kbd></dt><dd>Audio/MIDI Setup</dd>
+  <dt><kbd class="osc">Window/toggle-big-clock</kbd></dt><dd>Big Clock</dd>
+  <dt><kbd class="osc">Window/toggle-bundle-manager</kbd></dt><dd>Bundle Manager</dd>
+  <dt><kbd class="osc">Window/toggle-inspector</kbd></dt><dd>Tracks and Busses</dd>
+  <dt><kbd class="osc">Window/toggle-key-editor</kbd></dt><dd>Key Bindings</dd>
+  <dt><kbd class="osc">Window/toggle-locations</kbd></dt><dd>Locations</dd>
+  <dt><kbd class="osc">Window/toggle-midi-connection-manager</kbd></dt><dd>MIDI Connections</dd>
+  <dt><kbd class="osc">Window/toggle-script-manager</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Window/toggle-session-options-editor</kbd></dt><dd>Properties</dd>
+  <dt><kbd class="osc">Window/toggle-speaker-config</kbd></dt><dd>Speaker Configuration</dd>
+  <dt><kbd class="osc">Window/toggle-video-export</kbd></dt><dd></dd>
+  <!-- Editor -->
+  <dt><kbd class="osc">Editor/SnapMode</kbd></dt><dd>Snap Mode</dd>
+  <dt><kbd class="osc">Editor/SnapTo</kbd></dt><dd>Snap to</dd>
+  <dt><kbd class="osc">Editor/ToggleGroupTabs</kbd></dt><dd>Show Group Tabs</dd>
+  <dt><kbd class="osc">Editor/ToggleJadeo</kbd></dt><dd>Video Monitor</dd>
+  <dt><kbd class="osc">Editor/ToggleMeasureVisibility</kbd></dt><dd>Show Measures</dd>
+  <dt><kbd class="osc">Editor/ToggleSummary</kbd></dt><dd>Show Summary</dd>
+  <dt><kbd class="osc">Editor/add-location-from-playhead</kbd></dt><dd>Add Mark from Playhead</dd>
+  <dt><kbd class="osc">Editor/addExistingAudioFiles</kbd></dt><dd>Import</dd>
+  <dt><kbd class="osc">Editor/addExistingPTFiles</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/addExternalAudioToRegionList</kbd></dt><dd>Import to Region List...</dd>
+  <dt><kbd class="osc">Editor/alt-finish-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alt-start-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-add-location-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-alternate-redo</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-editor-delete</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-jump-backward-to-mark</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-jump-forward-to-mark</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-redo</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-remove-location-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-select-all-after-edit-cursor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-select-all-before-edit-cursor</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-tab-to-transient-backwards</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/alternate-tab-to-transient-forwards</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/bring-into-session</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/center-edit-cursor</kbd></dt><dd>Center Edit Point</dd>
+  <dt><kbd class="osc">Editor/center-playhead</kbd></dt><dd>Center Playhead</dd>
+  <dt><kbd class="osc">Editor/crop</kbd></dt><dd>Crop</dd>
+  <dt><kbd class="osc">Editor/cycle-edit-point</kbd></dt><dd>Change Edit Point</dd>
+  <dt><kbd class="osc">Editor/cycle-edit-point-with-marker</kbd></dt><dd>Change Edit Point Including Marker</dd>
+  <dt><kbd class="osc">Editor/cycle-snap-mode</kbd></dt><dd>Next Snap Mode</dd>
+  <dt><kbd class="osc">Editor/cycle-zoom-focus</kbd></dt><dd>Next Zoom Focus</dd>
+  <dt><kbd class="osc">Editor/deselect-all</kbd></dt><dd>Deselect All</dd>
+  <dt><kbd class="osc">Editor/duplicate-range</kbd></dt><dd>Duplicate Range</dd>
+  <dt><kbd class="osc">Editor/edit-at-mouse</kbd></dt><dd>Mouse</dd>
+  <dt><kbd class="osc">Editor/edit-at-playhead</kbd></dt><dd>Playhead</dd>
+  <dt><kbd class="osc">Editor/edit-at-selected-marker</kbd></dt><dd>Marker</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-end</kbd></dt><dd>To Next Region End</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-start</kbd></dt><dd>To Next Region Start</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-next-region-sync</kbd></dt><dd>To Next Region Sync</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-end</kbd></dt><dd>To Previous Region End</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-start</kbd></dt><dd>To Previous Region Start</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-previous-region-sync</kbd></dt><dd>To Previous Region Sync</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-range-end</kbd></dt><dd>To Range End</dd>
+  <dt><kbd class="osc">Editor/edit-cursor-to-range-start</kbd></dt><dd>To Range Start</dd>
+  <dt><kbd class="osc">Editor/edit-to-playhead</kbd></dt><dd>Active Mark to Playhead</dd>
+  <dt><kbd class="osc">Editor/editor-copy</kbd></dt><dd>Copy</dd>
+  <dt><kbd class="osc">Editor/editor-crop</kbd></dt><dd>Crop</dd>
+  <dt><kbd class="osc">Editor/editor-cut</kbd></dt><dd>Cut</dd>
+  <dt><kbd class="osc">Editor/editor-delete</kbd></dt><dd>Delete</dd>
+  <dt><kbd class="osc">Editor/editor-fade-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/editor-paste</kbd></dt><dd>Paste</dd>
+  <dt><kbd class="osc">Editor/editor-separate</kbd></dt><dd>Separate</dd>
+  <dt><kbd class="osc">Editor/expand-tracks</kbd></dt><dd>Expand Track Height</dd>
+  <dt><kbd class="osc">Editor/export-audio</kbd></dt><dd>Export Audio</dd>
+  <dt><kbd class="osc">Editor/export-range</kbd></dt><dd>Export Range</dd>
+  <dt><kbd class="osc">Editor/finish-loop-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/finish-punch-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/finish-range</kbd></dt><dd>Finish Range</dd>
+  <dt><kbd class="osc">Editor/fit-selection</kbd></dt><dd>Fit Selected Tracks</dd>
+  <dt><kbd class="osc">Editor/fit_16_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_1_track</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_2_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_32_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_4_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_8_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/fit_all_tracks</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/goto-mark-1</kbd></dt><dd>Locate to Mark 1</dd>
+  <dt><kbd class="osc">Editor/goto-mark-2</kbd></dt><dd>Locate to Mark 2</dd>
+  <dt><kbd class="osc">Editor/goto-mark-3</kbd></dt><dd>Locate to Mark 3</dd>
+  <dt><kbd class="osc">Editor/goto-mark-4</kbd></dt><dd>Locate to Mark 4</dd>
+  <dt><kbd class="osc">Editor/goto-mark-5</kbd></dt><dd>Locate to Mark 5</dd>
+  <dt><kbd class="osc">Editor/goto-mark-6</kbd></dt><dd>Locate to Mark 6</dd>
+  <dt><kbd class="osc">Editor/goto-mark-7</kbd></dt><dd>Locate to Mark 7</dd>
+  <dt><kbd class="osc">Editor/goto-mark-8</kbd></dt><dd>Locate to Mark 8</dd>
+  <dt><kbd class="osc">Editor/goto-mark-9</kbd></dt><dd>Locate to Mark 9</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-10</kbd></dt><dd>Goto View 10</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-11</kbd></dt><dd>Goto View 11</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-12</kbd></dt><dd>Goto View 12</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-1</kbd></dt><dd>Goto View 1</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-2</kbd></dt><dd>Goto View 2</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-3</kbd></dt><dd>Goto View 3</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-4</kbd></dt><dd>Goto View 4</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-5</kbd></dt><dd>Goto View 5</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-6</kbd></dt><dd>Goto View 6</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-7</kbd></dt><dd>Goto View 7</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-8</kbd></dt><dd>Goto View 8</dd>
+  <dt><kbd class="osc">Editor/goto-visual-state-9</kbd></dt><dd>Goto View 9</dd>
+  <dt><kbd class="osc">Editor/importFromSession</kbd></dt><dd>Import From Session</dd>
+  <dt><kbd class="osc">Editor/insert-time</kbd></dt><dd>Insert Time</dd>
+  <dt><kbd class="osc">Editor/invert-selection</kbd></dt><dd>Invert Selection</dd>
+  <dt><kbd class="osc">Editor/jump-backward-to-mark</kbd></dt><dd>Jump to Previous Mark</dd>
+  <dt><kbd class="osc">Editor/jump-forward-to-mark</kbd></dt><dd>Jump to Next Mark</dd>
+  <dt><kbd class="osc">Editor/lock</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/main-menu-play-selected-regions</kbd></dt><dd>Play Selected Regions</dd>
+  <dt><kbd class="osc">Editor/move-range-end-to-next-region-boundary</kbd></dt><dd>Move Range End to Next Region Boundary</dd>
+  <dt><kbd class="osc">Editor/move-range-end-to-previous-region-boundary</kbd></dt><dd>Move Range End to Previous Region Boundary</dd>
+  <dt><kbd class="osc">Editor/move-range-start-to-next-region-boundary</kbd></dt><dd>Move Range Start to Next Region Boundary</dd>
+  <dt><kbd class="osc">Editor/move-range-start-to-previous-region-boundary</kbd></dt><dd>Move Range Start to Previous Region Boundary</dd>
+  <dt><kbd class="osc">Editor/move-selected-tracks-down</kbd></dt><dd>Move Selected Tracks Down</dd>
+  <dt><kbd class="osc">Editor/move-selected-tracks-up</kbd></dt><dd>Move Selected Tracks Up</dd>
+  <dt><kbd class="osc">Editor/next-snap-choice</kbd></dt><dd>Next Snap Choice</dd>
+  <dt><kbd class="osc">Editor/next-snap-choice-music-only</kbd></dt><dd>Next Musical Snap Choice</dd>
+  <dt><kbd class="osc">Editor/nudge-next-backward</kbd></dt><dd>Nudge Next Earlier</dd>
+  <dt><kbd class="osc">Editor/nudge-next-forward</kbd></dt><dd>Nudge Next Later</dd>
+  <dt><kbd class="osc">Editor/nudge-playhead-backward</kbd></dt><dd>Nudge Playhead Backward</dd>
+  <dt><kbd class="osc">Editor/nudge-playhead-forward</kbd></dt><dd>Nudge Playhead Forward</dd>
+  <dt><kbd class="osc">Editor/play-edit-range</kbd></dt><dd>Play Edit Range</dd>
+  <dt><kbd class="osc">Editor/play-from-edit-point-and-return</kbd></dt><dd>Play from Edit Point and Return</dd>
+  <dt><kbd class="osc">Editor/play-from-edit-point</kbd></dt><dd>Play From Edit Point</dd>
+  <dt><kbd class="osc">Editor/playhead-backward-to-grid</kbd></dt><dd>Playhead To Previous Grid</dd>
+  <dt><kbd class="osc">Editor/playhead-forward-to-grid</kbd></dt><dd>Playhead To Next Grid</dd>
+  <dt><kbd class="osc">Editor/playhead-to-edit</kbd></dt><dd>Playhead to Active Mark</dd>
+  <dt><kbd class="osc">Editor/playhead-to-next-region-boundary</kbd></dt><dd>Playhead to Next Region Boundary</dd>
+  <dt><kbd class="osc">Editor/playhead-to-next-region-boundary-noselection</kbd></dt><dd>Playhead to Next Region Boundary (No Track Selection)</dd>
+  <dt><kbd class="osc">Editor/playhead-to-next-region-end</kbd></dt><dd>Playhead to Next Region End</dd>
+  <dt><kbd class="osc">Editor/playhead-to-next-region-start</kbd></dt><dd>Playhead to Next Region Start</dd>
+  <dt><kbd class="osc">Editor/playhead-to-next-region-sync</kbd></dt><dd>Playhead to Next Region Sync</dd>
+  <dt><kbd class="osc">Editor/playhead-to-previous-region-boundary</kbd></dt><dd>Playhead to Previous Region Boundary</dd>
+  <dt><kbd class="osc">Editor/playhead-to-previous-region-boundary-noselection</kbd></dt><dd>Playhead to Previous Region Boundary (No Track Selection)</dd>
+  <dt><kbd class="osc">Editor/playhead-to-previous-region-end</kbd></dt><dd>Playhead to Previous Region End</dd>
+  <dt><kbd class="osc">Editor/playhead-to-previous-region-start</kbd></dt><dd>Playhead to Previous Region Start</dd>
+  <dt><kbd class="osc">Editor/playhead-to-previous-region-sync</kbd></dt><dd>Playhead to Previous Region Sync</dd>
+  <dt><kbd class="osc">Editor/playhead-to-range-end</kbd></dt><dd>Playhead to Range End</dd>
+  <dt><kbd class="osc">Editor/playhead-to-range-start</kbd></dt><dd>Playhead to Range Start</dd>
+  <dt><kbd class="osc">Editor/prev-snap-choice</kbd></dt><dd>Previous Snap Choice</dd>
+  <dt><kbd class="osc">Editor/prev-snap-choice-music-only</kbd></dt><dd>Previous Musical Snap Choice</dd>
+  <dt><kbd class="osc">Editor/redo</kbd></dt><dd>Redo</dd>
+  <dt><kbd class="osc">Editor/redo-last-selection-op</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/remove-last-capture</kbd></dt><dd>Remove Last Capture</dd>
+  <dt><kbd class="osc">Editor/remove-location-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/remove-time</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/remove-track</kbd></dt><dd>Remove</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-10</kbd></dt><dd>Save View 10</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-11</kbd></dt><dd>Save View 11</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-12</kbd></dt><dd>Save View 12</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-1</kbd></dt><dd>Save View 1</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-2</kbd></dt><dd>Save View 2</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-3</kbd></dt><dd>Save View 3</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-4</kbd></dt><dd>Save View 4</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-5</kbd></dt><dd>Save View 5</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-6</kbd></dt><dd>Save View 6</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-7</kbd></dt><dd>Save View 7</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-8</kbd></dt><dd>Save View 8</dd>
+  <dt><kbd class="osc">Editor/save-visual-state-9</kbd></dt><dd>Save View 9</dd>
+  <dt><kbd class="osc">Editor/script-action-1</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-2</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-3</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-4</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-5</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-6</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-7</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-8</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/script-action-9</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/scroll-backward</kbd></dt><dd>Scroll Backward</dd>
+  <dt><kbd class="osc">Editor/scroll-forward</kbd></dt><dd>Scroll Forward</dd>
+  <dt><kbd class="osc">Editor/scroll-playhead-backward</kbd></dt><dd>Playhead Backward</dd>
+  <dt><kbd class="osc">Editor/scroll-playhead-forward</kbd></dt><dd>Playhead Forward</dd>
+  <dt><kbd class="osc">Editor/scroll-tracks-down</kbd></dt><dd>Scroll Tracks Down</dd>
+  <dt><kbd class="osc">Editor/scroll-tracks-up</kbd></dt><dd>Scroll Tracks Up</dd>
+  <dt><kbd class="osc">Editor/select-all-after-edit-cursor</kbd></dt><dd>Select All After Edit Point</dd>
+  <dt><kbd class="osc">Editor/select-all-before-edit-cursor</kbd></dt><dd>Select All Before Edit Point</dd>
+  <dt><kbd class="osc">Editor/select-all-between-cursors</kbd></dt><dd>Select All Overlapping Edit Range</dd>
+  <dt><kbd class="osc">Editor/select-all-in-loop-range</kbd></dt><dd>Select All in Loop Range</dd>
+  <dt><kbd class="osc">Editor/select-all-in-punch-range</kbd></dt><dd>Select All in Punch Range</dd>
+  <dt><kbd class="osc">Editor/select-all-objects => Ctrl+A</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/select-all-tracks => Ctrl+T</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/select-all-within-cursors</kbd></dt><dd>Select All Inside Edit Range</dd>
+  <dt><kbd class="osc">Editor/select-from-regions</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/select-loop-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/select-next-route</kbd></dt><dd>Select Next Track or Bus</dd>
+  <dt><kbd class="osc">Editor/select-prev-route</kbd></dt><dd>Select Previous Track or Bus</dd>
+  <dt><kbd class="osc">Editor/select-punch-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/select-range-between-cursors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/selected-marker-to-next-region-boundary</kbd></dt><dd>To Next Region Boundary</dd>
+  <dt><kbd class="osc">Editor/selected-marker-to-next-region-boundary-noselection</kbd></dt><dd>To Next Region Boundary (No Track Selection)</dd>
+  <dt><kbd class="osc">Editor/selected-marker-to-previous-region-boundary</kbd></dt><dd>To Previous Region Boundary</dd>
+  <dt><kbd class="osc">Editor/selected-marker-to-previous-region-boundary-noselection</kbd></dt><dd>To Previous Region Boundary (No Track Selection)</dd>
+  <dt><kbd class="osc">Editor/select-range-between-cursors</kbd></dt><dd>Select Edit Range</dd>
+  <dt><kbd class="osc">Editor/separate-from-loop</kbd></dt><dd>Separate Using Loop Range</dd>
+  <dt><kbd class="osc">Editor/separate-from-punch</kbd></dt><dd>Separate Using Punch Range</dd>
+  <dt><kbd class="osc">Editor/set-edit-lock</kbd></dt><dd>Lock</dd>
+  <dt><kbd class="osc">Editor/set-edit-point</kbd></dt><dd>Active Marker to Mouse</dd>
+  <dt><kbd class="osc">Editor/set-edit-ripple</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/set-edit-slide</kbd></dt><dd>Slide</dd>
+  <dt><kbd class="osc">Editor/set-loop-from-edit-range</kbd></dt><dd>Set Loop from Edit Range</dd>
+  <dt><kbd class="osc">Editor/set-playhead</kbd></dt><dd>Playhead to Mouse</dd>
+  <dt><kbd class="osc">Editor/set-punch-from-edit-range</kbd></dt><dd>Set Punch from Edit Range</dd>
+  <dt><kbd class="osc">Editor/set-session-end-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/set-session-from-edit-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/set-session-start-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/set-tempo-from-edit-range</kbd></dt><dd>Set Tempo from Edit Range = Bar</dd>
+  <dt><kbd class="osc">Editor/show-editor-list</kbd></dt><dd>Show Editor List</dd>
+  <dt><kbd class="osc">Editor/show-editor-mixer</kbd></dt><dd>Show Editor Mixer</dd>
+  <dt><kbd class="osc">Editor/show-marker-lines</kbd></dt><dd>Show Marker Lines</dd>
+  <dt><kbd class="osc">Editor/shrink-tracks</kbd></dt><dd>Shrink Track Height</dd>
+  <dt><kbd class="osc">Editor/snap-magnetic</kbd></dt><dd>Magnetic</dd>
+  <dt><kbd class="osc">Editor/snap-normal</kbd></dt><dd>Grid</dd>
+  <dt><kbd class="osc">Editor/snap-off</kbd></dt><dd>No Grid</dd>
+  <dt><kbd class="osc">Editor/sound-midi-notes</kbd></dt><dd>Sound Selected MIDI Notes</dd>
+  <dt><kbd class="osc">Editor/start-loop-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/start-punch-range</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/start-range</kbd></dt><dd>Start Range</dd>
+  <dt><kbd class="osc">Editor/start-range-from-playhead</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/step-mouse-mode</kbd></dt><dd>Step Mouse Mode</dd>
+  <dt><kbd class="osc">Editor/step-tracks-down</kbd></dt><dd>Step Tracks Down</dd>
+  <dt><kbd class="osc">Editor/step-tracks-up</kbd></dt><dd>Step Tracks Up</dd>
+  <dt><kbd class="osc">Editor/tab-to-transient-backwards</kbd></dt><dd>Move Earlier to Transient</dd>
+  <dt><kbd class="osc">Editor/tab-to-transient-forwards</kbd></dt><dd>Move Later to Transient</dd>
+  <dt><kbd class="osc">Editor/temporal-zoom-in</kbd></dt><dd>Zoom In</dd>
+  <dt><kbd class="osc">Editor/temporal-zoom-out</kbd></dt><dd>Zoom Out</dd>
+  <dt><kbd class="osc">Editor/toggle-edit-mode</kbd></dt><dd>Toggle Edit Mode</dd>
+  <dt><kbd class="osc">Editor/toggle-follow-playhead</kbd></dt><dd>Follow Playhead</dd>
+  <dt><kbd class="osc">Editor/toggle-log-window</kbd></dt><dd>Log</dd>
+  <dt><kbd class="osc">Editor/toggle-midi-input-active</kbd></dt><dd>Toggle MIDI Input Active for Editor-Selected Tracks/Busses</dd>
+  <dt><kbd class="osc">Editor/toggle-skip-playback</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/toggle-stationary-playhead</kbd></dt><dd>Stationary Playhead</dd>
+  <dt><kbd class="osc">Editor/toggle-track-active</kbd></dt><dd>Toggle Active</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-frame</kbd></dt><dd>Frame number</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-fullscreen</kbd></dt><dd>Fullscreen</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-letterbox</kbd></dt><dd>Letterbox</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-ontop</kbd></dt><dd>Always on Top</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-osdbg</kbd></dt><dd>Timecode Background</dd>
+  <dt><kbd class="osc">Editor/toggle-vmon-timecode</kbd></dt><dd>Timecode</dd>
+  <dt><kbd class="osc">Editor/toggle-zoom</kbd></dt><dd>Toggle Zoom State</dd>
+  <dt><kbd class="osc">Editor/track-height-large</kbd></dt><dd>Large</dd>
+  <dt><kbd class="osc">Editor/track-height-larger</kbd></dt><dd>Larger</dd>
+  <dt><kbd class="osc">Editor/track-height-largest</kbd></dt><dd>Largest</dd>
+  <dt><kbd class="osc">Editor/track-height-normal</kbd></dt><dd>Normal</dd>
+  <dt><kbd class="osc">Editor/track-height-small</kbd></dt><dd>Small</dd>
+  <dt><kbd class="osc">Editor/track-mute-toggle</kbd></dt><dd>Toggle Mute</dd>
+  <dt><kbd class="osc">Editor/track-record-enable-toggle</kbd></dt><dd>Toggle Record Enable</dd>
+  <dt><kbd class="osc">Editor/track-solo-isolate-toggle</kbd></dt><dd>Toggle Solo Isolate</dd>
+  <dt><kbd class="osc">Editor/track-solo-toggle</kbd></dt><dd>Toggle Solo</dd>
+  <dt><kbd class="osc">Editor/undo</kbd></dt><dd>Undo</dd>
+  <dt><kbd class="osc">Editor/undo-last-selection-op</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom-to-selection</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom-to-session</kbd></dt><dd>Zoom to Session</dd>
+  <dt><kbd class="osc">Editor/zoom-vmon-100</kbd></dt><dd>Original Size</dd>
+  <dt><kbd class="osc">Editor/zoom_100_ms</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_10_min</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_10_ms</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_10_sec</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_1_min</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_1_sec</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Editor/zoom_5_min</kbd></dt><dd></dd>
+  <!-- EditorMenu -  updated -->
+  <dt><kbd class="osc">EditorMenu/ActionScripts</kbd></dt><dd></dd>
+  <dt><kbd class="osc">EditorMenu/AlignMenu</kbd></dt><dd>Align</dd>
+  <dt><kbd class="osc">EditorMenu/Autoconnect</kbd></dt><dd>Autoconnect</dd>
+  <dt><kbd class="osc">EditorMenu/Crossfades</kbd></dt><dd>Crossfades</dd>
+  <dt><kbd class="osc">EditorMenu/EditCursorMovementOptions</kbd></dt><dd>Move Selected Marker</dd>
+  <dt><kbd class="osc">EditorMenu/Edit</kbd></dt><dd>Edit</dd>
+  <dt><kbd class="osc">EditorMenu/EditPointMenu</kbd></dt><dd>Edit Point</dd>
+  <dt><kbd class="osc">EditorMenu/EditSelectRangeOptions</kbd></dt><dd>Select Range Operations</dd>
+  <dt><kbd class="osc">EditorMenu/EditSelectRegionOptions</kbd></dt><dd>Select Regions</dd>
+  <dt><kbd class="osc">EditorMenu/FadeMenu</kbd></dt><dd>Fade</dd>
+  <dt><kbd class="osc">EditorMenu/LatchMenu</kbd></dt><dd>Latch</dd>
+  <dt><kbd class="osc">EditorMenu/Link</kbd></dt><dd>Link</dd>
+  <dt><kbd class="osc">EditorMenu/LocateToMarker</kbd></dt><dd>Locate to Markers</dd>
+  <dt><kbd class="osc">EditorMenu/MIDI</kbd></dt><dd>MIDI Options</dd>
+  <dt><kbd class="osc">EditorMenu/MarkerMenu</kbd></dt><dd>Markers</dd>
+  <dt><kbd class="osc">EditorMenu/MeterFalloff</kbd></dt><dd>Meter falloff</dd>
+  <dt><kbd class="osc">EditorMenu/MeterHold</kbd></dt><dd>Meter hold</dd>
+  <dt><kbd class="osc">EditorMenu/MiscOptions</kbd></dt><dd>Misc Options</dd>
+  <dt><kbd class="osc">EditorMenu/Monitoring</kbd></dt><dd>Monitoring</dd>
+  <dt><kbd class="osc">EditorMenu/MoveActiveMarkMenu</kbd></dt><dd>Active Mark</dd>
+  <dt><kbd class="osc">EditorMenu/MovePlayHeadMenu</kbd></dt><dd>Playhead</dd>
+  <dt><kbd class="osc">EditorMenu/PlayMenu</kbd></dt><dd>Play</dd>
+  <dt><kbd class="osc">EditorMenu/PrimaryClockMenu</kbd></dt><dd>Primary Clock</dd>
+  <dt><kbd class="osc">EditorMenu/Pullup</kbd></dt><dd>Pullup / Pulldown</dd>
+  <dt><kbd class="osc">EditorMenu/RegionEditOps</kbd></dt><dd>Region operations</dd>
+  <dt><kbd class="osc">EditorMenu/RegionGainMenu</kbd></dt><dd>Gain</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuDuplicate</kbd></dt><dd>Duplicate</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuEdit</kbd></dt><dd>Edit</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuFades</kbd></dt><dd>Fades</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuGain</kbd></dt><dd>Gain</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenu</kbd></dt><dd>Region</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuLayering</kbd></dt><dd>Layering</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuMIDI</kbd></dt><dd>MIDI</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuPosition</kbd></dt><dd>Position</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuRanges</kbd></dt><dd>Ranges</dd>
+  <dt><kbd class="osc">EditorMenu/RegionMenuTrim</kbd></dt><dd>Trim</dd>
+  <dt><kbd class="osc">EditorMenu/RulerMenu</kbd></dt><dd>Rulers</dd>
+  <dt><kbd class="osc">EditorMenu/SavedViewMenu</kbd></dt><dd>Views</dd>
+  <dt><kbd class="osc">EditorMenu/ScrollMenu</kbd></dt><dd>Scroll</dd>
+  <dt><kbd class="osc">EditorMenu/SecondaryClockMenu</kbd></dt><dd>Secondary Clock</dd>
+  <dt><kbd class="osc">EditorMenu/Select</kbd></dt><dd>Select</dd>
+  <dt><kbd class="osc">EditorMenu/SelectMenu</kbd></dt><dd>Select</dd>
+  <dt><kbd class="osc">EditorMenu/SeparateMenu</kbd></dt><dd>Separate</dd>
+  <dt><kbd class="osc">EditorMenu/SetLoopMenu</kbd></dt><dd>Loop</dd>
+  <dt><kbd class="osc">EditorMenu/SetPunchMenu</kbd></dt><dd>Punch</dd>
+  <dt><kbd class="osc">EditorMenu/Solo</kbd></dt><dd>Solo</dd>
+  <dt><kbd class="osc">EditorMenu/Subframes</kbd></dt><dd>Subframes</dd>
+  <dt><kbd class="osc">EditorMenu/SyncMenu</kbd></dt><dd>Sync</dd>
+  <dt><kbd class="osc">EditorMenu/TempoMenu</kbd></dt><dd>Tempo</dd>
+  <dt><kbd class="osc">EditorMenu/Timecode</kbd></dt><dd>Timecode fps</dd>
+  <dt><kbd class="osc">EditorMenu/Tools</kbd></dt><dd>Tools</dd>
+  <dt><kbd class="osc">EditorMenu/TrackHeightMenu</kbd></dt><dd>Height</dd>
+  <dt><kbd class="osc">EditorMenu/TrackMenu</kbd></dt><dd>Track</dd>
+  <dt><kbd class="osc">EditorMenu/VideoMonitorMenu</kbd></dt><dd>Video Monitor</dd>
+  <dt><kbd class="osc">EditorMenu/View</kbd></dt><dd>View</dd>
+  <dt><kbd class="osc">EditorMenu/ZoomFocus</kbd></dt><dd>Zoom Focus</dd>
+  <dt><kbd class="osc">EditorMenu/ZoomFocusMenu</kbd></dt><dd>Zoom Focus</dd>
+  <dt><kbd class="osc">EditorMenu/ZoomMenu</kbd></dt><dd>Zoom</dd>
+  <!-- mouseMode - updated-->
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-audition</kbd></dt><dd>Audition Tool</dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-content</kbd></dt><dd></dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-cut</kbd></dt><dd></dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-draw</kbd></dt><dd>Note Drawing Tool</dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-object</kbd></dt><dd>Object Tool</dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-object-range</kbd></dt><dd>Smart Object Mode</dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-range</kbd></dt><dd>Range Tool</dd>
+  <dt><kbd class="osc">MouseMode/set-mouse-mode-timefx</kbd></dt><dd>Time FX Tool</dd>
+  <!-- Region - updated-->
+  <dt><kbd class="osc">Region/add-range-marker-from-region</kbd></dt><dd>Add Single Range Marker</dd>
+  <dt><kbd class="osc">Region/add-range-markers-from-region</kbd></dt><dd>Add Range Marker Per Region</dd>
+  <dt><kbd class="osc">Region/align-regions-end</kbd></dt><dd>Align End</dd>
+  <dt><kbd class="osc">Region/align-regions-end-relative</kbd></dt><dd>Align End Relative</dd>
+  <dt><kbd class="osc">Region/align-regions-start</kbd></dt><dd>Align Start</dd>
+  <dt><kbd class="osc">Region/align-regions-start-relative</kbd></dt><dd>Align Start Relative</dd>
+  <dt><kbd class="osc">Region/align-regions-sync</kbd></dt><dd>Align Sync</dd>
+  <dt><kbd class="osc">Region/align-regions-sync-relative</kbd></dt><dd>Align Sync Relative</dd>
+  <dt><kbd class="osc">/Region/alternate-nudge-backward</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Region/alternate-nudge-forward</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Region/alternate-set-fade-in-length</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Region/alternate-set-fade-out-length</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Region/boost-region-gain</kbd></dt><dd>Boost Gain</dd>
+  <dt><kbd class="osc">Region/bounce-regions-processed</kbd></dt><dd>Bounce (without processing)</dd>
+  <dt><kbd class="osc">Region/bounce-regions-unprocessed</kbd></dt><dd>Bounce (with processing)</dd>
+  <dt><kbd class="osc">Region/choose-top-region-context-menu</kbd></dt><dd>Choose Top...</dd>
+  <dt><kbd class="osc">Region/choose-top-region</kbd></dt><dd>Choose Top...</dd>
+  <dt><kbd class="osc">Region/close-region-gaps</kbd></dt><dd>Close Gaps</dd>
+  <dt><kbd class="osc">Region/combine-regions</kbd></dt><dd>Combine</dd>
+  <dt><kbd class="osc">Region/cut-region-gain</kbd></dt><dd>Cut Gain</dd>
+  <dt><kbd class="osc">Region/duplicate-region</kbd></dt><dd>Duplicate</dd>
+  <dt><kbd class="osc">Region/export-region</kbd></dt><dd>Export...</dd>
+  <dt><kbd class="osc">Region/fork-region</kbd></dt><dd>Unlink from other copies</dd>
+  <dt><kbd class="osc">Region/insert-patch-change-context</kbd></dt><dd>Insert Patch Change...</dd>
+  <dt><kbd class="osc">Region/insert-patch-change</kbd></dt><dd>Insert Patch Change...</dd>
+  <dt><kbd class="osc">Region/insert-region-from-region-list</kbd></dt><dd>Insert Region From Region List</dd>
+  <dt><kbd class="osc">/Region/legatize-region</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Region/loop-region</kbd></dt><dd>Loop</dd>
+  <dt><kbd class="osc">Region/loudness-analyze-region</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Region/lower-region</kbd></dt><dd>Lower</dd>
+  <dt><kbd class="osc">Region/lower-region-to-bottom</kbd></dt><dd>Lower to Bottom</dd>
+  <dt><kbd class="osc">Region/multi-duplicate-region</kbd></dt><dd>Multi-Duplicate...</dd>
+  <dt><kbd class="osc">Region/naturalize-region</kbd></dt><dd>Move to Original Position</dd>
+  <dt><kbd class="osc">Region/normalize-region</kbd></dt><dd>Normalize...</dd>
+  <dt><kbd class="osc">Region/nudge-backward-by-capture-offset</kbd></dt><dd>Nudge Earlier by Capture Offset</dd>
+  <dt><kbd class="osc">Region/nudge-backward</kbd></dt><dd>Nudge Earlier</dd>
+  <dt><kbd class="osc">Region/nudge-forward-by-capture-offset</kbd></dt><dd>Nudge Later by Capture Offset</dd>
+  <dt><kbd class="osc">Region/nudge-forward</kbd></dt><dd>Nudge Later</dd>
+  <dt><kbd class="osc">Region/pitch-shift-region</kbd></dt><dd>Pitch Shift...</dd>
+  <dt><kbd class="osc">Region/place-transient</kbd></dt><dd>Place Transient</dd>
+  <dt><kbd class="osc">Region/play-selected-regions</kbd></dt><dd>Play</dd>
+  <dt><kbd class="osc">Region/quantize-region</kbd></dt><dd>Quantize...</dd>
+  <dt><kbd class="osc">Region/raise-region</kbd></dt><dd>Raise</dd>
+  <dt><kbd class="osc">Region/raise-region-to-top</kbd></dt><dd>Raise to Top</dd>
+  <dt><kbd class="osc">Region/region-fill-track</kbd></dt><dd>Fill Track</dd>
+  <dt><kbd class="osc">Region/remove-region</kbd></dt><dd>Remove</dd>
+  <dt><kbd class="osc">Region/remove-region-sync</kbd></dt><dd>Remove Sync</dd>
+  <dt><kbd class="osc">Region/rename-region</kbd></dt><dd>Rename...</dd>
+  <dt><kbd class="osc">Region/reset-region-gain-envelopes</kbd></dt><dd>Reset Envelope</dd>
+  <dt><kbd class="osc">Region/reset-region-scale-amplitude</kbd></dt><dd>Reset Gain</dd>
+  <dt><kbd class="osc">Region/reverse-region</kbd></dt><dd>Reverse</dd>
+  <dt><kbd class="osc">Region/separate-under-region</kbd></dt><dd>Separate Under</dd>
+  <dt><kbd class="osc">Region/sequence-regions</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Region/set-fade-in-length</kbd></dt><dd>Set Fade In Length</dd>
+  <dt><kbd class="osc">Region/set-fade-out-length</kbd></dt><dd>Set Fade Out Length</dd>
+  <dt><kbd class="osc">Region/set-loop-from-region</kbd></dt><dd>Set Loop Range</dd>
+  <dt><kbd class="osc">Region/set-punch-from-region</kbd></dt><dd>Set Punch</dd>
+  <dt><kbd class="osc">Region/set-region-sync-position</kbd></dt><dd>Set Sync Position</dd>
+  <dt><kbd class="osc">Region/set-selection-from-region</kbd></dt><dd>Set Range Selection</dd>
+  <dt><kbd class="osc">Region/set-tempo-from-region</kbd></dt><dd>Set Tempo from Region = Bar</dd>
+  <dt><kbd class="osc">Region/show-region-list-editor</kbd></dt><dd>List Editor...</dd>
+  <dt><kbd class="osc">Region/show-region-properties</kbd></dt><dd>Properties...</dd>
+  <dt><kbd class="osc">Region/show-rhythm-ferret</kbd></dt><dd>Rhythm Ferret...</dd>
+  <dt><kbd class="osc">Region/snap-regions-to-grid</kbd></dt><dd>Snap Position To Grid</dd>
+  <dt><kbd class="osc">Region/split-multichannel-region</kbd></dt><dd>Make Mono Regions</dd>
+  <dt><kbd class="osc">Region/split-region-at-transients</kbd></dt><dd>Split at Percussion Onsets</dd>
+  <dt><kbd class="osc">Region/split-region</kbd></dt><dd>Split</dd>
+  <dt><kbd class="osc">Region/strip-region-silence</kbd></dt><dd>Strip Silence...</dd>
+  <dt><kbd class="osc">Region/toggle-opaque-region</kbd></dt><dd>Opaque</dd>
+  <dt><kbd class="osc">Region/toggle-region-fade-in</kbd></dt><dd>Fade In</dd>
+  <dt><kbd class="osc">Region/toggle-region-fade-out</kbd></dt><dd>Fade Out</dd>
+  <dt><kbd class="osc">Region/toggle-region-fades</kbd></dt><dd>Fades</dd>
+  <dt><kbd class="osc">Region/toggle-region-gain-envelope-active</kbd></dt><dd>Envelope Active</dd>
+  <dt><kbd class="osc">Region/toggle-region-lock</kbd></dt><dd>Lock</dd>
+  <dt><kbd class="osc">Region/toggle-region-lock-style</kbd></dt><dd>Glue to Bars and Beats</dd>
+  <dt><kbd class="osc">Region/toggle-region-mute</kbd></dt><dd>Mute</dd>
+  <dt><kbd class="osc">Region/toggle-region-video-lock</kbd></dt><dd>Lock to Video</dd>
+  <dt><kbd class="osc">Region/transform-region</kbd></dt><dd></dd>
+  <dt><kbd class="osc">Region/transpose-region</kbd></dt><dd>Transpose...</dd>
+  <dt><kbd class="osc">Region/trim-back</kbd></dt><dd>Trim End at Edit Point</dd>
+  <dt><kbd class="osc">Region/trim-front</kbd></dt><dd>Trim Start at Edit Point</dd>
+  <dt><kbd class="osc">Region/trim-region-to-loop</kbd></dt><dd>Trim to Loop</dd>
+  <dt><kbd class="osc">Region/trim-region-to-punch</kbd></dt><dd>Trim to Punch</dd>
+  <dt><kbd class="osc">Region/trim-to-next-region</kbd></dt><dd>Trim to Next</dd>
+  <dt><kbd class="osc">Region/trim-to-previous-region</kbd></dt><dd>Trim to Previous</dd>
+  <dt><kbd class="osc">Region/uncombine-regions</kbd></dt><dd>Uncombine</dd>
+  <!-- RegionList ok -->
+  <dt><kbd class="osc">RegionList/RegionListSort</kbd></dt><dd>Sort</dd>
+  <dt><kbd class="osc">RegionList/SortAscending</kbd></dt><dd>Ascending</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionEndinFile</kbd></dt><dd>By Region End in File</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionLength</kbd></dt><dd>By Region Length</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionName</kbd></dt><dd>By Region Name</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionPosition</kbd></dt><dd>By Region Position</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionStartinFile</kbd></dt><dd>By Region Start in File</dd>
+  <dt><kbd class="osc">RegionList/SortByRegionTimestamp</kbd></dt><dd>By Region Timestamp</dd>
+  <dt><kbd class="osc">RegionList/SortBySourceFileCreationDate</kbd></dt><dd>By Source File Creation Date</dd>
+  <dt><kbd class="osc">RegionList/SortBySourceFileLength</kbd></dt><dd>By Source File Length</dd>
+  <dt><kbd class="osc">RegionList/SortBySourceFileName</kbd></dt><dd>By Source File Name</dd>
+  <dt><kbd class="osc">RegionList/SortBySourceFilesystem</kbd></dt><dd>By Source Filesystem</dd>
+  <dt><kbd class="osc">RegionList/SortDescending</kbd></dt><dd>Descending</dd>
+  <dt><kbd class="osc">RegionList/removeUnusedRegions</kbd></dt><dd>Remove Unused</dd>
+  <dt><kbd class="osc">RegionList/rlAudition</kbd></dt><dd>Audition</dd>
+  <dt><kbd class="osc">RegionList/rlHide</kbd></dt><dd>Hide</dd>
+  <dt><kbd class="osc">RegionList/rlShow</kbd></dt><dd>Show</dd>
+  <dt><kbd class="osc">RegionList/rlShowAll</kbd></dt><dd>Show All</dd>
+  <dt><kbd class="osc">RegionList/rlShowAuto</kbd></dt><dd>Show Automatic Regions</dd>
+  <!-- Rulers - ok -->
+  <dt><kbd class="osc">Rulers/toggle-bbt-ruler</kbd></dt><dd>Bars &amp; Beats</dd>
+  <dt><kbd class="osc">Rulers/toggle-cd-marker-ruler</kbd></dt><dd>CD Markers</dd>
+  <dt><kbd class="osc">Rulers/toggle-loop-punch-ruler</kbd></dt><dd>Loop/Punch</dd>
+  <dt><kbd class="osc">Rulers/toggle-marker-ruler</kbd></dt><dd>Markers</dd>
+  <dt><kbd class="osc">Rulers/toggle-meter-ruler</kbd></dt><dd>Meter</dd>
+  <dt><kbd class="osc">Rulers/toggle-minsec-ruler</kbd></dt><dd>Min:Sec</dd>
+  <dt><kbd class="osc">Rulers/toggle-range-ruler</kbd></dt><dd>Ranges</dd>
+  <dt><kbd class="osc">Rulers/toggle-samples-ruler</kbd></dt><dd>Samples</dd>
+  <dt><kbd class="osc">Rulers/toggle-tempo-ruler</kbd></dt><dd>Tempo</dd>
+  <dt><kbd class="osc">Rulers/toggle-timecode-ruler</kbd></dt><dd>Timecode</dd>
+  <dt><kbd class="osc">Rulers/toggle-video-ruler</kbd></dt><dd>Video</dd>
+  <!-- Shuttle Actions... these don't seem to be there any more
+  <dt><kbd class="osc">ShuttleActions/SetShuttleUnitsPercentage</kbd></dt><dd>Percentage</dd>
+  <dt><kbd class="osc">ShuttleActions/SetShuttleUnitsSemitones</kbd></dt><dd>Semitones</dd-->
+  <!-- snap checked -->
+  <dt><kbd class="osc">Snap/snap-to-asixteenthbeat</kbd></dt><dd>Snap to Sixteenths</dd>
+  <dt><kbd class="osc">Snap/snap-to-bar</kbd></dt><dd>Snap to Bar</dd>
+  <dt><kbd class="osc">Snap/snap-to-beat</kbd></dt><dd>Snap to Beat</dd>
+  <dt><kbd class="osc">Snap/snap-to-cd-frame</kbd></dt><dd>Snap to CD Frame</dd>
+  <dt><kbd class="osc">Snap/snap-to-eighths</kbd></dt><dd>Snap to Eighths</dd>
+  <dt><kbd class="osc">Snap/snap-to-fifths</kbd></dt><dd>Snap to Fifths</dd>
+  <dt><kbd class="osc">Snap/snap-to-fourteenths</kbd></dt><dd>Snap to Fourteenths</dd>
+  <dt><kbd class="osc">Snap/snap-to-halves</kbd></dt><dd>Snap to Halves</dd>
+  <dt><kbd class="osc">Snap/snap-to-mark</kbd></dt><dd>Snap to Mark</dd>
+  <dt><kbd class="osc">Snap/snap-to-minutes</kbd></dt><dd>Snap to Minutes</dd>
+  <dt><kbd class="osc">Snap/snap-to-onetwentyeighths</kbd></dt><dd>Snap to One Twenty Eighths</dd>
+  <dt><kbd class="osc">Snap/snap-to-quarters</kbd></dt><dd>Snap to Quarters</dd>
+  <dt><kbd class="osc">Snap/snap-to-region-boundary</kbd></dt><dd>Snap to Region Boundary</dd>
+  <dt><kbd class="osc">Snap/snap-to-region-end</kbd></dt><dd>Snap to Region End</dd>
+  <dt><kbd class="osc">Snap/snap-to-region-start</kbd></dt><dd>Snap to Region Start</dd>
+  <dt><kbd class="osc">Snap/snap-to-region-sync</kbd></dt><dd>Snap to Region Sync</dd>
+  <dt><kbd class="osc">Snap/snap-to-seconds</kbd></dt><dd>Snap to Seconds</dd>
+  <dt><kbd class="osc">Snap/snap-to-sevenths</kbd></dt><dd>Snap to Sevenths</dd>
+  <dt><kbd class="osc">Snap/snap-to-sixths</kbd></dt><dd>Snap to Sixths</dd>
+  <dt><kbd class="osc">Snap/snap-to-sixtyfourths</kbd></dt><dd>Snap to Sixty Fourths</dd>
+  <dt><kbd class="osc">Snap/snap-to-tenths</kbd></dt><dd>Snap to Tenths</dd>
+  <dt><kbd class="osc">Snap/snap-to-thirds</kbd></dt><dd>Snap to Thirds</dd>
+  <dt><kbd class="osc">Snap/snap-to-thirtyseconds</kbd></dt><dd>Snap to Thirty Seconds</dd>
+  <dt><kbd class="osc">Snap/snap-to-timecode-frame</kbd></dt><dd>Snap to Timecode Frame</dd>
+  <dt><kbd class="osc">Snap/snap-to-timecode-minutes</kbd></dt><dd>Snap to Timecode Minutes</dd>
+  <dt><kbd class="osc">Snap/snap-to-timecode-seconds</kbd></dt><dd>Snap to Timecode Seconds</dd>
+  <dt><kbd class="osc">Snap/snap-to-twelfths</kbd></dt><dd>Snap to Twelfths</dd>
+  <dt><kbd class="osc">Snap/snap-to-twentieths</kbd></dt><dd>Snap to Twentieths</dd>
+  <dt><kbd class="osc">Snap/snap-to-twentyeighths</kbd></dt><dd>Snap to Twenty Eighths</dd>
+  <dt><kbd class="osc">Snap/snap-to-twentyfourths</kbd></dt><dd>Snap to Twenty Fourths</dd>
+  <!-- Zoom section ok -->
+  <dt><kbd class="osc">Zoom/zoom-focus-center</kbd></dt><dd>Zoom Focus Center</dd>
+  <dt><kbd class="osc">Zoom/zoom-focus-edit</kbd></dt><dd>Zoom Focus Edit Point</dd>
+  <dt><kbd class="osc">Zoom/zoom-focus-left</kbd></dt><dd>Zoom Focus Left</dd>
+  <dt><kbd class="osc">Zoom/zoom-focus-mouse</kbd></dt><dd>Zoom Focus Mouse</dd>
+  <dt><kbd class="osc">Zoom/zoom-focus-playhead</kbd></dt><dd>Zoom Focus Playhead</dd>
+  <dt><kbd class="osc">Zoom/zoom-focus-right</kbd></dt><dd>Zoom Focus Right</dd>
+  <!-- Mixer section totally new -->
+  <dt><kbd class="osc">/Mixer/ab-plugins</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/copy-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/cut-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/decrement-gain</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/delete-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/increment-gain</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/mute</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/paste-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/recenable</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/scroll-left</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/scroll-right</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/select-all-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/select-none</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/solo</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/toggle-midi-input-active</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/toggle-processors</kbd></dt><dd></dd>
+  <dt><kbd class="osc">/Mixer/unity-gain</kbd></dt><dd></dd>
+</dl>
+
+{% children %}
diff --git a/include/midi-binding-maps.html b/include/midi-binding-maps.html
new file mode 100644 (file)
index 0000000..9210456
--- /dev/null
@@ -0,0 +1,390 @@
+---
+layout: default
+title: MIDI Binding Maps
+---                        
+
+<p>
+  Ardour 2.X supported 
+  <a href="/using-control-surfaces/midi-learn/"><dfn>MIDI learning</dfn></a> 
+  for more or less any control. This was a nice feature that quite a few other
+  DAWs are providing by now, but it didn't allow Ardour to work "out of the
+  box" with sensible defaults for existing commercial MIDI
+  controllers. In Ardour 3 and later versions, we have augmented the
+  MIDI learn feature with the ability to load a <dfn>MIDI binding map</dfn> 
+  for a given controller, which can set up an arbitrary number of physical
+  controls with anything inside Ardour that can be controlled. 
+</p>
+<p>
+  Currently (August 2016), we have presets for the following devices/modes:
+</p>
+<ul>
+  <li>AKAI MPD-32</li>
+  <li>AKAI MPK61</li>
+  <li>AKAI MPKmini</li>
+  <li>Behringer BCF2000</li>
+  <li>Behringer BCF2000 (Mackie Emulation mode; better to use
+    Ardour's actual Mackie Control Protocol support)</li>
+  <li>Behringer DDX3216</li>
+  <li>Korg nanoKONTROL (2 layouts)</li>
+  <li>Korg nanoKONTROL 2 (2 layouts)</li>
+  <li>Korg Taktile</li>
+  <li>M-Audio Axiom 25 (2 layouts)</li>
+  <li>M-Audio Axiom 61</li>
+  <li>M-Audio Oxygen 49</li>
+  <li>M-Audio Oxygen 61v3</li>
+  <li>M-Audio Oxygen 25</li>
+  <li>M-Audio Oxygen 8v2</li>
+  <li>Novation Impulse 49</li>
+  <li>Novation Impulse 61</li>
+  <li>Novation LaunchControl XL</li>
+  <li>Novation LaunchKey 25</li>
+  <li>Roland SI-24</li>
+  <li>Roland V Studio 20</li>
+  <li>Yamaha KX25</li>
+</ul>
+  At this time, new binding maps need to be created with a text editor.
+<p>
+  MIDI binding maps are accessible by double-clicking <kbd class="menu">Edit
+  &gt; Preferences &gt; Control Surfaces &gt; Generic MIDI</kbd>. Ardour will 
+  retain your selection after you choose one.
+</p>
+
+<h2>Creating new MIDI maps</h2>
+<h3>The Basic Concept</h3>
+<p>
+  Since the beginning of time (well, sometime early in the 2.X series), 
+  Ardour has had the concept of identifying each track and bus with a 
+  <dfn>remote control ID</dfn>. This ID uniquely identifies a track or bus 
+  so that when messages arrive from elsewhere via MIDI or OSC , we can determine 
+   which track or bus they are intended to control. Ardour has a 
+   <a
+  href="/working-with-tracks/controlling-track-ordering/track-ordering-and-remote-control-ids/">number 
+   of ways of assigning remote control IDs</a>, but they don't really matter 
+   very much when creating MIDI binding maps, so we won't discuss that here. 
+   You just need to know that there is a "first track" and its remote control 
+   ID is 1, and so on.
+</p>
+<h3>Getting Started</h3>
+<p>
+  MIDI bindings are stored in files with the suffix ".map" attached to their 
+  name. The minimal content looks like this:
+</p>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;ArdourMIDIBindings version="1.0.0" name="The name of this set of
+bindings"&gt;
+&lt;/ArdourMIDIBindings&gt;
+</pre>
+<p>
+  So, to start, create a file with that as the initial contents.
+</p>
+<p>
+  On OS X, Ardour loads midi maps from its binary-bundle folder in 
+  <code>Ardour-&lt;version&gt;/midi_maps/</code> and checks 
+  various other locations as well (defined by the ARDOUR_MIDIMAPS_PATH 
+  environment variable). On GNU/Linux the easiest is to save the file to 
+  <code>~/.config/ardour3/midi_maps/</code>.
+</p>
+
+<h3>Finding out what your MIDI control surface sends</h3>
+<p>
+  This is the most complex part of the job, but its still not very hard. 
+  You need to connect the control surface to an application that will show 
+  you the information that the device sends each time you modify a knob, 
+  slider, button etc. There are a variety of such applications (notably 
+  <code>gmidimon</code> and <code>kmidimon</code>, but you can actually use 
+  Ardour for this if you want. Start Ardour in a terminal window, connect 
+  MIDI ports up, and in the Preferences window, enable "Trace Input" on the 
+  relevant MIDI port. A full trace of the MIDI data received will show up in 
+  the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog 
+  for this kind of tracing.)
+</p>
+<h3>Types of Bindings</h3>
+<p>
+  There are two basic kinds of bindings you can make between a MIDI message 
+  and something inside Ardour. The first is a binding to a specific parameter 
+  of a track or bus. The second is a binding to a function that will change 
+  Ardour's state in some way.
+</p>
+<h4>Binding to Track/Bus controls</h4>
+<p>
+  A track/bus binding has one of two basic structures
+</p>
+<code>
+  &lt;Binding <em>msg specification</em>  uri="<em>... control address ...</em>"/&gt;
+  &lt;Binding <em>msg specification</em>  function="<em>... function name ...</em>"/&gt;
+</code>
+
+<h4>Message specifications</h4>
+<p>
+  You can create a binding for either 3 types of channel messages, or for a
+  system exclusive ("sysex") message.  A channel message specification looks 
+  like this:
+</p>
+<code>
+   &lt;Binding channel="1" ctl="13" ....
+</code>
+<p>
+  This defines a binding for a MIDI Continuous Controller message involving 
+  controller 13, arriving on channel 1. There are 16 MIDI channels, numbered 
+  1 to 16. Where the example above says <code>ctl</code>, you can alternatively 
+  use <code>note</code> (to create binding for a Note On message) or 
+  <code>pgm</code>  (to create a binding for a Program Change message).
+</p>
+<p>
+  As of Ardour 4.2, <code>enc-r</code>, <code>enc-l</code>, <code>enc-2</code> and
+  <code>enc-b</code> may be used for surfaces that have encoders that send
+  offsets rather than values. These accept Continuous Controller messages
+  but treat them as offsets. These are good for banked controls as they are
+  always at the right spot to start adjusting. (
+   <a href="/using-control-surfaces/midi-binding-maps/working-with-encoders/">
+   Learn more about working with encoders
+   </a>)
+</p>
+<p>
+  You can also bind sysex messages:
+</p>
+<code>
+  &lt;Binding sysex="f0 0 0 e 9 0 5b f7" ....
+  &lt;Binding sysex="f0 7f 0 6 7 f7" ....
+</code>
+<p>
+  The string after the <code>sysex=</code> part is the sequence of MIDI bytes, 
+  as hexadecimal values, that make up the sysex message.
+</p>
+<p>
+  Finally, you can bind a totally arbitrary MIDI message:</p>
+<code>
+  &lt;Binding msg="f0 0 0 e 9 0 5b f7" ....
+  &lt;Binding msg="80 60 40" ....
+</code>
+<p>
+  The string after the <code>msg=</code> part is the sequence of MIDI bytes, as 
+  hexadecimal values, that make up the message you want to bind. Using this is 
+  slightly less efficient than the other variants shown above, but is useful for 
+  some oddly designed control devices.
+</p>
+
+<p class="note">
+  As of Ardour 4.6 it is possible to use multi-event MIDI strings such as
+  two event CC messages, RPN or NRPN.
+</p>
+
+<p class="note">
+  The <code>sysex=</code> and <code>msg=</code> bindings will only work with
+  <code>function=</code> or <code>action=</code> control addresses. They
+  will <em>not</em> work with the <code>uri=</code> control addresses.
+  Controls used with <code>uri=</code> require a <em>Value</em> which is
+  only available in a known place with channel mode MIDI events.
+</p>
+
+<h4>Control address</h4>
+<p>
+  A <dfn>control address</dfn> defines what the binding will actually control. 
+  There are quite a few different things that can be specified here:
+</p>
+<dl class="wide-table">
+<dt>/route/gain</dt>
+<dd>the gain control ("fader") for the track/bus</dd>
+<dt>/route/trim</dt>
+<dd>the trim control for the track/bus (new in 4.1)</dd>
+<dt>/route/solo</dt>
+<dd>a toggleable control for solo (and listen) of the track/bus</dd>
+<dt>/route/mute</dt>
+<dd>a toggleable control to mute/unmute the track/bus</dd>
+<dt>/route/recenable</dt>
+<dd>a toggleable control to record-enable the track</dd>
+<dt>/route/panwidth</dt>
+<dd>interpreted by the track/bus panner, should control image "width"</dd>
+<dt>/route/pandirection</dt>
+<dd>interpreted by the track/bus panner, should control image "direction"</dd>
+<dt>/route/plugin/parameter</dt>
+<dd>the Mth parameter of the Nth plugin of a track/bus
+</dd>
+<dt>/route/send/gain</dt>
+<dd>the gain control ("fader") of the Nth send of a track/bus</dd>
+</dl>
+<p>Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:</p>
+<dl class="wide-table">
+<dt>a number, eg. "1"
+</dt>
+<dd>identifies a track or bus by its remote control ID
+</dd>
+<dt>B, followed by a number
+</dt>
+<dd>identifies a track or bus by its remote control ID within the current bank (see below for more on banks)
+</dd>
+<dt>one or more words
+</dt>
+<dd>identifies a track or bus by its name
+</dd>
+</dl>
+<p>
+  For send/insert/plugin controls, the address consists of a track/bus 
+  address (as just described) followed by a number identifying the plugin/send 
+  (starting from 1). For plugin parameters, there is an additional third 
+  component: a number identifying the plugin parameter number (starting from
+  1).
+</p>
+<p>
+  One additional feature: for solo and mute bindings, you can also add 
+  <code>momentary="yes"</code> after the control address. This is useful 
+  primarily for NoteOn bindings &mdash; when Ardour gets the NoteOn it 
+  will solo or mute the targetted track or bus, but then when a NoteOff 
+  arrives, it will un-solo or un-mute it.
+</p>
+
+<h4>Bindings to Ardour "functions"</h4>
+<p>
+  Rather than binding to a specific track/bus control, it may be useful to 
+  have a MIDI controller able to alter some part of Ardour's state. A 
+  binding definition that does this looks like this:
+</p>
+<code>
+  &lt;Binding channel="1" note="13" function="transport-roll"/&gt;
+</code>
+<p>
+  In this case, a NoteOn message for note number 13 (on channel 1) will 
+  start the transport rolling. The following function names are available:
+</p>
+<dl class="narrower-table">
+<dt>
+<code>transport-stop</code>
+</dt>
+<dd>stop the transport
+</dd>
+<dt>
+<code>transport-roll</code>
+</dt>
+<dd>start the transport "rolling"
+</dd>
+<dt>
+<code>transport-zero</code>
+</dt>
+<dd>move the playhead to the zero position
+</dd>
+<dt>
+<code>transport-start</code>
+</dt>
+<dd>move the playhead to the start marker
+</dd>
+<dt>
+<code>transport-end</code>
+</dt>
+<dd>move the playhead to the end marker
+</dd>
+<dt>
+<code>loop-toggle</code>
+</dt>
+<dd>turn on loop playback
+</dd>
+<dt>
+<code>rec-enable</code>
+</dt>
+<dd>enable the global record button
+</dd>
+<dt>
+<code>rec-disable</code>
+</dt>
+<dd>disable the global record button
+</dd>
+<dt>
+<code>next-bank</code>
+</dt>
+<dd>Move track/bus mapping to the next bank (see Banks below)
+</dd>
+<dt>
+<code>prev-bank</code>
+</dt>
+<dd>Move track/bus mapping to the previous bank (see Banks below)
+</dd>
+</dl>
+
+<h4>Binding to Ardour "actions"</h4>
+<p>
+  You can also bind a sysex or arbitrary message to any of the items
+  that occur in Ardour's main menu (and its submenus).  The best place 
+  to look for the (long) list of how to address each item is in your 
+  keybindings file, which will contain lines that look like this:
+</p>
+<code>
+(gtk_accel_path "&lt;Actions&gt;/Editor/temporal-zoom-in" "equal")
+</code>
+<p>
+  To create a binding between an arbitrary MIDI message (we'll use a 
+  note-off on channel 1 of MIDI note 60 (hex) with release velocity 
+  40 (hex)), the binding file would contain:
+</p>
+<code>
+   &lt;Binding msg="80 60 40" action="Editor/temporal-zoom-in"/&gt;
+</code>
+<p>
+  The general rule, when taken an item from the keybindings file and 
+  using it in a MIDI binding is to simply strip the 
+  <code>&lt;Action&gt;</code> prefix of the second field in the 
+  keybinding definition.
+</p>
+
+<h3>Banks and Banking</h3>
+<p>
+  Because many modern control surfaces offer per-track/bus controls 
+  for far fewer tracks &amp; busses than many users want to control, 
+  Ardour offers the relatively common place concept of <dfn>banks</dfn>. Banks 
+  allow you to control any number of tracks and/or busses easily, 
+  regardless of how many faders/knobs etc. your control surface has.<br /> 
+  To use banking, the control addresses must be specified using the 
+  <dfn>bank relative</dfn> format mentioned above ("B1" to identify 
+  the first track of a bank of tracks, rather than "1" to identify 
+  the first track).
+</p>
+<p>
+  One very important extra piece of information is required to use 
+  banking: an extra line near the start of the list of bindings 
+  that specifies how many tracks/busses to use per bank. If the 
+  device has 8 faders, then 8 would be a sensible value to use for 
+  this. The line looks like this:</p>
+<code>
+   &lt;DeviceInfo bank-size="8"/&gt;
+</code>
+<p>
+  In addition, you probably want to ensure that you bind something
+  on the control surface to the <code>next-bank</code> and 
+  <code>prev-bank</code> functions, otherwise you and other users 
+  will have to use the mouse and the GUI to change banks, which 
+  rather defeats the purpose of the bindings.
+</p>
+<h2>A Complete (though muddled) Example</h2>
+<pre>
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls"&gt;
+  &lt;DeviceInfo bank-size="16"/&gt;
+  &lt;Binding channel="1" ctl="1"   uri="/route/gain B1"/&gt;
+  &lt;Binding channel="1" ctl="2"   uri="/route/gain B2"/&gt;
+  &lt;Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/&gt;
+  &lt;Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/&gt;
+  &lt;Binding channel="1" ctl="6"   uri="/bus/gain master"/&gt;
+
+  &lt;Binding channel="1" note="1"  uri="/route/solo B1"/&gt;
+  &lt;Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/&gt;
+
+  &lt;Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/&gt;
+  &lt;Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/&gt;
+
+  &lt;Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/&gt;
+  &lt;Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/&gt;
+  &lt;Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/&gt;
+  &lt;Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/&gt;
+
+  &lt;Binding channel="1" note="13" function="transport-roll"/&gt;
+  &lt;Binding channel="1" note="14" function="transport-stop"/&gt;
+  &lt;Binding channel="1" note="12" function="transport-start"/&gt;
+  &lt;Binding channel="1" note="11" function="transport-zero"/&gt;
+  &lt;Binding channel="1" note="10" function="transport-end"/&gt;
+&lt;/ArdourMIDIBindings&gt;
+</pre>
+<p>
+  Please note that channel, controller and note numbers are specified as 
+  decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively 
+  (the channel range may change at some point).
+</p>
+  
diff --git a/include/midi-learn.html b/include/midi-learn.html
new file mode 100644 (file)
index 0000000..c200bf1
--- /dev/null
@@ -0,0 +1,44 @@
+---
+layout: default
+title: MIDI Learn
+---                        
+
+<h2>Philosophy</h2>
+<p>
+There are no "best" ways to map an arbitrary MIDI controller for
+controlling Ardour. There may be very legitimate reasons for different
+users to prefer quite different mappings. 
+</p>
+<p>
+On every platform that Ardour runs on, there are excellent
+free-of-charge tools for making connections between MIDI hardware and
+"virtual" MIDI ports like the ones that Ardour creates and
+uses. Rather than waste precious developer time replicating these
+connection/patch managers, we prefer to leverage their existence by
+having users rely on them to actually connect Ardour to other MIDI
+devices and software. On OS X, we recommend Pete Yandell's MIDI
+Patchbay. On Linux, a wide variety of tools are available including
+QJackctl, aconnect, Patchage, and more. 
+</p>
+
+<h2>Basics</h2>
+
+<ol>
+  <li>Enable Generic MIDI control: <kbd class="menu">Edit &gt; Preferences
+  &gt; Control Surfaces &gt; Generic MIDI</kbd></li>
+  <li>Connect Ardour's MIDI port named <samp>control</samp> to whatever 
+  hardware or software you want (using a MIDI patchbay app)</li>
+  <li><kbd class="mod1 mouse">Middle</kbd>-click on whatever on-screen 
+  fader, plugin parameter control, button etc. you want to control</li>
+  <li>A small window appears that says "Operate Controller now"</li>
+  <li>Move the hardware knob or fader, or press the note/key.</li>
+  <li>The binding is complete. Moving the hardware should control the Ardour fader etc. </li>
+</ol>
+
+<h2>Avoiding work in the future</h2>
+<p>
+If you want the bindings you set up to be used automatically in every
+session, the simplest thing to do is to use <kbd class="menu">Session &gt; Save
+Template</kbd>. Then, when creating new sessions, select that template and
+all the bindings will be automatically set up for you.
+</p>
similarity index 99%
rename from include/controlling-ardour-with-osc-4.7-and-prior.html
rename to include/osc-control-in-ardour-4.7-and-prior.html
index abde24505d829de0210a05edce868c6021469598..d5221ae535bd317be2326b5d6cb47d2291d3a31c 100644 (file)
@@ -1,30 +1,35 @@
 ---
-title: Controlling Ardour with OSC (Ardour 4.7 and Prior)
+layout: default
+title: OSC control for Ardour 4.7 and Prior
 ---
 
+<p class="note">
+       This page is what was available before version 5.* was added. It has
+       not been updated to make sure all 4.7 functionality is acurately
+       represented. This page will vanish soon.
+</p>
+
 <p>
-  <abbr title="Open Sound Control"><dfn>OSC</dfn></abbr> lets synthesizers 
-  and other devices communicate with Ardour. OSC devices can send commands 
-  relating to playback (such as play or stop), performance (such as volume, 
+  <abbr title="Open Sound Control"><dfn>OSC</dfn></abbr> lets synthesizers
+  and other devices communicate with Ardour. OSC devices can send commands
+  relating to playback (such as play or stop), performance (such as volume,
   play, stop, and almost any other function (such as Edit, or Undo).
 </p>
-
 <p>
-  Ardour is probably one of the most OSC-controllable audio applications 
-  around, but as with all OSC-controllable apps, you can't do much without 
-  knowing what <dfn>messages</dfn> can be sent. This document describes the 
-  various categories of messages that Ardour understands. It is subject to 
-  change, particularly the "Actions" part below, since this relates to the 
+  Ardour is probably one of the most OSC-controllable audio applications
+  around, but as with all OSC-controllable apps, you can't do much without
+  knowing what <dfn>messages</dfn> can be sent. This document describes the
+  various categories of messages that Ardour understands. It is subject to
+  change, particularly the "Actions" part below, since this relates to the
   GTK GUI for Ardour rather than the backend.
 </p>
 
 <h2>Connecting to Ardour via OSC</h2>
-
 <p>
-  OSC support is not enabled by default, but can be turned on via 
-  <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>. 
-  Once enabled, Ardour will listen on port <code>3819</code> by default. 
-  This port number can be changed by editing <code>$ARDOUR_CONFIG</code> 
+  OSC support is not enabled by default, but can be turned on via
+  <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>.
+  Once enabled, Ardour will listen on port <code>3819</code> by default.
+  This port number can be changed by editing <code>$ARDOUR_CONFIG</code>
   and adding this line within the <code>&lt;Config&gt;</code> section:
 </p>
 <kbd class="input">&lt;Option name="osc-port" value="<em>Your choice
@@ -56,7 +61,7 @@ here</em>"/&gt;</kbd>
   <dd></dd>
   <dt><kbd class="osc">/ardour/locate <em>spos</em> <em>roll</em></kbd></dt>
   <dd>where <em>spos</em> is the target position in samples and
-  <em>roll</em> is a bool/integer defining whether you want transport 
+  <em>roll</em> is a bool/integer defining whether you want transport
   to be kept rolling or not</dd>
   <dt><kbd class="osc">/ardour/loop_toggle</kbd></dt>
   <dd></dd>
@@ -580,7 +585,7 @@ here</em>"/&gt;</kbd>
   <dt><kbd class="osc">Region/trim-to-next-region</kbd></dt><dd>Trim to Next</dd>
   <dt><kbd class="osc">Region/trim-to-previous-region</kbd></dt><dd>Trim to Previous</dd>
   <dt><kbd class="osc">Region/uncombine-regions</kbd></dt><dd>Uncombine</dd>
-  <dt><kbd class="osc">Rulers/toggle-bbt-ruler</kbd></dt><dd>Bars & Beats</dd>
+  <dt><kbd class="osc">Rulers/toggle-bbt-ruler</kbd></dt><dd>Bars &amp; Beats</dd>
   <dt><kbd class="osc">Rulers/toggle-cd-marker-ruler</kbd></dt><dd>CD Markers</dd>
   <dt><kbd class="osc">Rulers/toggle-loop-punch-ruler</kbd></dt><dd>Loop/Punch</dd>
   <dt><kbd class="osc">Rulers/toggle-marker-ruler</kbd></dt><dd>Markers</dd>
@@ -634,8 +639,8 @@ here</em>"/&gt;</kbd>
   <dt><kbd class="osc">Transport/Loop</kbd></dt><dd>Play Loop Range</dd>
   <dt><kbd class="osc">Transport/PlayPreroll</kbd></dt><dd>Play Selection w/Preroll</dd>
   <dt><kbd class="osc">Transport/PlaySelection</kbd></dt><dd>Play Selected Range</dd>
-  <dt><kbd class="osc">Transport/primary-clock-bbt</kbd></dt><dd>Bars & Beats</dd>
-  <dt><kbd class="osc">Transport/primary-clock-minsec</kbd></dt><dd>Minutes & Seconds</dd>
+  <dt><kbd class="osc">Transport/primary-clock-bbt</kbd></dt><dd>Bars &amp; Beats</dd>
+  <dt><kbd class="osc">Transport/primary-clock-minsec</kbd></dt><dd>Minutes &amp; Seconds</dd>
   <dt><kbd class="osc">Transport/primary-clock-samples</kbd></dt><dd>Samples</dd>
   <dt><kbd class="osc">Transport/primary-clock-timecode</kbd></dt><dd>Timecode</dd>
   <dt><kbd class="osc">Transport/Record</kbd></dt><dd>Enable Record</dd>
@@ -644,8 +649,8 @@ here</em>"/&gt;</kbd>
   <dt><kbd class="osc">Transport/Rewind</kbd></dt><dd>Rewind</dd>
   <dt><kbd class="osc">Transport/RewindSlow</kbd></dt><dd>Rewind (Slow)</dd>
   <dt><kbd class="osc">Transport/Roll</kbd></dt><dd>Roll</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-bbt</kbd></dt><dd>Bars & Beats</dd>
-  <dt><kbd class="osc">Transport/secondary-clock-minsec</kbd></dt><dd>Minutes & Seconds</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-bbt</kbd></dt><dd>Bars &amp; Beats</dd>
+  <dt><kbd class="osc">Transport/secondary-clock-minsec</kbd></dt><dd>Minutes &amp; Seconds</dd>
   <dt><kbd class="osc">Transport/secondary-clock-samples</kbd></dt><dd>Samples</dd>
   <dt><kbd class="osc">Transport/secondary-clock-timecode</kbd></dt><dd>Timecode</dd>
   <dt><kbd class="osc">Transport/Stop</kbd></dt><dd>Stop</dd>
@@ -688,4 +693,3 @@ here</em>"/&gt;</kbd>
   <dt><kbd class="osc">Zoom/zoom-focus-playhead</kbd></dt><dd>Zoom Focus Playhead</dd>
   <dt><kbd class="osc">Zoom/zoom-focus-right</kbd></dt><dd>Zoom Focus Right</dd>
 </dl>
-
diff --git a/include/osc-control.html b/include/osc-control.html
new file mode 100644 (file)
index 0000000..3fc9c97
--- /dev/null
@@ -0,0 +1,514 @@
+---
+layout: default
+title: OSC&#58; Controlling Ardour with OSC
+---
+
+<p>
+  <abbr title="Open Sound Control"><dfn>OSC</dfn></abbr> lets synthesizers
+  and other devices communicate with Ardour. OSC devices can send commands
+  relating to playback (such as play or stop), performance (such as volume,
+  play, stop, and almost any other function (such as Edit, or Undo).
+</p>
+
+<p class="note">
+  <em>Note:</em> OSC control has changed dramatically since Ardour 4.7.
+  The Path structure has been completely redone, Banking has been introduced,
+  The controller is now able to tell Ardour what kind of feedback it can
+  work with (including bank size) and two new math styles have been added
+  to gain controls. If you are using an Ardour version of 4.7 or less,
+  please read <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/osc-control-in-ardour-4.7-and-prior/">
+  Osc control in ardour 4.7 and prior.</a>
+</p>
+
+<p>
+  Ardour is probably one of the most OSC-controllable audio applications
+  around, but as with all OSC-controllable apps, you can't do much without
+  knowing what <dfn>messages</dfn> can be sent. This document describes the
+  various categories of messages that Ardour understands. It is subject to
+  change, particularly the "Actions" part below, since this relates to the
+  GTK GUI for Ardour rather than the backend.
+</p>
+
+<h2>Connecting to Ardour via OSC</h2>
+<p>
+  OSC support is not enabled by default, but can be turned on via
+  <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>.
+  Once enabled, Ardour will listen on port <code>3819</code> by default.
+  This port number can be changed by editing <code>$ARDOUR_CONFIG</code>
+  and adding this line within the <code>&lt;Config&gt;</code> section:
+</p>
+<kbd class="input">&lt;Option name="osc-port" value="<em>Your choice
+here</em>"/&gt;</kbd>
+
+<p>
+  Ardour sends any feedback to the port and address that sent any
+  feedback request. The port does not have to match Ardour's port. In
+  fact it is better not to. This means that Ardour can deal with more
+  than one controller at a time. The two controllers can bank
+  independently and even use different math for faders. This could be
+  used to allow talent to adjust their own monitor mix using a tablet
+  or phone that can run an OSC controller. For a full explanation of
+  how Ardour's feedback works please read <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/feedback-in-osc/">
+  OSC feedback In Ardour.</a>
+</p>
+
+<h2>Control Surface Set Up</h2>
+
+<p>
+  Control surface set up allows the controller to tell Ardour about it's
+  capabilities. The surface can tell Ardour how many control strips it
+  has for banking, if it is capable of setting it's faders or buttons
+  to values set by Ardour's GUI or automation, What kind of math the
+  faders use and more.
+</p>
+<p>
+  Any time the <em>/set_surface</em> command is sent, the current bank
+  is recalculated and if feedback is turned on, the values of each
+  strip's controls are sent (or refreshed) as well. This will also
+  refresh the Master feedback setup.
+</p>
+<p class="note">
+  Surface Port Setting is available in the OSC GUI.
+</p>
+<p>
+  As of Ardour 5.1, There is now a GUI setup in response to those using
+  tablets with applications such as touchOSC or AndrOSC who need to be
+  able to set a port for Ardour to send to. It can also change the
+  default setting for set_surface. For more information about Ardour's
+  OSC configuration GUI please read <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/osc-setup-dialog/">
+  Ardour's Setup Dialog.</a>
+</p>
+<p>If /set_surface is not sent, the default values are used:
+  <ul>
+         <li><em>Bank Size</em>: 0 - No banking (or infinite bank size).</li>
+         <li><em>Strip Types</em>: All strip types except hidden and special.</li>
+         <li><em>Feedback</em>: 0 - All off.</li>
+         <li><em>Fader Mode</em>: 0 - gain in dB (not relevant with feedback off)</li>
+  </ul>
+</p>
+<p>
+  These values give the same behaviour as prior versions of Ardour. (or the closest possible)
+</p>
+<dl class="bindings">
+  <dt><kbd class="osc">/set_surface <em>bank_size</em> <em>strip_types</em>
+  <em>feedback</em> <em>fadermode</em></kbd></dt>
+  <dd>
+         See below for an explanation of each parameter.
+  </dd>
+</dl>
+<h3>bank_size</h3>
+<p>
+  Bank Size is the number of channel strips the controller supports
+  without banking. Setting this to 0 turns banking off by setting the
+  bank size to infinite.
+</p>
+<p class="note">
+       Bank size can also be set with <em>/set_surface/bank_size size.</em>
+</p>
+<h3>strip_types</h3>
+<p>
+  strip_types is an integer made up of bits. The easy way to
+  deal with this is to think of strip_types items being worth a number and
+  then adding all those numbers together for a value to send.
+  Strip Types will determine what kind of strips will be included in
+  bank. This would include: Audio, MIDI, buses, VCAs, Master, Monitor
+  and hidden or selected strips.
+</p>
+<p>
+  Aside from setting the track types for the main mix assignments, using
+  /set_surface/strip_types with more than one surface button will allow
+  switching between modes for example: inputs only, buses only,
+  selected only, hidden only, by having the buttons send values of: 3,
+  12, 256, 512. A full mix button might have a value 31.
+</p>
+<p>
+  While Master and Monitor are listed as possibilities, most surfaces
+  will not use them. Using /master and /monitor makes more sense.
+  However, in the case where there are no master or monitor fader strips
+  on the surface, it may be necessary to include them in the banked
+  strips.
+</p>
+<p>Please see: <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+  Calculating Feedback and Strip-types Values.</a>
+</p>
+<p class="note">
+       Strip types can also be set with <em>/set_surface/strip_types types.</em>
+</p>
+<h3>feedback</h3>
+<p>Feedback is an integer made up of bits. The easy way to
+  deal with this is to think of feedback items being worth a number and
+  then adding all those numbers together for a value to send.
+</p>
+<p>Please see: <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
+  Calculating Feedback and Strip-types Values.</a></p>
+<p class="note">
+       Feedback can also be set with <em>/set_surface/feedback feedback.</em>
+</p>
+
+<h3>gainmode</h3>
+<p>
+  Gainmode is a an int that acts as a bool:
+  <ul>
+         <li><em>0 (or false)</em> dB value as a float from -193 to +6. Sent as
+         /strip/gain SSID value. (-193 or below are the same as -inf)</li>
+         <li><em>1 (or true)</em> A positional fader based on the same math
+         as Ardour's GUI.  An Float from 0 to 1. Sent as
+         /strip/fader SSID value</li>
+  </ul>
+</p>
+<p>
+  Gainmode applies only to feedback values. The controller can choose
+  which gain math to use by choosing to use the /*/gain or /*/fader path
+  to send to Ardour. This makes sure a controller that doesn't set up
+  Ardour's OSC can still use either math. The gainmode for feedback also
+  determines the path Ardour uses for feedback so that the feedback
+  messages match the control messages.
+</p>
+<p class="note">
+       Gain mode can also be set with <em>/set_surface/gainmode gainmode.</em>
+</p>
+
+<h2>Querying Ardour for information</h2>
+<p>
+  The control Surface may wish to control the type a frequency of
+  updates it receives. It can do this with querying commands. See: <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a>
+</p>
+
+<h2>List of OSC messages</h2>
+<p class="note">
+       Parameter types show how the value will be used. However, they may
+       be sent as a different type if needed, see: <a
+       href="/using-control-surfaces/controlling-ardour-with-osc/parameter-types-in-osc/">
+       Parameter Types in OSC.</a>
+</p>
+<h3>Master or Global messages</h3>
+
+<h4>Transport Control</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/transport_stop</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/transport_play</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/toggle_roll</kbd></dt>
+  <dd>Toggles between play and stop</dd>
+  <dt><kbd class="osc">/set_transport_speed <em>s</em></kbd></dt>
+  <dd>where <em>s</em> is a float ranging from -8.0f to 8.0f</dd>
+  <dt><kbd class="osc">/ffwd</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/rewind</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/goto_start</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/goto_end</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/jump_bars <em>bars</em></kbd></dt>
+  <dd>Where <em>bars</em> is a float (+/-) of the number of bars to jump</dd>
+  <dt><kbd class="osc">/jump_seconds <em>seconds</em></kbd></dt>
+  <dd>Where <em>seconds</em> is a float (+/-) of the number of seconds to jump</dd>
+  <dt><kbd class="osc">/add_marker</kbd></dt>
+  <dd>(adds marker to the current transport position)</dd>
+  <dt><kbd class="osc">/remove_marker</kbd></dt>
+  <dd>Removes marker at the current transport position (if there is one)</dd>
+  <dt><kbd class="osc">/mark_in</kbd></dt>
+  <dd>Marks the begining of a range at the current transport position</dd>
+  <dt><kbd class="osc">/mark_out</kbd></dt>
+  <dd>Marks the end of a range at the current transport position</dd>
+  <dt><kbd class="osc">/next_marker</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/prev_marker</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/locate <em>spos</em> <em>roll</em></kbd></dt>
+  <dd>where <em>spos</em> is the target position in samples and
+  <em>roll</em> is a bool/integer defining whether you want transport
+  to be kept rolling or not</dd>
+  <dt><kbd class="osc">/loop_toggle</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/loop_location <em>start</em> <em>end</em></kbd></dt>
+  <dd><em>start</em> is the beginning of a loop and <em>end</em> is the
+  end of a loop both are integer frame positions.</dd>
+  <dt><kbd class="osc">/set_loop_range</kbd></dt>
+  <dd>Uses edit range as loop range</dd>
+  <dt><kbd class="osc">/set_session_range</kbd></dt>
+  <dd>Uses edit range as session range</dd>
+  <dt><kbd class="osc">/toggle_click</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/midi_panic</kbd></dt>
+  <dd>Ardour will send an all notes off to all midi tracks</dd>
+  <dt><kbd class="osc">/cancel_all_solos</kbd></dt>
+  <dd>Cancel All Solos/PFLs/AFLs</dd>
+</dl>
+
+<h4>Transport Information</h4>
+<dl>
+  <dt><kbd class="osc">/transport_frame</kbd></dt>
+  <dd>Ardour sends /transport_frame <em>current_frame</em></dd>
+  <dt><kbd class="osc">/transport_speed</kbd></dt>
+  <dd>Ardour sends /transport_speed <em>speed</em></dd>
+  <dt><kbd class="osc">/record_enabled</kbd></dt>
+  <dd>Ardour sends /record_enabled <em>recordenable_status</em></dd>
+</dl>
+
+<h4>Editing-related</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/undo</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/redo</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/save_state</kbd></dt>
+  <dd>(this is the regular <kbd class="menu">Session &gt; Save</kbd>
+  operation)</dd>
+  <dt><kbd class="osc">/quick_snapshot_switch</kbd></dt>
+  <dd>Take a snapshot and switch to new version</dd>
+  <dt><kbd class="osc">/quick_snapshot_stay</kbd></dt>
+  <dd>Take a snapshot and keep working on this version</dd>
+  <dt><kbd class="osc">/fit_*_track(s)</kbd></dt>
+  <dd>Were <em>*</em> is one of 1, 2, 4, 8, 16, 32 or all. Fits this
+  many tracks in editor window. (add s for more than 1)</dd>
+  <dt><kbd class="osc">/zoom_*</kbd></dt>
+  <dd>Zoom editor to include <em>*</em> where <em>*</em> is 100_ms, 1_sec,
+  10_sec, 1_min, 5_min, 10_min or to_session</dd>
+  <dt><kbd class="osc">/temporal_zoom_in</kbd></dt>
+  <dd>Zoom editor in to show less time</dd>
+  <dt><kbd class="osc">/temporal_zoom_out</kbd></dt>
+  <dd>Zoom editor out to show more time</dd>
+  <dt><kbd class="osc">/scroll_up_1_track</kbd></dt>
+  <dd>Scroll the editor pane up 1 track</dd>
+  <dt><kbd class="osc">/scroll_up_1_page</kbd></dt>
+  <dd>Scroll the editor pane up 1 page</dd>
+  <dt><kbd class="osc">/scroll_dn_1_track</kbd></dt>
+  <dd>Scroll the editor pane down 1 track</dd>
+  <dt><kbd class="osc">/scroll_dn_1_page</kbd></dt>
+  <dd>Scroll the editor pane down 1 page</dd>
+</dl>
+
+<h4>Recording control</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/toggle_punch_in</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/toggle_punch_out</kbd></dt>
+  <dd></dd>
+  <dt><kbd class="osc">/set_punch_range</kbd></dt>
+  <dd>Uses edit range as punch range</dd>
+  <dt><kbd class="osc">/rec_enable_toggle</kbd></dt>
+  <dd></dd>
+  <!--dt><kbd class="osc">/toggle_all_rec_enables</kbd></dt>
+  <dd>(toggles all tracks' recording state)</dd-->
+  <dt><kbd class="osc">/stop_forget</kbd></dt>
+  <dd>Stop transport and delete/forget last take</dd>
+</dl>
+
+<h4>Master and Monitor strip control</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/master/gain <em>dB</em></kbd></dt>
+  <dd>See gain in strips</dd>
+  <dt><kbd class="osc">/master/fader  <em>position</em></kbd></dt>
+  <dd>See fader in strips</dd>
+  <dt><kbd class="osc">/master/trimdB <em>dB</em></kbd></dt>
+  <dd>see trimdb in strips</dd>
+  <dt><kbd class="osc">/master/pan_stereo_position <em>position</em></kbd></dt>
+  <dd>See pan_stereo_position in strips</dd>
+  <dt><kbd class="osc">/master/mute  <em>yn</em></kbd></dt>
+  <dd>See mute in strips</dd>
+  <dt><kbd class="osc">/monitor/gain <em>dB</em></kbd></dt>
+  <dd>See gain in strips</dd>
+  <dt><kbd class="osc">/monitor/fader  <em>position</em></kbd></dt>
+  <dd>See fader in strips</dd>
+</dl>
+
+<h3>Track specific operations</h3>
+<p>
+  For each of the following, <em>ssid</em> is the Surface Strip ID for the track
+</p>
+<p class="note">
+  SSID has a different meaning than RID in Ardour version 4.7 and before.
+  Effectively, banking is always being used and the SSID is generated on
+  the fly. The SSID is the position of the strip within bank as an int
+  1 to bank size. There are no gaps as there have been in the past.
+  Depending on the value of strip_types sent to Ardour, Master and
+  Monitor, may be included in the list of SSIDs or not as set in
+  <em>/set_surface</em>.
+</p>
+<p class="note">
+  Some Surfaces (many Android applets) are not able to deal with more
+  than one parameter in a command. However, the two parameter commands
+  below can also be sent as /strip/command/ssid param. In this case the
+  param should be a float even if an int is required below.
+</p>
+<dl class="bindings">
+  <dt><kbd class="osc">/bank_up </kbd></dt>
+  <dd>Change bank to the next higher bank.</dd>
+  <dt><kbd class="osc">/bank_down </kbd></dt>
+  <dd>Change bank to the next lower bank.</dd>
+  <dt><kbd class="osc">/strip/mute <em>ssid</em> <em>mute_st</em></kbd></dt>
+  <dd>where <em>mute_st</em> is a bool/int representing the desired mute state of the track</dd>
+  <dt><kbd class="osc">/strip/solo <em>ssid</em> <em>solo_st</em></kbd></dt>
+  <dd>where <em>solo_st</em> is a bool/int representing the desired solo state of the track</dd>
+  <dt><kbd class="osc">/strip/solo_iso <em>ssid</em> <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the desired solo isolate state of the track</dd>
+  <dt><kbd class="osc">/strip/solo_safe <em>ssid</em> <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the desired solo safe/lock state of the track</dd>
+  <dt><kbd class="osc">/strip/monitor_input <em>ssid</em> <em>monitor_st</em></kbd></dt>
+  <dd>where <em>monitor_st</em> is a bool/int where 1 is forced input monitoring.</dd>
+  <dt><kbd class="osc">/strip/monitor_disk <em>ssid</em> <em>monitor_st</em></kbd></dt>
+  <dd>where <em>monitor_st</em> is a bool/int where 1 is forced disk monitoring. When input and disk are both off,
+  Auto monitoring is enabled.</dd>
+  <dt><kbd class="osc">/strip/recenable <em>ssid</em> <em>rec_st</em></kbd></dt>
+  <dd>where <em>rec_st</em> is a bool/int representing the desired rec state of the track</dd>
+  <dt><kbd class="osc">/strip/record_safe <em>ssid</em> <em>rec_st</em></kbd></dt>
+  <dd>where <em>rec_st</em> is a bool/int representing the desired record safe state of the track</dd>
+  <dt><kbd class="osc">/strip/polarity <em>ssid</em> <em>invert</em></kbd></dt>
+  <dd>where <em>invert</em> is a bool/int representing the desired polarity of the track</dd>
+  <dt><kbd class="osc">/strip/gain <em>ssid</em>  <em>gain</em></kbd></dt>
+  <dd>where <em>gain</em> is a float ranging from -193 to 6 representing the desired gain of the track in dB.</dd>
+  <dt><kbd class="osc">/strip/fader <em>ssid</em>  <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the fader control position.</dd>
+  <dt><kbd class="osc">/strip/trimdB <em>ssid</em>  <em>trim_db</em></kbd></dt>
+  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the desired trim of the track in dB.</dd>
+  <dt><kbd class="osc">/strip/pan_stereo_position <em>ssid</em> <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan position of the track</dd>
+  <dt><kbd class="osc">/strip/pan_stereo_width <em>ssid</em> <em>width</em></kbd></dt>
+  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the desired pan width of the track</dd>
+  <dt><kbd class="osc">/strip/send/gain <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
+  ranging from -193 to +6 representing the desired gain in dB for the send</dd>
+  <dt><kbd class="osc">/strip/send/fader <em>ssid</em> <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
+  ranging from 0 to 1 representing the desired position for the send as a fader</dd>
+  <dt><kbd class="osc">/strip/send/enable <em>ssid</em> <em>sendid</em> <em>state</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>state</em> is 1 for enabled and 0 for disabled</dd>
+  <dt><kbd class="osc">/strip/list </kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/descriptor <em>ssid</em></kbd></dt>
+  <dd>see: <a href="/using-control-surfaces/controlling-ardour-with-osc/querying-ardour-with-osc/">
+  Querying Ardour with OSC.</a></dd>
+  <dt><kbd class="osc">/strip/plugin/reset <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will reset all values to the plugin's original values</dd>
+  <dt><kbd class="osc">/strip/plugin/activate <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to active</dd>
+  <dt><kbd class="osc">/strip/plugin/deactivate <em>ssid</em> <em>piid</em> </kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, will set the plugin's state to inactive</dd>
+  <dt><kbd class="osc">/strip/plugin/parameter <em>ssid</em> <em>piid</em> <em>param</em> <em>value</em></kbd></dt>
+  <dd>where <em>piid</em> = nth Plugin, <em>param</em> = nth param, <em>value</em>
+  is a float ranging from 0 to 1 representing the desired parameter value</dd>
+  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>name</em></kbd></dt>
+  <dd>where <em>name</em> is a string for the desired name of the track</dd>
+</dl>
+<h3>Selected Strip Operations</h3>
+<p>
+  New for Ardour 5, A whole set of operations that work on the selected
+  or expanded strip.
+</p>
+<p class="note">
+  Selected strip operations are complex enough for their own page.
+  Please read: <a
+  href="/using-control-surfaces/controlling-ardour-with-osc/selection-considerations-in-osc/">
+  Selection Considerations in OSC.</a> This is most important if more
+  than one OSC surface is being used with Ardour.
+</p>
+<p>
+  There are two kinds of selection in OSC. GUI selection and local
+  expansion. By default expansion follows selection.
+  <ul>
+       <li>
+               GUI selection: Use <em>/strip/select</em> to set.  Selecting
+               a strip in the GUI will set OSC surface select and the surface
+               will set GUI selection as well.
+       </li>
+       <li>
+               Local expansion: Use <em>/strip/expand</em> to expand a strip
+               without changing overall selection. When /strip/expand is set
+               to 0 or false, the select channel will go back to using the
+               strip selected by the GUI. While expand is turned on,
+               selecting a strip on the GUI does not
+               select the OSC strip. Sending a /strip/select message will
+               override the expand as if it had been set to false.
+               Good for more than one OSC controller at a time.
+       </li>
+  </ul>
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/strip/select <em>ssid</em> <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> = 1 for select. Sets both GUI select and strip
+  to expanded mode. (0 is ignored)</dd>
+  <dt><kbd class="osc">/strip/expand <em>ssid</em> <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> = 1 for expanded mode. Sets only local strip to
+  Expanded. Setting to 0 resets the expansion to follow selection.</dd>
+  <dt><kbd class="osc">/select/expand <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> = 1 for expanded mode, 0 for Select mode.</dd>
+  <dt><kbd class="osc">/select/recenable <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
+  <dt><kbd class="osc">/select/record_safe <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for safe and 0 for unlocked</dd>
+  <dt><kbd class="osc">/select/mute <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
+  <dt><kbd class="osc">/select/solo <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for enabled and 0 for disabled</dd>
+  <dt><kbd class="osc">/select/solo_iso <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the desired solo isolate state of the track</dd>
+  <dt><kbd class="osc">/select/solo_safe <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a bool/int representing the desired solo safe/lock state of the track</dd>
+  <dt><kbd class="osc">/select/monitor_input <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for monitor from input and 0 for auto</dd>
+  <dt><kbd class="osc">/select/monitor_disk <em>y/n</em></kbd></dt>
+  <dd>Where <em>y/n</em> is 1 for monitor from disk and 0 for auto</dd>
+  <dt><kbd class="osc">/select/polarity <em>invert</em></kbd></dt>
+  <dd>where <em>invert</em> is a bool/int representing the desired polarity of the track</dd>
+  <dt><kbd class="osc">/select/gain <em>gain</em></kbd></dt>
+  <dd>Where <em>gain</em> is a float ranging from -193 to 6 representing the desired gain of the track in dB.</dd>
+  <dt><kbd class="osc">/select/fader <em>position</em></kbd></dt>
+  <dd>Where <em>position</em> is an float ranging from 0 to 1 representing the fader control position.</dd>
+  <dt><kbd class="osc">/select/trimdB <em>trim_db</em></kbd></dt>
+  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the desired trim of the track in dB.</dd>
+  <dt><kbd class="osc">/select/pan_stereo_position <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan position of the track</dd>
+  <dt><kbd class="osc">/select/pan_stereo_width <em>width</em></kbd></dt>
+  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the desired pan width of the track</dd>
+  <dt><kbd class="osc">/select/pan_elevation_position <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired pan elevation of the track</dd>
+  <dt><kbd class="osc">/select/pan_frontback_position <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the desired front to back position of the track</dd>
+  <dt><kbd class="osc">/select/pan_lfe_control <em>value</em></kbd></dt>
+  <dd>where <em>value</em> is a float ranging from 0 to 1 representing the desired LFE control value for the track</dd>
+  <dt><kbd class="osc">/select/send_gain", <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
+  ranging from -193 to +6 representing the desired gain in dB for the send</dd>
+  <dt><kbd class="osc">/select/send_fader", <em>sendid</em> <em>send_gain</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em> is a float
+  ranging from 0 to 1 representing the desired position for the send as a fader</dd>
+  <dt><kbd class="osc">/select/send_enable", <em>sendid</em> <em>state</em></kbd></dt>
+  <dd>where <em>sendid</em> = nth_send, <em>state</em> is 1 for enabled and 0 for disabled</dd>
+</dl>
+
+<h3>Menu actions</h3>
+<p>
+  Every single menu item in Ardour's GUI is accessible via OSC. There is
+  a single common syntax to trigger the action as if it was selected
+  with the mouse (or keyboard):</p>
+<kbd class="osc">/access_action <em>action_name</em></kbd>
+<p>
+  The <a
+  href="/appendix/menu-actions-list/">
+  list of actions</a> shows all available values of <em>action-name</em> as of
+  June 2016 for Ardour 5.0.pre0.1. You can get the current list at any
+  time by running Ardour with the -b flag.
+  </p>
+
+{% children %}
diff --git a/include/osc-personal-monitoring.html b/include/osc-personal-monitoring.html
new file mode 100644 (file)
index 0000000..9cc24f5
--- /dev/null
@@ -0,0 +1,112 @@
+---
+layout: default
+title: OSC&#58; Personal Monitoring Control
+---
+
+<p>
+       Personal monitoring can allow a performer with a smart phone to set
+       their personal monitor mix for a floor wedge or inear monitoring.
+</p>
+<h3>Setup</h3>
+<p>
+       Some setup needs to be done in the GUI mixer window before this can
+       work.
+</p>
+       <ul>
+               <li>
+                       Create a bus for each performer who will have personal
+                       monitoring. A good practice is to name the bus with the
+                       performers name.
+               </li>
+               <li>
+                       Connect the output of that bus to one of the audio
+                       interface's playback ports that is not otherwise used. OSC
+                       will now include this bus in it's list of aux buses as it
+                       no longer has it's output connected to the Master bus.
+               </li>
+               <li>
+                       Add an aux send to each channel the performer needs to hear
+                       in their personal mix. Many performers only need three or
+                       four sources to be mixed. If the performer needs to hear a
+                       a set of inputs that are combined into a bus, adding the
+                       aux send to that bus may make more sense than adding ten
+                       drum channels for example.
+               </li>
+               <li>
+                       If the performer wishes to hear effects in their monitor,
+                       an extra send from the send bus, placing the performers aux
+                       send after the effect or a plugin can be added in line in
+                       the aux bus itself.
+               </li>
+       </ul>
+<p>
+       This gives stage or studio monitoring for the performer.
+</p>
+
+<h3>The OSC commands and feedback for personal monitoring</h3>
+<p>
+       All of the personal monitoring commands and feedback start with a
+       <em>/cue</em>. It is expected that a surface used as a personal
+       monitor control will use only <em>/cue</em> commands.
+</p>
+<p class="note">
+       The send controls and feedback all have the send id (1 to n) in line
+       as part of the OSC path. So the path for the second send would be
+       <em>/cue/send/fader/2</em> to set the level. It is considered that
+       most surfaces used for this will only be able to handle one parameter.
+</p>
+<h4>Commands</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/cue/connect</kbd></dt>
+  <dd>Returns a list of aux buses.</dd>
+  <dt><kbd class="osc">/cue/aux <em>aux-number</em></kbd></dt>
+  <dd>where <em>aux-number</em> is an integer which is the aux bus
+  number this surface will use.</dd>
+  <dt><kbd class="osc">/cue/next_aux</kbd></dt>
+  <dd>Sets the the aux bus to one bus higher.</dd>
+  <dt><kbd class="osc">/cue/previous_aux</kbd></dt>
+  <dd>Sets the aux to one bus lower.</dd>
+  <dt><kbd class="osc">/cue/connect</kbd></dt>
+  <dd>Returns a list of aux buses.</dd>
+  <dt><kbd class="osc">/cue/fader <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float for the position of the fader
+  between 0.0 and 1.0.</dd>
+  <dt><kbd class="osc">/cue/mute <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a float of 0.0 for mute off and 1.0 for mute on.</dd>
+  <dt><kbd class="osc">/cue/send/fader/<em>id</em> <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float for the position of the fader
+  between 0.0 and 1.0.</dd>
+  <dt><kbd class="osc">/cue/send/enable/<em>id</em> <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a float of 0.0 for disable and 1.0 for enable.</dd>
+</dl>
+<h4>Feedback</h4>
+<dl class="bindings">
+  <dt><kbd class="osc">/cue/name <em>name</em></kbd></dt>
+  <dd>where <em>name</em> is a string that is the name of the currently
+  selected aux bus.</dd>
+  <dt><kbd class="osc">/cue/name/<em>id</em> <em>name</em></kbd></dt>
+  <dd>where <em>name</em> is a string that is the name of the aux bus
+  that <em>id</em> belongs to.</dd>
+  <dt><kbd class="osc">/cue/fader <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float from 0.0 to 1.0 that shows the
+  fader position for the selected aux bus.</dd>
+  <dt><kbd class="osc">/cue/mute <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a float of 0.0 or 1.0 that shows the state
+  of the mute for the selected aux bus.</dd>
+  <dt><kbd class="osc">/cue/signal <em>activity</em></kbd></dt>
+  <dd>where <em>activity</em> is a float of 0.0 or 1.0 that shows audio
+  activity for the selected aux bus.</dd>
+  <dt><kbd class="osc">/cue/send/name/<em>id</em> <em>name</em></kbd></dt>
+  <dd>where <em>name</em> is a string that is the name of the channel
+  that send <em>id</em> belongs to.</dd>
+  <dt><kbd class="osc">/cue/send/fader/<em>id</em> <em>position</em></kbd></dt>
+  <dd>where <em>position</em> is a float from 0.0 to 1.0 that is the position
+  for the fader for the send that <em>id</em> belongs to.</dd>
+  <dt><kbd class="osc">/cue/send/enable/<em>id</em> <em>state</em></kbd></dt>
+  <dd>where <em>state</em> is a float of 0.0 or 1.0 that is the state
+  of the enable for the send that <em>id</em> belongs to.</dd>
+</dl>
+<p>
+       While a fader is being adjusted, the corresponding <em>/*/name</em>
+       text will give the level in db.
+</p>
diff --git a/include/osc-setup-dialog.html b/include/osc-setup-dialog.html
new file mode 100644 (file)
index 0000000..d21edf8
--- /dev/null
@@ -0,0 +1,125 @@
+---
+layout: default
+title: OSC&#58; Using the Setup Dialog
+---
+
+<p>
+  Starting with Ardour 5.1 OSC has a graphic setup dialog. This dialog
+  can be accessed from Preferences->Control Surfaces. Select OSC and
+  click on the Show Protocol Settings.
+</p>
+<p>
+  The Ardour OSC dialog has three tabs. The main tab, the Strip Types
+  tab and the Feedback tab.
+</p>
+<p>
+  Many OSC devices get their IP from a DHCP making it difficult to set
+  an IP in Ardour's OSC settings. Therefore, most of the settings are
+  <em>default</em> settings. Values are set and the next OSC surface to
+  send a /set_surface* message to Ardour will use those settings. An OSC
+  surface that has previously sent a message to Ardour will retain the
+  settings it already had. The <em>Clear OSC Devices</em> will reset all
+  device settings. A <em>/refresh</em> message will both reset the
+  device settings as well as set that device to any new settings. The
+  Use of <em>/set_surface</em> will override all settings except
+  <em>Port Mode</em>.
+</p>
+<h2>Dialog settings</h2>
+<h3>OSC setup tab</h3>
+<p>
+<img alt="the OSC configuration dialog"
+     src="/images/osc-dialog.png">
+</p>
+<h4>Connection:</h4>
+<p>
+  This field is informational only. It shows where Ardour will receive
+  OSC messages. The system Name and the Port are the most important parts.
+</p>
+<h4>Port Mode:</h4>
+<p>
+  This drop down allows the choice of Auto or Manual outbound port
+  setting. The default Auto port mode, will send OSC messages back to
+  the port messages from that surface are received from. This setting
+  allows two surfaces on the same IP to operate independently. However,
+  there are a number of OSC control surfaces that do not monitor the
+  same port they send from and in fact may change ports they send from
+  as well. Manual allows the outgoing port (the port the surface will
+  receive on, to be manually set. In Manual port mode only one control
+  surface per IP can work. Most phone or tablet OSC controllers like
+  touchOSC or Control need Manual port mode. More than one controller
+  can be used so long as each has it's own IP.
+</p>
+<h4>Manual Port:</h4>
+<p>
+  This is an Entry box for setting the outgoing port when in
+  Manual port mode.
+</p>
+<h4>Bank Size:</h4>
+<p>
+  This sets the default bank size for the next surface to send a
+  <em>/set_surface/*</em> OSC message. Bank size 0 (the default) sets
+  no banking and allows controlling all strips included in strip_types
+  at once.
+</p>
+<h4>Gain Mode:</h4>
+<p>
+  Sets the faders (and sends faders) feedback math to position where a
+  value between 0 and 1 represents the fader position of the same fader
+  in the mixer GUI or dB where the feedback from fader movement will be
+  returned as a dB value. When the Gain Mode is set to position, the
+  /*/name feedback for the channel will show dB values in text while the
+  fader is being adjusted and then return the the name text.
+</p>
+<h4>Debug:</h4>
+<p>
+  For debugging purposes this allows logging either good OSC messages
+  Ardour receives or invalid messages received or none.
+</p>
+<h4>Preset:</h4>
+<p>
+  Ardour now allows the use of preset settings. The default settings
+  used are the settings from the last session or the factory defaults
+  the first time OSC is enabled. As soon as any of these settings are
+  changed, the Preset will change to "User" and the new settings will be
+  save to the osc directory Ardour configuration directory as
+  <em>user.preset</em>. This preset file can be renamed for future use.
+  It is suggested to also change the name value inside to avoid confusion
+  in the preset listing. Ardour will ship with some of it's own presets
+  that go with some popular OSC control and map combinations.
+</p>
+<h4>Clear OSC Devices</h4>
+<p>
+  This button clears operating device profiles so that Ardour will reset
+  all devices settings to use the new defaults from changed settings. a
+  device may still override these new settings with the /set_surface set
+  of commands. The reason for setting defaults settings is that some OSC
+  controllers are not able to send more than one parameter at a time and
+  so having correct defaults allows one "Connect" button rather than 4.
+</p>
+<h3>Default Strip Types tab</h3>
+<p>
+<img alt="the Default Strip Types tab"
+     src="/images/osc-strip-types.png">
+</p>
+<p>
+  This allows selecting which of Ardour's mixer strips will be available
+  for control. The Factory default is all strips except master, monitor
+  and hidden strips. If it is desired to only see input tracks the
+  others can be deselected. It is also possible to change these settings
+  from the control surface. A set of buttons could select showing only
+  inputs or only buses. If a group is selected in the GUI then showing
+  only selected strips will show only that group. Showing hidden tracks
+  is handy for cases where a groups of tracks that grouped to a bus or
+  controlled by a VCA are hidden, but one of those tracks needs a tweak.
+</p>
+<h3>Default Feedback tab</h3>
+<p>
+<img alt="the Default Feedback tab"
+     src="/images/osc-feedbackdefault.png">
+</p>
+<p>
+  This allows setting up which controls provide feedback. The Factory
+  default is none. If the controller is unable to receive feedback, this
+  should be left blank. In the case of metering, Metering as a LED strip
+  only works if Metering as a Float is disabled.
+</p>
diff --git a/include/parameter-types-in-osc.html b/include/parameter-types-in-osc.html
new file mode 100644 (file)
index 0000000..7af30f0
--- /dev/null
@@ -0,0 +1,33 @@
+---
+layout: default
+title: OSC&#58; Parameter Types
+---
+
+<p>
+  An OSC message is laid out in this form:
+</p>
+<kbd>
+       /path/of/command type parameter
+</kbd>
+<p>
+       The type is there to indicate what the parameter is. This gives
+       the idea that parameter types are quite strict and if the command
+       requires an Integer <em>"i"</em> then the controller had better send it.
+       However, the checking of the parameter type is left to the receiving
+       software.
+</p>
+<p>
+       What this means in practical terms is that the surface can get away
+       with sending the wrong type of parameter. There are some places
+       where that just doesn't make sense. For example, a parameter that
+       is specified as a Float with a range of 0 to 1, could be sent as
+       an Integer, but would only have full scale and minimum value with
+       nothing in between. This is not much use for a fader, though ok for
+       a button.
+</p>
+<p>
+       There are a number of OSC controllers based on iOS and Android
+       tablets that only send or receive parameters as floats or text.
+       These controllers should have no problem sending bool or int values
+       as floats. Ardour will interpret the values as required.
+</p>
diff --git a/include/presonus-faderport.html b/include/presonus-faderport.html
new file mode 100644 (file)
index 0000000..9acf374
--- /dev/null
@@ -0,0 +1,376 @@
+---
+layout: default
+title: Using the Presonus Faderport
+menu_title: Presonus Faderport
+---                        
+
+<p>
+  Since version 4.5, Ardour has had full support for the Presonus
+  Faderport. This is a compact control surface featuring a single
+  motorized fader, a single knob (encoder) and 24 buttons with fixed
+  labels. It is a relatively low-cost device that functions very well
+  to control a single (selected) track or bus, along with a variety of
+  other "global" settings and conditions.
+</p>
+
+<h2>Connecting the Faderport</h2>
+<p>
+  The Faderport comes with a single USB socket on the back. Connect a
+  suitable USB cable from there to a USB port on your computer. As of
+  the end of 2015, you should avoid USB3 ports - these cause erratic
+  behaviour with the device. This issue might get fixed by Presonus in
+  the future.
+</p>
+<p class="well">
+  Ardour uses the Faderport in what Presonus calls "native" mode. You
+  do not need to do anything to enable this - Ardour will set the
+  device to be in the correct mode. In native mode, the Faderport
+  sends and receives ordinary MIDI messages to/from the host, and the
+  host understands the intended meaning of these messages. We note
+  this detail to avoid speculation about whether Ardour supports the
+  device via the HUI protocol - it does not.
+<p>
+  The Faderport will be automatically recognized by your operating
+  system, and will appear in any of the lists of possible MIDI ports
+  in both Ardour and other similar software.
+</p>
+<p>
+  To connect the Faderport to Ardour, open the Preferences dialog, and
+  then click on "Control Surfaces". Click on the "Enable" button
+  in the line that says "Faderport" in order to activate Ardour's
+  Faderport support. Then double click on the line that says
+  "Faderport". A new dialog will open, containing (among other things)
+  two dropdown selectors that will allow you to identify the MIDI
+  ports where your Faderport is connected.
+</p>
+<p>
+<img alt="the Faderport configuration dialog"
+     src="/images/faderport_dialog.png">
+</p>
+<p>
+  Once you select the input and output port, Ardour will initialize
+  the Faderport and it will be ready to use. You only need do this
+  once: once these ports are connected and your session has been
+  saved, the connections will be made automatically in this and other
+  future sessions.
+<p>
+  You do not need to use the power supply that comes with the
+  Faderport but without it, the fader will not be motorized. This
+  makes the overall experience of using the Faderport much less
+  satisfactory, since the fader will not move when Ardour tells it
+  to, leading to very out-of-sync conditions between the physical
+  fader position and the "fader position" inside the program.
+</p>
+
+<h2>Using the Faderport</h2>
+<p>
+  The Faderport's controls can be divided into three groups:
+  <ol>
+    <li>Global controls such as the transport buttons</li>
+    
+    <li>Controls which change the settings for particular track or
+      bus</li>
+    
+    <li>Controls which alter which track or bus is modified by the
+      per-track/bus controls.</li>
+  </ol>
+</p>
+<p>
+  Because the Faderport has only a single set of per-track controls,
+  by default those controls operate on the first selected track or
+  bus. If there is no selected track or bus, the controls will do
+  nothing.
+</p>
+
+<h3>Transport Buttons</h3>
+<p>
+  The transport buttons all work as you would expect.
+  <dl>
+    <dt>Rewind</dt>
+    <dd>
+      <p>
+      When pressed on its own, starts the transport moving backwards. Successive presses
+      speed up the "rewind" behaviour.
+      </p>
+      <p>
+       If pressed while also holding the Stop button, the playhead will
+       return to the zero position on the timeline.
+      </p>
+      <p>
+       If pressed while also holding the Shift button, the playhead will
+       move to the session start marker.
+      </p>
+    </dd>
+    <dt>Fast Forward</dt>
+    <dd>
+      <p>
+       When pressed on its own, starts the transport moving faster than normal. Successive presses
+       speed up the "fast forward" behaviour.
+      </p>
+      <p>
+       If pressed while also holding the Shift button, the playhead
+       will move to the session end marker.
+      </p>
+    </dd>
+    <dt>Stop</dt>
+    <dd>
+      Stops the transport. Also used in combination with the Rewind
+      button to "return to zero".
+    </dd>
+    <dt>Play</dt>
+    <dd>
+      Starts the transport. If pressed while the transport is
+      already rolling at normal speed, causes the playhead to jump to
+      the start of the last "roll" and continue rolling ("Poor man's
+      looping").
+    </dd>
+    <dt>Record Enable</dt>
+    <dd>Toggles the global record enable setting
+    </dd>
+  </dl>
+</p>
+
+<h3>Other Global Controls</h3>
+<p>
+  The Mix, Proj, Trns buttons do not obviously correspond any
+  particular functions or operations in Ardour. We have therefore
+  allowed users to choose from a carefully curated set of possible
+  actions that seem related to the button labels in some clear
+  way. This can be done via the Faderport configuration dialog
+  accessed via <code>Preferences &gt; Control Surfaces</code>. Each
+  button has 3 possible actions associated with it:
+  <ul>
+    <li>Plain Press: action to be taken when the button is pressed on
+      its own.</li>
+    <li>Shift-Press: action to be taken when the button is pressed in
+      conjunction with the Shift button.</li>
+    <li>Long Press: action to be taken when the button is pressed on
+      its own and held down for more than 0.5 seconds.</li>
+  </ul>
+  Click on the relevant drop-down selector to pick an action as you
+  prefer.
+</p>
+<p>
+  The User button also has no obvious mapping to specific Ardour
+  functionality, so we allow users to choose from <em>any</em>
+  possible GUI action. The menu for selecting the action is somewhat
+  confusing and it can be hard to find what you're looking
+  for. However, all possible actions are there, so keep looking!
+<p>
+  <dl>
+    <dt>Mix</dt>
+    <dd>
+      <p>
+       Possible actions include:
+       <ul>
+         <li>Toggle Editor &amp; Mixer visibility</li>
+         <li>Show/Hide the Editor mixer strip</li>
+       </ul>
+      </p>
+    </dd>
+    <dt>Proj</dt>
+    <dd> 
+      <p>
+       Possible actions include:
+       <ul>
+         <li>Toggle Meterbridge visibility</li>
+         <li>Toggle Session Summary visibility</li>
+         <li>Toggle Editor Lists visibility</li>
+         <li>Zoom to session</li>
+         <li>Zoom in</li>
+         <li>Zoom out</li>
+       </ul>
+      </p>
+   </dd>
+    <dt>Trns</dt>
+    <dd>
+      <p>
+       Possible actions include:
+       <ul>
+         <li>Toggle Locations window visibility</li>
+         <li>Toggle Metronome</li>
+         <li>Toggle external sync</li>
+         <li>Set Playhead at current pointer position</li>
+       </ul>
+      </p>
+    </dd>
+    <dt>Undo/Redo</dt>
+    <dd>
+      Undo Causes the last operation carried out in the editor to be
+      undone. When pressed in conjuction with the Shift button, it
+      causes the most recent undone operation to be re-done. 
+    </dd>
+    <dt>Punch</dt>
+    <dd>
+      <p>
+       When pressed on its own, toggles punch recording. If there is no
+       punch range set for the session, this will do nothing.
+      </p>
+      <p>
+       When pressed in conjunction with the Shift button, this moves
+       the playhead to the previous Marker
+      </p>
+    </dd>
+    <dt>User</dt>
+    <dd>
+      <p>
+       See above. Any and all GUI-initiated actions can be driven with
+       by pressing this button on its own, or with a "long" press. 
+      </p>
+      <p>
+       When pressed in conjunction with the Shift button, this will move
+       the playhead to the next marker.
+      </p>
+    </dd>
+    <dt>Loop</dt>
+    <dd>
+      <p>
+       When pressed on its own, this toggles loop playback. If the
+       Ardour preference "Loop-is-mode" is enabled, this does nothing
+       to the current transport state. If that preference is disabled,
+       then engaging loop playback will also start the transport.
+      </p>
+      <p>
+       When pressed in conjunction with the Shift button, this will
+       create a new (unnamed) marker at the current playhead
+       position.
+      </p>
+    </dd>
+  </dl>
+</p>
+  
+<h3>Per-track Controls</h3>
+<p>
+  <dl>
+    <dt>Mute</dt>
+    <dd>
+      This toggles the mute setting of the currently controlled
+      track/bus. The button will be lit if the track/bus is muted.
+    </dd>
+    <dt>Solo</dt>
+    <dd>
+      This toggles the solo (or listen) setting of the currently
+      controlled track/bus. The button will be lit if the track/bus is
+      soloed (or set to listen mode).
+    </dd>
+    <dt>Rec</dt>
+    <dd>
+      This toggles the record-enabled setting of the currently
+      controlled track/bus. The button will be lit if the track is
+      record-enabled. This button will do nothing if the Faderport is
+      controlling a bus.
+    </dd>
+    <dt>Fader</dt>
+    <dd>
+      The fader controls the gain applied to the currently controlled
+      track/bus. If the Faderport is powered, changing the gain in
+      Ardour's GUI or via another control surface, or via automation,
+      will result in the fader moving under its own control. 
+    </dd>
+    <dt>Knob/Dial/Encoder</dt>
+    <dd>
+      <p>
+       The knob controls 1 or 2 pan settings for the current
+       controlled track/bus. When used alone, turning the knob controls
+       the "azimuth" or "direction" (between left and right) for the
+       panner in the track/bus (if any). This is all you need when
+       controlling tracks/busses with 1 input and 2 outputs.
+      </p>
+      <p>
+       If controlling a 2 input/2 output track/bus, Ardour's panner
+       has two controls: azimuth (direction) and width. The width
+       must be reduced to less than 100% before the azimuth can be
+       changed. Pressing the "Shift" button while turning the knob
+       will alter the width setting.
+      </p>
+      <p>
+       The knob can also be turned while the "User" button is held,
+       in order to modify the input gain for the currently controlled
+       track.
+      </p>
+    </dd>
+    <dt>Read</dt>
+    <dd>
+      Enables playback/use of fader automation data by the controlled track/bus.
+    </dd>
+    <dt>Write</dt>
+    <dd>
+      Puts the fader for the controlled track/bus into automation
+      write mode. While the transport is rolling, all fader changes
+      will be recorded to the fader automation lane for the relevant track/bus.
+    </dd>
+    <dt>Touch</dt>
+    <dd>
+      Puts the fader for the controlled track/bus into automation
+      touch mode. While the transport is rolling, touching the fader
+      will initiate recording all fader changes until the fader is
+      released. When the fader is not being touched, existing
+      automation data will be played/used to control the gain level.
+    </dd>
+    <dt>Off</dt>
+    <dd>
+      This disables all automation modes for the currently controlled
+      track/bus. Existing automation data will be left unmodified by
+      any fader changes, and will not be used for controlling gain.
+    </dd>
+  </dl>
+</p>
+
+<h3>Track Selection Controls</h3>
+<p>
+  You can manually change the track/bus controlled by the Faderport by
+  changing the selected track in Ardour's editor window. If you select
+  more than 1 track, the Faderport will control the first selected
+  track and <em>only</em> that track/bus.
+</p>
+<p>
+  <dl>
+    <dt>Left (arrow)</dt>
+    <dd>
+      This causes the Ardour GUI to select the previous track/bus
+      (using the current visual order in the editor window), which
+      will in turn cause the Faderport to control that track. If there
+      is no previous track/bus, the selected track/bus is left
+      unchanged, and the Faderport continues to control it.
+    </dd>
+    <dt>Right (arrow)</dt>
+    <dd>
+      This causes the Ardour GUI to select the next track/bus
+      (using the current visual order in the editor window), which
+      will in turn cause the Faderport to control that track. If there
+      is no next track/bus, the selected track/bus is left
+      unchanged, and the Faderport continues to control it.
+    </dd>
+    <dt>Output</dt>
+    <dd>
+      <p>
+       Pressing the Output button causes the Faderport to control
+       the fader, pan, mute and solo settings of the Master bus. If
+       your session does not contain a Master bus, it does nothing.
+       This is a toggle button - pressing it again returns Faderport
+       to controlling whichever track/bus was selected before the
+       first press of the Output button.
+      </p>
+      <p>
+       If your session uses Ardour's monitor section, you can use
+       Shift-Output to assign it to the Faderport in the same way
+       that Output assigns the Master bus. This is also a toggle
+       setting, so the second Shift-Output will return the Faderport
+       to controlling whichever track/bus was selected before.
+      </p>
+      <p>
+       If you press Shift-Output after a single press to Output
+       (i.e. control the Monitor Section while currently controlling
+       the Master bus) or vice versa (i.e. control the Master bus
+       while currently controlling the Monitor Section), the press
+       will be ignored. This avoids getting into a tricky situation
+       where it is no longer apparent what is being controlled and
+       what will happen if you try to change it.
+      </p>
+    </dd>
+    <dt>Bank</dt>
+    <dd>
+      The "Bank" button is currently not used by Ardour
+    </dd>
+  </dl>
+</p>
diff --git a/include/querying-ardour-with-osc.html b/include/querying-ardour-with-osc.html
new file mode 100644 (file)
index 0000000..13e7322
--- /dev/null
@@ -0,0 +1,153 @@
+---
+layout: default
+title: OSC&#58; Querying Ardour
+---
+
+<p>
+  In order to make a custom controller that knows what strips Ardour
+  has, the controller needs to be able to query Ardour for that
+  information. These set of commands are for smarter control surfaces
+  That have the logic to figure out what to do with the information.
+  These are not of value for mapped controllers like touchOSC and
+  friends. The controller will need to send these queries to ardour
+  as often as it needs this information. It may well make sense to use
+  regular feedback for things that need to be updated often such as
+  position or metering.
+  Here are the commands used to query Ardour:
+</p>
+
+<dl class="bindings">
+  <dt><kbd class="osc">/strip/list</kbd></dt>
+  <dd>Ask for a list of strips</dd>
+  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of sends on the strip <em>ssid</em></dd>
+  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of tracks that have sends to the strip <em>ssid</em> points to</dd>
+  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
+  <dd>Asks for a list of plug-ins for strip <em>ssid.</em></dd>
+  <dt><kbd class="osc">/plugin/descriptor <em>ssid</em> <em>piid</em></kbd></dt>
+  <dd>Asks for a list of descriptors for plug-in <em>piid</em> on strip <em>ssid</em></dd>
+</dl>
+
+<h3>A list of strips</h3>
+
+<p>
+  <code>/strip/list</code> asks Ardour for a list of strips that the
+  current session has. Ardour replies with a message for each
+  strip with the following information:
+  <ul>
+    <li>Strip type</li>
+    <li>Strip name</li>
+    <li>Number of inputs</li>
+    <li>Number of outputs</li>
+    <li>Muted (bool)</li>
+    <li>Soloed (bool)</li>
+    <li>Ssid (strip number)</li>
+    <li>Record enabled (bool)</li>
+  </ul>
+  After all the strip messages have been sent, one final message is
+  sent with:
+  <ul>
+    <li>The text <code>end_route_list</code></li>
+    <li>The session frame rate</li>
+    <li>The last frame number of the session</li>
+  </ul>
+</p>
+<p class="note">A bus will not have a record enable and so a bus message
+  will have one less parameter than a track. It is the controllers
+  responsability to deal with this.
+</p>
+
+<h3>A list of sends</h3>
+<p>
+  <code>/strip/sends <em>ssid</em></code> asks Ardour for a list of
+  sends for strip number ssid. The reply is sent back to the
+  controller as one message with the following information:
+  <ul>
+    <li>Ssid that information is for</li>
+    <li>Each send's information:</li>
+    <ul>
+      <li>The send's target bus ssid</li>
+      <li>The send's target bus name</li>
+      <li>The send id for this strip</li>
+      <li>The send gain as a fader possition</li>
+      <li>The Send's enable state</li>
+    </ul>
+  </ul>
+</p>
+<p>
+  The controller can tell how many sends there are from the number of
+  parameters as each send has 5 parameters and there is one extra for
+  ssid.
+</p>
+
+<h3>A list if tracks that send audio to a bus</h3>
+<p>
+  <code>/strip/receives <em>ssid</em></code> will return a list of
+  tracks that have sends to the bus at the ssid. The reply will
+  contain the following information for each track conntected to this
+  bus:
+  <ul>
+    <li>The ssid of the track sending</li>
+    <li>The name of the sending track</li>
+    <li>The id of the send at that track</li>
+    <li>It's gain in fader possition</li>
+    <li>The send's enable state</li>
+  </ul>
+</p>
+
+<h3>A list of plug-ins for strip</h3>
+<p>
+  <code>/strip/plugin/list <em>ssid</em></code> will return a list of
+  plug-ins that strip ssid has. The reply will contain the following
+  information:
+  <ul>
+    <li>Ssid that information is for</li>
+    <li>Each plugin's information:</li>
+    <ul>
+      <li>The plug-in's id</li>
+      <li>The plug-in's name</li>
+    </ul>
+  </ul>
+</p>
+
+<h3>A list of a plug-in's parameters</h3>
+<p>
+  <code>/plugin/descriptor <em>ssid</em> <em>piid</em></code> will
+  return the plug-in parameters for ppid plug-in on the ssid strip. The
+  reply will contain the following information:
+  <ul>
+    <li>Ssid of the strip the plug-in is in</li>
+    <li>The plug-in id for the plug-in</li>
+    <li>The plug-in's name</li>
+    <li>Information about each parameter</li>
+    <ul>
+      <li>The parameter id</li>
+      <li>The parameter's name</li>
+      <li>A bitset of flags (see below)</li>
+      <li>Data type</li>
+      <li>Minimum value</li>
+      <li>Maximum value</li>
+      <li>The number of scale points</li>
+      <li>zero or more scale points of one value and one string each</li>
+      <li>The current parameter value</li>
+    </ul>
+  </ul>
+</p>
+<p>
+  The flag bitset above has been defined as (from lsb):
+  <ul>
+    <li>0 - enumeration</li>
+    <li>1 - integer step</li>
+    <li>2 - logarithmic</li>
+    <li>3 - max unbound</li>
+    <li>4 - min unbound</li>
+    <li>5 - sample rate dependent</li>
+    <li>6 - toggled</li>
+    <li>7 - controllable</li>
+  </ul>
+</p>
+<p>
+       While this seems complex, it is really not that bad. Minimum,
+       maximum and value will in most cases give you all you need.
+</p>
diff --git a/include/selection-considerations-in-osc.html b/include/selection-considerations-in-osc.html
new file mode 100644 (file)
index 0000000..3996b49
--- /dev/null
@@ -0,0 +1,72 @@
+---
+layout: default
+title: OSC&#58; Selection and Expansion Considerations
+---
+
+<p>
+  Ardour does not send every possible feedback value for each channel.
+  It does send expanded information on the selected channel. There are
+  also extra commands for the selected strip. All the feedback and
+  select commands have their own path <em>/select</em>.
+  This means that for the selected channel the surface does not have to
+  keep track of the strip ID. The /select strip will follow the
+  "current mixer strip" in the GUI editor window.
+</p>
+<p>
+  There are two major uses for this:
+  <ol>
+       <li>Single strip control surfaces. Using
+         <em>/access_action Editor/select-next-route</em> or
+         <em>/access_action Editor/select-prev-route</em>
+         to step through the mixer strips.</li>
+       <li>Using a "Super strip" section of knobs to control parts
+       of the strip that are changed less often such as polarity, sends or
+       plugin parameters.</li>
+  </ol>
+</p>
+<p>
+  Selection in Ardour's OSC implementation are complicated by the
+  possibility of using more than one OSC controller at the same time.
+  User "A" may select strip 4 and use a selected controller to make
+  changes to that strip. User "B" may subsequently select strip 7 to
+  make changes on. This leaves user "A" making changes to strip 7
+  which they did not choose.
+</p>
+<p>
+  For this reason Ardour offers local expansion aside from the GUI
+  selection. Local expansion only affects the one OSC controller. GUI
+  selection is global and affects all controllers using GUI selection
+  as well as the GUI.
+</p>
+<p class="note">
+       Both select and expansion use the /select set of commands.
+</p>
+<p>
+  In general, in a one user situation where that one user may use either
+  the OSC surface or the GUI, using GUI based selection makes the most
+  sense. This is the default because this is the more common use.
+</p>
+<p>
+  When there is more than one operator, then expansion only is the
+  mode of choice. It may make sense for one of the surfaces to
+  use GUI selection where the operator is also using the GUI for some
+  things. However, the set up should be carefully analyzed for the
+  possibility of selection confusions. Expansion should be
+  considered the <em>safe</em> option.
+</p>
+<p>
+  It is always ok to use expansion on the surface even in a one
+  user scenario. This allows the user to use GUI and surface selection
+  for different uses.
+</p>
+<p>
+  It is also possible to use both if desired. /strip/select will ways
+  set the GUI select, but /strip/expand will set the select feedback
+  and commands locally without changing the GUI select. Another
+  /strip/expand or a /strip/select will override that expand command
+  and releasing the /strip/expand or /select/expand (setting it to 0 or
+  false) will set the /select set of commands and feedback back to
+  whichever strip the GUI has selected at that time. This could be used
+  to switch between the GUI select and the local expand to compare two
+  strips settings.
+</p>
diff --git a/include/ssl-nucleus.html b/include/ssl-nucleus.html
new file mode 100644 (file)
index 0000000..83c98e2
--- /dev/null
@@ -0,0 +1,219 @@
+---
+layout: default
+title: SSL Nucleus
+---
+
+<p>
+  The Nucleus, from Solid State Logic, is a 16 fader Mackie Control
+  device that includes many buttons, separate meters, two LCD displays
+  and other features. The device is not cheap (around US$5000 at the
+  time of writing), and has some <a href="#design">design features</a>
+  (or lack thereof) which some Ardour developers find
+  questionable. Nevertheless, it is a very flexible device, and makes
+  a nice 16 fader surface without the need to somehow attach an
+  extender to your main surface.
+</p>
+
+<h2>Pre-configuring the Nucleus</h2>
+
+<p>
+  Your Nucleus comes complete with a number of "profiles" for a few
+  well-known DAWs. At the time of writing it does not include one for
+  Ardour (or related products such as Harrison Mixbus). 
+</p>
+<p>
+  We have prepared a profile in which as many buttons as possible send
+  Mackie Control messages, which makes the device maximally useful
+  with Ardour (and Mixbus). You can
+  download <a href="https://community.ardour.org/files/ArdourNucleusProfile.zip">the
+  profile</a>
+  and load it to your Nucleus using the <code>Edit Profiles</code>
+  button in SSL's Nucleus Remote application. Be sure to select it for
+  the active DAW layer in order to make Ardour work as well as
+  possible. <em>Note: unfortunately, the Nucleus Remote application
+  only runs on OS X or Windows, so Linux users will need access to
+  another system to load the profile. We will provide notes on the
+  profile settings at a future time.</em>
+</p>
+
+<h2>Connecting the Nucleus</h2>
+
+<p>
+  Unlike most Mackie Control devices, the Nucleus uses an ethernet
+  connection to send and receive the MIDI messages that make up the
+  Mackie Control protocol. Specifically, it uses a technology called
+  "ipMIDI" which essentially "broadcasts" MIDI messages on a local
+  area network, so that any connected devices (computers, control
+  surfaces, tablets etc.) can participate.
+</p>
+<p>
+  All other DAWs so far that support the Nucleus have chosen to do so
+  by using a 3rd party MIDI driver called "ipMIDI", which creates a
+  number of "virtual" MIDI ports on your computer. You, the user,
+  tells the DAW which ports to connect to, and ipMIDI takes care of
+  the rest.
+</p>
+<p>
+  Ardour has builtin ipMIDI support, with no need of any 3rd party
+  packages, and no need to identify the "ports" to connect to in order
+  to communicate with the Nucleus. This makes setting it up a bit
+  easier than most other systems.
+</p>
+<p>
+  Unless ... you already installed the ipMIDI driver in order to use
+  some other DAW with your Nucleus. If ipMIDI is configured to create
+  any "ports", it is not possible for Ardour's own ipMIDI support to
+  function. We decided to offer both methods of communicating with
+  your Nucleus. If you regularly use other DAWs, and appreciate having
+  ipMIDI permanently set up to communication with the Nucleus - that's
+  OK, you can tell Ardour to use the ipMIDI driver you already
+  have. But if you're not using other DAWs with the Nucleus (and thus
+  have not installed the ipMIDI driver), then you can ignore the
+  ipMIDI driver entirely, and let Ardour connect directly with no
+  configuration.
+</p>
+
+<h3>Connecting via Ardour's own ipMIDI support</h3>
+
+<p class="alert alert-info">
+  This is usable only on computers with no 3rd party ipMIDI
+  driver software installed and configured. If you have the OS X or
+  Windows ipMIDI driver from nerds.de, it <strong>MUST</strong> be
+  configured to offer <strong>ZERO</strong> ports before using this
+  method.
+</p>
+
+<p>
+  Open <code>Preferences > Control Surfaces</code>. Ensure that the
+  Mackie protocol is enabled, then double-click on it to open the
+  Mackie Control setup dialog.
+</p>
+<p>
+  Ensure that the device selected is "SSL Nucleus". The dialog should
+  show a single numerical selector control below it, defining the
+  ipMIDI port number to use (it should almost always be left at the
+  default value of 21928).
+</p>
+<p>
+  Communication is automatically established with the Nucleus and you
+  need do nothing more.
+</p>
+<p>
+  If this does not work, then make sure your network cables are
+  properly connected, and that you are <strong>not</strong> running
+  other ipMIDI software on the computer.
+</p>
+
+<h3>Connecting via 3rd party ipMIDI support</h3>
+
+<p class="alert alert-info">
+  This is usable only on computers with 3rd party ipMIDI
+  driver software installed and configured for (at least) 2 ports.
+</p>
+
+<p>
+  Open <code>Preferences > Control Surfaces</code>. Ensure that the
+  Mackie protocol is enabled, then double-click on it to open the
+  Mackie Control setup dialog.
+</p>
+<p>
+  Ensure that the device selected is "SSL Nucleus (via platform MIDI)". The dialog should
+  show four combo/dropdown selectors, labelled (respectively):
+</p>
+  <ul>
+    <li><code>Main Surface receives via</code></li>
+    <li><code>Main Surface sends via</code></li>
+    <li><code>1st extender receives via</code></li>
+    <li><code>1st extender sends via</code></li>
+  </ul>
+<p>
+  You should choose "ipMIDI port 1", "ipMIDI port 1", "ipMIDI port 2"
+  and "ipMIDI port 2" for each of the 4 combo/dropdown selectors. 
+</p>
+<p>
+  Communication should be automatically established with the Nucleus.
+</p>
+<p>
+  If this does not work, then make sure your network cables are
+  properly connected, and that you are running the approprate ipMIDI
+  driver and have configured it for 2 (or more) ports.
+</p>
+
+<h2><a name="design">Nucleus Design Discussion</a></h2>
+
+<p>
+  You might be reading this part of the manual seeking some guidance
+  on whether the Nucleus would make a suitable control surface for
+  your workflows. We don't want to try to answer that question
+  definitively, since the real answer depends on the very specific
+  details of your workflow and situation, but we would like to point
+  out a number of design features of the Nucleus that might change
+  your opinion.
+</p>
+
+<h3>Cons</h3>
+<dl>
+  <dt>No Master Faster</dt>
+  <dd>It is not possible to control the level of the Master bus or
+  Monitor section. Really don't know what SSL was thinking here.</dd>
+  <dt>No dedicated rec-enable buttons</dt>
+  <dd>You have to press the "Rec" button and convert the per-strip
+    "Select" buttons into rec-enables</dd>
+  <dt>No dedicated automation buttons</dt>
+  <dd>You have to press the "Auto" button and convert the first 4
+  vpots into 4 automation-related buttons, losing your current view
+    of the session.</dd>
+  <dt>No buttons with Mackie-defined "Marker" functionality</dt>
+  <dd>Mackie's design intentions for the interoperation of the
+    Marker, rewind and ffwd buttons requires profile editing in order
+    to function properly.
+  </dd>
+  <dt>No "Dyn" button</dt>
+  <dd>This is hard to assign in an edited profile. To be fair, other
+    Mackie Control devices also lack this button.
+  </dd>
+</dl>
+
+<h3>Pros</h3>
+<dl>
+  <dt>Single cable connectivity</dt>
+  <dd>No need for multiple MIDI cables to get 16 faders</dd>
+  <dt>Broadcast connectivity</dt>
+  <dd>Connecting to multiple computers does not require recabling</dd>
+  <dt>16 faders from a single box</dt>
+  <dd>No need to figure out how to keep extenders together</dd>
+  <dt>Meters separated from displays</dt>
+  <dd>Contrast with the Mackie Control Universal Pro, where meters
+    interfere with the display
+  </dd>
+  <dt>DAW profiles</dt>
+  <dd>Easy to flip profiles for use by different DAWs.</dd>
+</dl>
+
+
+<h3>Ambiguous</h3>
+<dl>
+  <dt>Ability to make buttons generate USB keyboard events</dt>
+  <dd>The extent to which this is useful reflects the target DAWs
+    inability to manage all of its functionality via Mackie Control
+  </dd>
+  <dt>Sophisticated "profile" editing</dt>
+  <dd>It is nice to be able to reassign the functionality of most
+    buttons, but this is only necessary because of the relatively few
+    global buttons on the surface.
+  </dd>
+  <dt>Builtin analog signal path</dt>
+  <dd>SSL clearly expects users to route audio back from their
+  computer via the Nucleus' own 2 channel output path, and maybe even
+  use the input path as well. They take up a significant amount of
+  surface space with the controls for this signal path, space that
+  could have been used for a master fader or more Mackie Control
+  buttons. The USB audio device requires a proprietary driver, so
+  Linux users can't use this, and OS X/Windows users will have to
+  install a device driver (very odd for a USB audio device these
+  days). The analog path also no doubt adds notable cost to the
+  Nucleus. There's nothing wrong with this feature for users that
+  don't already have a working analog/digital signal path for their
+  computers. But who is going to spend $5000 on a Nucleus that
+  doesn't have this already?</dd>
+</dl>
diff --git a/include/working-with-encoders.html b/include/working-with-encoders.html
new file mode 100644 (file)
index 0000000..2a94968
--- /dev/null
@@ -0,0 +1,57 @@
+---
+layout: default
+title: Working With Encoders in Ardour
+menu_title: Working With Encoders
+---
+
+<p>
+  Encoders are showing up more frequently on controllers. However, they use
+  the same MIDI events as Continuous Controllers and they have no standard
+  way of sending that information as MIDI events. Ardour 4.2 has implemented
+  4 of the more common ways of sending encoder information.
+</p>
+<p>
+  Encoders that send the same continuous values as a pot would are not
+  discussed here as they are already supported by <code>ctl</code>.
+</p>
+<P>
+  Encoders as this page talks about them send direction and offset that the
+  DAW will add to or subtract from the current value.
+</p>
+<p>
+  The 4 kinds of encoder supported are:
+</p>
+<ul>
+<li>
+  enc-r:  On the bcr/bcf2000 this is called "Relative Signed Bit". The most
+  significant bit sets positive and the lower 6 signifcant bits are the
+  offset.
+</li>
+<li>
+  enc-l: The bcr2000 calls this "Relative Signed Bit 2". The most
+  significant bit sets negative and the lower 6 signifcant bits are the
+  offset. If you are using one of these two and the values are right but
+  reversed, use the other. This one is the one the Mackie Control Protocol
+  uses.
+</li>
+<li>
+  enc-2: The bcr2000 calls this one "Relative 2s Complement". Positive
+  offsets are sent as normal from 1 to 64 and negative offsets are sent as
+  2s complement negative numbers.
+</li>
+<li>
+  enc-b: The bcr2000 calls this one "Relative Binary Offset". Positive
+  offsets are sent as offset plus 64 and negative offsets are sent as 64
+  minus offset.
+</li>
+</ul>
+<p>
+  If the wrong one is chosen, either the positive or negative side will act
+  incorrectly. It is not really possible to auto detect which one the
+  controller is using. Trial and error is the only way if the specification
+  of the controller is not known.
+</p>
+<p>
+  Many controllers have more than one choice as well, check the manual for
+  the surface.
+</p>
diff --git a/include/working-with-extenders.html b/include/working-with-extenders.html
new file mode 100644 (file)
index 0000000..661d67d
--- /dev/null
@@ -0,0 +1,49 @@
+---
+layout: default
+title: Working With Extenders
+menu_title: Working With Extenders
+---
+
+<p>
+  Extenders will require a custom file as there are no combinations listed
+  at this time. The best way is to start with the mc.device file and copy it
+  to a new name such as xt+mc.device and then edit that file. It is best to
+  name the file with the order the devices are expected to be used in as
+  the position of the master device is specified in this file.
+</p>
+<p>
+  The two lines of interest are:
+<p>
+<pre>
+ &lt;Extenders value="0"/&gt;
+ &lt;MasterPosition value="0"/&gt;
+</pre>
+<p>
+  Add these two lines if they are not present. The <code>Extenders</code>
+  value is the number of extenders used and should not include the master in
+  that number.
+</p>
+<p>
+  When an <code>Extenders</code> value of greater than 0 is used, extra midi
+  ports will appear for the extenders to be connected to. The MIDI ports
+  for the controllers will be named <code>mackie control #1</code>,
+  <code>mackie control #2</code> and up. The numbers will go from left to
+  right. That is, from lowest number channel to highest.
+</p>
+<p>
+  The <code>MasterPosition</code> value is the port number the master unit
+  (with the master fader) is connected to. So if there are three surfaces,
+  <code>&lt;MasterPosition value="1"/&gt;</code> will expect the master on
+  the left, <code>&lt;MasterPosition value="2"/&gt;</code> would be master
+  in the middle and <code>&lt;MasterPosition value="3"/&gt;</code> would be
+  master on the right. So the position matches the port name.
+</p>
+<p class="note">
+  The default value of <code>&lt;MasterPosition value="0"/&gt;</code> has
+  the same effect as <code>&lt;MasterPosition value="1"/&gt;</code>.
+</p>
+<p>
+  If the <code>MasterPosition</code> value does not properly match the
+  physcal position and MIDI port, the master fader and global controls will
+  not work. The master unit will act like an extender.
+</p>
index b55c71d3981b61bf3eb2f0f82a3928e82958ed41..5b830fa0c75807a5972ddb7bfc25df6334b79663 100644 (file)
@@ -1083,11 +1083,7 @@ part: subchapter
   the <kbd class="menu">Session &gt; New...</kbd> dialog and the <kbd class="menu">Audio/MIDI Setup</kbd> dialog. See <a href="/working-with-sessions/new-session-dialog/">New/Open Session Dialog</a> for a description of those dialogs.
 </p>
 
----
-title: Starting Ardour From the Command Line (Linux)
-menu_title: Starting from Linux Cmdline
-part: subchapter
----
+<h2>Starting Ardour From the Command Line (Linux)</h2>
 
 <p>
   Like (almost) any other program on Linux, Ardour can be started on the
@@ -1108,8 +1104,6 @@ part: subchapter
 </p>
 <kbd class="cmd lin">ardour5 -N <em>/path/to/session</em></kbd>
 
-<h3>Other Command Line Options</h3>
-
 
 ---
 title: Keyboard and Mouse Shortcuts
@@ -1838,7 +1832,7 @@ part: subchapter
 
 
 ---
-title: System Configuration
+title: Ardour Configuration
 part: part
 ---
 
@@ -4015,2994 +4009,275 @@ part: subchapter
 
 
 ---
-title: Peripherals
+title: Configuring MIDI
 part: chapter
 ---
 
 
 ---
-title: Controlling Ardour with OSC
-include: controlling-ardour-with-osc.html
-exclude: yes
+title: Using External MIDI Devices
 part: subchapter
 ---
 
----
-title: Controlling Ardour with OSC (Ardour 4.7 and Prior)
-include: controlling-ardour-with-osc-4.7-and-prior.html
-exclude: yes
-part: subchapter
----
+<p class="fixme">Add content</p>
+
 
 ---
-title: OSC Feedback With Ardour
+title: Setting Up MIDI
 part: subchapter
 ---
 
+<h2>What Can Ardour Do With MIDI?</h2>
 <p>
-  Feedback from the Ardour to the the control surface is very useful for
-  a number of things. Motor faders need to know where the the track
-  they have been attached to is at before they were assigned otherwise
-  the DAW fader will jump to where the controller fader is. Likewise,
-  the buttons on each strip need to know what their value is so they can
-  light their LED correctly. Transport controls should let you know if
-  they are active too. This is what feedback is all about.
+  <dfn><abbr title="Musical Instrument Digital
+  Interface">MIDI</abbr></dfn> is a way to describe musical
+  performances and to control music hardware and software.
 </p>
-
-<p>
-  Ardour does feedback by sending the same path back that is used to
-  control the same function. As such any controls that have feedback
-  have a parameter that is the value of the control or it's state
-  (on or off). In the case of OSC paths listed on the main OSC page
-  as having no parameter, if they have feedback, they will also work
-  with a 1 for button press and 0 for button release. This is because
-  many OSC controllers will only use exactly the same path for feedback
-  as for control. For example:
+<p>Ardour can import and record MIDI data, and perform a variety of
+  editing operations on it. Furthermore, MIDI can be used to control
+  various functions of Ardour.
 </p>
 
-<dl class="bindings">
-  <dt><kbd class="osc">/transport_stop</kbd></dt>
-  <dd></dd>
-</dl>
-
-<p>can be used also in the form:</p>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/transport_stop <em>press</em></kbd></dt>
-  <dd>where <em>press</em> is an int/bool indicating if the button is pressed or not.</dd>
-</dl>
-
+<h2>MIDI Handling Frameworks</h2>
 <p>
-  The feedback does not have the same meaning as the control message.
-  Where the button release sent to Ardour will be ignored and has no
-  meaning. Both states have meaning in feedback to the controller.
-  The feedback will be:
+  MIDI input and output for Ardour are handled by the same "engine"
+  that handles audio input and output. Up to release 3.5, that means
+  that all MIDI I/O takes place via JACK. JACK itself uses the
+  native MIDI support of the operating system to receive and send
+  MIDI data. The native MIDI support  provides device drivers for MIDI
+  hardware and libraries needed by software applications that want to
+  work with MIDI.
 </p>
 
-<dl class="bindings">
-  <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is an int/bool indicating if the transport is stopped or not.</dd>
+<dl>
+<dt>OS X</dt>
+<dd>  <dfn>CoreMIDI</dfn> is the standard MIDI framework on OSX systems.
+</dd>
+<dt>Linux</dt>
+<dd>
+  <dfn><abbr title="Advanced Linux Sound API">ALSA</abbr> MIDI</dfn>
+  is the standard MIDI framework on Linux systems.
+</dd>
 </dl>
-<p>
-  With feedback turned on, OSC control commands that try to change a
-  control that does not exist will get feedback that resets that control
-  to off. For example, sending a /strip/recenable to a buss will not work
-  and Ardour will try to turn the controller LED off in that case. Also
-  note that Pan operation may be limited by pan width in some cases.
-  That is with pan width at 100% (or -100%) there is no pan position
-  movement available.
-</p>
-<p>
-  It may come as a surprise, but feedback often generates more network
-  traffic than control itself does. Some things are more obvious like
-  head position or meters. But even a simple button push like transport
-  start sends not only a signal to turn on the play LED, but also one to
-  turn off the stop LED, the Rewind LED, the Fast Forward LED and the
-  Loop LED. That is still minor, think instead of a surface refresh
-  such as happens when the surface is first connected and then most of
-  that happens every time the fader strips are banked. This is why
-  feedback is enabled in sections so that as little feedback as is
-  actually needed is sent. This is also a consideration if the surface
-  is connected via wifi.
-</p>
-<h2>List of OSC feedback messages</h2>
 
-<h3>Feedback only</h3>
-<p>
-  These messages are feedback only. They are sent as status from Ardour
-  and some of them may be enabled separately from other feedback. See:
-  <a href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
-  Calculating Feedback and Strip-types Values.</a>
-</p>
 <p class="note">
-  See strip section below for info about ssid and wrapping it into the
-  path. Also /master and /monitor support what the /strip does.
+  On Linux systems, <dfn>QJackCtl</dfn> control software displays ALSA MIDI
+  ports under its "ALSA" tab (it does not currently display CoreMIDI
+  ports).  By contrast, JACK MIDI ports show up under
+  the <kbd class="menu">MIDI</kbd> tab in QJackCtl.
 </p>
+
+<h2>JACK MIDI Configuration</h2>
 <p>
-  In the case where Gainmode is set to position, the track name will
-  show the dB value while values are changing.
+By default, JACK will <strong>not</strong> automatically detect and use existing MIDI
+ports on your system. You must choose one of several ways
+of <dfn>bridging</dfn> between the native MIDI frameworks
+(e.g. CoreMIDI or ALSA) and JACK MIDI, as described in the sections
+below.
 </p>
-<dl class="bindings">
-  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
-  <dd>where <em>track_name</em> is a string representing the name of the track</dd>
-  <dt><kbd class="osc">/session_name <em>session_name</em></kbd></dt>
-  <dd>where <em>session_name</em> is a string representing the name of the session</dd>
-  <dt><kbd class="osc">/strip/meter <em>ssid</em> <em>meter</em></kbd></dt>
-  <dd>where <em>meter</em> is a value repesenting the current audio level.
-  (the exact math used is determined by the feedback bits set)</dd>
-  <dt><kbd class="osc">/strip/signal <em>ssid</em> <em>signal</em></kbd></dt>
-  <dd>where <em>signal</em> is a float indicating the instantaneous
-  audio level is -40dB or higher.</dd>
-  <dt><kbd class="osc">/position/smpte <em>time</em></kbd></dt>
-  <dd>where <em>time</em> is a string with the current play head time. Seconds as per smpte.</dd>
-  <dt><kbd class="osc">/position/bbt <em>beat</em></kbd></dt>
-  <dd>where <em>beat</em> is a string with the current play head bar/beat.</dd>
-  <dt><kbd class="osc">/position/time <em>time</em></kbd></dt>
-  <dd>where <em>time</em> is a string with the current play head time. Seconds are in milliseconds</dd>
-  <dt><kbd class="osc">/position/samples <em>samples</em></kbd></dt>
-  <dd>where <em>samples</em> is a string with the current play head position in samples.</dd>
-  <dt><kbd class="osc">/heartbeat <em>LED</em></kbd></dt>
-  <dd>where <em>LED</em> is a float that cycles 1/0 at 1 second intervals.</dd>
-  <dt><kbd class="osc">/record_tally <em>state</em></kbd></dt>
-  <dd>Some record enable is true or "ready to record". For a "Recording" sign at studio door.</dd>
-</dl>
 
-<h3>Transport Control</h3>
-<dl class="bindings">
-  <dt><kbd class="osc">/transport_stop <em>state</em></kbd></dt>
-  <dd><em>state</em> is true when transport is stopped</dd>
-  <dt><kbd class="osc">/transport_play <em>state</em></kbd></dt>
-  <dd><em>state</em> is true when transport speed is 1.0</dd>
-  <dt><kbd class="osc">/ffwd <em>state</em></kbd></dt>
-  <dd><em>state</em> is true when transport is moving forward but not at speed 1.0</dd>
-  <dt><kbd class="osc">/rewind <em>state</em></kbd></dt>
-  <dd><em>state</em> is true when transport speed is less than 0.0</dd>
-  <dt><kbd class="osc">/loop_toggle <em>state</em></kbd></dt>
-  <dd><em>state</em> is true when loop mode is true</dd>
-  <dt><kbd class="osc">/cancel_all_solos <em>state</em></kbd></dt>
-  <dd>Where <em>state</em> true indicates there are active solos that can be canceled.</dd>
-</dl>
+---
+title: MIDI on Linux
+part: subchapter
+---
 
-<h3>Recording control</h3>
-<dl class="bindings">
-  <!--dt><kbd class="osc">/toggle_punch_in</kbd></dt>
-  <dd></dd>
-  <dt><kbd class="osc">/toggle_punch_out</kbd></dt>
-  <dd></dd-->
-  <dt><kbd class="osc">/rec_enable_toggle <em>state</em></kbd></dt>
-  <dd>Master record enabled.</dd>
-</dl>
+<p>The right approach for using MIDI on Linux depends on which version of
+JACK you use. The world divides into:</p>
 
-<h3>Master and monitor strips</h3>
-<p>
-  Master and monitor strips are similar to track strips but do not use
-  the SSID. Rather they use their name as part of the path:
-</p>
-<dl class="bindings">
-  <dt><kbd class="osc">/master/gain <em>dB</em></kbd></dt>
-  <dd>where <em>dB</em> is a float ranging from -193 to +6 representing the actual gain of master in dB</dd>
-  <dt><kbd class="osc">/master/fader  <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
-  <dt><kbd class="osc">/master/trimdB <em>dB</em></kbd></dt>
-  <dd>where <em>dB</em> is a float ranging from -20 to +20 representing the actual trim for master in dB</dd>
-  <dt><kbd class="osc">/master/pan_stereo_position <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position for master</dd>
-  <dt><kbd class="osc">/master/mute  <em>yn</em></kbd></dt>
-  <dd>where <em>yn</em> is a bool/int representing the actual mute state of the Master strip</dd>
-  <dt><kbd class="osc">/monitor/gain <em>dB</em></kbd></dt>
-  <dd>where <em>dB</em> is a float ranging from -193 to 6 representing the actual gain of monitor in dB</dd>
-  <dt><kbd class="osc">/monitor/fader  <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is an int ranging from 0 to 1023 representing the fader control position</dd>
+<dl>
+<dt>Systems using JACK 1, versions 0.124 or later</dt>
+<dd>On these systems, just start JACK with the <code>-X alsa_midi</code> server argument. To support legacy control applications, you can also use the <code>-X seq</code> argument to the ALSA backend of JACK and get the exact same results.</dd>
+<dt>All others</dt>
+<dd>Use a2jmidid to act as a bridge between ALSA MIDI and JACK. Do not use the <code>-X seq</code> or <code>-X raw</code> arguments&mdash;the timing and performance of these options is not acceptable.
+</dd>
 </dl>
 
-<h3>Track specific operations</h3>
-<p>
-  For each of the following, <em>ssid</em> is the surface strip ID for the track
-</p>
-<p class="note">
-  Some Surfaces (many Android applets) are not able to deal with more
-  than one parameter in a command. However, the two parameter commands
-  below can also be sent as /strip/command/ssid param. Feedback can be
-  set to match this with the /set_surface/feedback <em>state</em>
-  command. See <a
-  href="/using-control-surfaces/controlling-ardour-with-osc/calculating-feedback-and-strip-types-values/">
-  Calculating Feedback and Strip-types Values.</a>
-</p>
+<h2>a2jmidid</h2>
 
-<dl class="bindings">
-  <dt><kbd class="osc">/bank_up <em>LED</em></kbd></dt>
-  <dd>where <em>LED</em> is a bool that indicates another bank_up operation is possible.</dd>
-  <dt><kbd class="osc">/bank_down <em>LED</em></kbd></dt>
-  <dd>where <em>LED</em> is a bool that indicates another bank_down operation is possible.</dd>
-  <dt><kbd class="osc">/strip/name <em>ssid</em> <em>track_name</em></kbd></dt>
-  <dd>where <em>track_name</em> is a string representing the name of the track
-  (note there is no coresponding command to set the track name)</dd>
-  <dt><kbd class="osc">/strip/mute <em>ssid</em> <em>mute_st</em></kbd></dt>
-  <dd>where <em>mute_st</em> is a bool/int representing the actual mute state of the track</dd>
-  <dt><kbd class="osc">/strip/solo <em>ssid</em> <em>solo_st</em></kbd></dt>
-  <dd>where <em>solo_st</em> is a bool/int representing the actual solo state of the track</dd>
-  <dt><kbd class="osc">/strip/monitor_input <em>ssid</em> <em>monitor_st</em></kbd></dt>
-  <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor input</dd>
-  <dt><kbd class="osc">/strip/monitor_disk <em>ssid</em> <em>monitor_st</em></kbd></dt>
-  <dd>where <em>monitor_st</em> is a bool/int. True/1 meaning the track is force to monitor disk,
-  where both disk and input are false/0, auto monitoring is used.</dd>
-  <dt><kbd class="osc">/strip/recenable <em>ssid</em> <em>rec_st</em></kbd></dt>
-  <dd>where <em>rec_st</em> is a bool/int representing the actual rec state of the track</dd>
-  <dt><kbd class="osc">/strip/record_safe <em>ssid</em> <em>rec_st</em></kbd></dt>
-  <dd>where <em>rec_st</em> is a bool/int representing the actual record safe state of the track</dd>
-  <dt><kbd class="osc">/strip/gain <em>ssid</em> <em>gain</em></kbd></dt>
-  <dd>where <em>gain</em> is a float ranging from -193 to 6 representing the actual gain of the track in dB.</dd>
-  <dt><kbd class="osc">/strip/fader <em>ssid</em>  <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is an float ranging from 0 to 1 representing the actual fader position of the track.</dd>
-  <dt><kbd class="osc">/strip/trimdB <em>ssid</em>  <em>trim_db</em></kbd></dt>
-  <dd>where <em>trim_db</em> is a float ranging from -20 to 20 representing the actual trim of the track in dB.</dd>
-  <dt><kbd class="osc">/strip/pan_stereo_position <em>ssid</em> <em>position</em></kbd></dt>
-  <dd>where <em>position</em> is a float ranging from 0 to 1 representing the actual pan position of the track</dd>
-</dl>
-<h3>Selection Operations</h3>
-<p>
-  Selection feedback is the same as for strips, only the path changes
-  from <em>/strip</em> to <em>/select</em> and there is no <em>ssid</em>.
-  there are some extra feedback and commands that will be listed here.
-</p>
-<dl class="bindings">
-  <dt><kbd class="osc">/select/n_inputs <em>number</em></kbd></dt>
-  <dd>where <em>number</em> number of inputs for this strip</dd>
-  <dt><kbd class="osc">/select/n_outputs <em>number</em></kbd></dt>
-  <dd>where <em>number</em> number of outputs for this strip</dd>
-  <dt><kbd class="osc">/select/comment <em>text</em></kbd></dt>
-  <dd>where <em>text</em> is the strip comment</dd>
-  <dt><kbd class="osc">/select/solo_iso <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the Actual solo isolate state of the track</dd>
-  <dt><kbd class="osc">/select/solo_safe <em>state</em></kbd></dt>
-  <dd>where <em>state</em> is a bool/int representing the actual solo safe/lock state of the track</dd>
-  <dt><kbd class="osc">/select/polarity <em>invert</em></kbd></dt>
-  <dd>where <em>invert</em> is a bool/int representing the actual polarity of the track</dd>
-  <dt><kbd class="osc">/select/pan_stereo_width <em>width</em></kbd></dt>
-  <dd>where <em>width</em> is a float ranging from 0 to 1 representing the actual pan width of the track</dd>
-  <dt><kbd class="osc">/select/send_gain", <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em>is a float
-  ranging from -193 to +6 representing the actual gain in dB for the send</dd>
-  <dt><kbd class="osc">/select/send_fader", <em>sendid</em> <em>send_gain</em></kbd></dt>
-  <dd>where <em>sendid</em> = nth_send, <em>send_gain</em>is a float
-  ranging from 0 to 1 representing the actual position for the send as a fader</dd>
-  <dt><kbd class="osc">/select/send_name <em>sendid</em> <em>send_name</em></kbd></dt>
-  <dd>where <em>send_name</em> is a string representing the name of the buss
-  this send goes to.</dd>
-</dl>
-<h3>Menu actions</h3>
 <p>
-  Every single menu item in Ardour's GUI is accessible via OSC. However,
-  there is no provision for returning the state of anything set this way.
-  This is not a bad thing as most menu items either do not have an on/off
-  state or that state is quite visible. Binding that affect other parameters
-  that OSC does track will show on those OSC controls. Examples of this
-  might be track record enable for tracks 1 to 32, play or stop.
+  <dfn>a2jmidid</dfn> is an application that bridges between the system
+  <abbr title="Musical Instrument Digital Interface">MIDI</abbr> ports and
+  <abbr title="JACK Audio Connection Kit">JACK</abbr>.
 </p>
 
----
-title: Calculating Feedback and Strip-types Values
-part: subchapter
----
-
 <p>
-  <em>/set_surface</em> has two values the user needs to calculate before
-  use. In general these will not be calculated at run time, but
-  beforehand. There may be more than one button with different values
-  to turn various kinds of feedback on or off or to determine which
-  kinds of strips are currently viewed/controlled.
+  First you should make sure that there is no ALSA sequencer support enabled
+  in JACK. To do that open QJackCtl's <kbd class="menu">Setup</kbd> window.
 </p>
 
 <p>
-  Both ,<em>feedback</em> and <em>strip-types</em> use bitsets to keep
-  track what they are doing. Any number in a computer is made out of
-  bits that are on or off, but we represent them as normal base 10
-  numbers. Any one bit turned on will add a unique value to the
-  number as a whole. So for each kind of feedback or strip type
-  to be used, that number should be added to the total.
+  Set <kbd class="menu">Settings &gt; MIDI Driver</kbd> to <kbd
+  class="input">none</kbd>.
+  Then uncheck the <kbd class="optoff">Misc &gt; Enable ALSA Sequencer
+  support</kbd> option.<br />
+  Now it's time to restart your jack server before going on.
 </p>
 
-<h3>strip_types</h3>
+<h3>Check for a2jmidid availability</h3>
 
 <p>
-  strip_types is an integer made up of bits. The easy way to
-  deal with this is to think of strip_types items being worth a number and
-  then adding all those numbers together for a value to send.
-  Strip Types will determine What kind of strips will be included in
-  bank. This would include: Audio, MIDI, busses, VCAs, Master, Monitor
-  and hidden or selected strips.
+  First, check whether a2jmidid is already installed in your system. After
+  starting your JACK server, go to the command line and type
 </p>
 
-<ul>
-       <li>
-               1       - AudioTracks.
-       </li>
-       <li>
-               2       - MidiTracks.
-       </li>
-       <li>
-               4       - AudioBuses.
-       </li>
-       <li>
-               8       - MidiBuses.
-       </li>
-       <li>
-               16      - VCAs.
-       </li>
-       <li>
-               32      - Master.
-       </li>
-       <li>
-               64      - Monitor.
-       </li>
-       <li>
-               128     - Audio Aux.
-       </li>
-       <li>
-               256     - Selected.
-       </li>
-       <li>
-               512     - Hidden.
-       </li>
-  </ul>
-<p class="note">
-  Selected and Hidden bits are normally not needed as Ardour defaults to
-  showing Selected strips and not showing Hidden strips. The purpose of
-  these two flags is to allow showing only Selected strips or only
-  Hidden strips. Using Hidden with other flags will allow Hidden strips
-  to show inline with other strips.
-</p>
-<p>
-  Some handy numbers to use might be: 15 (all tracks and buses), 31
-  (add VCAs to that). Master or Monitor strips are generally not useful
-  on a surface that has dedicated controls for these strips as there are
-  /master* and /monitor* commands already. However, on a surface with
-  just a bank of fader strips, adding master or monitor would allow
-  access to them within the banks. Selected would be useful for working
-  on a group or a set of user selected strips. Hidden shows strips the
-  GUI has hidden.
-</p>
-<p class-"note">
-  Audio Aux? say what? I am sure most people will have noticed that they
-  can find no <em>Aux</em> strips in the Ardour mixer. There are none.
-  There are buses that can be used a number of ways. From analog days,
-  in OSC a bus is something that gets used as a sub mix before ending up
-  going to Master. An auxiliary bus is used like a separate mixer and
-  it's output goes outside the program or computer to be used as:
-  a monitor mix, a back up recording, or what have you. In OSC where
-  controller strips may be limited, it may be useful not to use up a
-  strip for an aux that is not really a part of the mix. It is also
-  useful to get a list of only aux buses if the control surface is a
-  phone used to provide talent monitor mix control on stage. Each
-  performer would be able to mix their own monitor. The user is free
-  to enable both buses and auxes if they would prefer.
-</p>
-
-<h3>feedback</h3>
-<p>Feedback is an integer made up of bits. The easy way to
-  deal with this is to think of feedback items being worth a number and
-  then adding all those numbers together for a value to send.
-</p>
-  <ul>
-       <li>
-               1 - Button status for strips.
-       </li>
-       <li>
-               2 - Variable control values for strips.
-       </li>
-       <li>
-               4 - Send SSID as path extension.
-       </li>
-       <li>
-               8 - heartbeat to surface.
-       </li>
-       <li>
-               16 - Enable master section feedback.
-       </li>
-       <li>
-               32 - Send Bar and Beat.
-       </li>
-       <li>
-               64 - Send timecode.
-       </li>
-       <li>
-               128 - Send meter as dB (-193 to +6) or 0 to 1 depending on gainmode
-       </li>
-       <li>
-               256 - Send meter a 16 bit value where each bit is a level
-               and all bits of lower level are on. For use in a LED strip. This
-               will not work if the above option is turned on.
-       </li>
-       <li>
-               512 - Send signal present, true if level is higher than -40dB
-       </li>
-       <li>
-               1024 - Send position in samples
-       </li>
-       <li>
-               2048 - Send position in time, hours, minutes, seconds and milliseconds
-       </li>
-       <li>
-               8192 - Turn on extra select channel feedback beyond what a /strip supports
-       </li>
-  </ul>
+<kbd class="cmd lin">a2jmidid -e</kbd>
+
 <p>
-  So using a value of 19 would turn on feedback for strip and master
-  controls, but leave meters, timecode and bar/beat feedback off.
+  If a2jmidid does not exist, install it with the software manager of your
+  Linux distribution and try again.
 </p>
 
----
-title: Parameter Types in OSC
-part: subchapter
----
+<h2>Check available MIDI ports</h2>
 
 <p>
-  An OSC message is laid out in this form:
+  If you have correctly configured JACK for MIDI, then your MIDI ports should appear in
+  qjackctl under <kbd class="menu">Connections &gt; MIDI </kbd>.
 </p>
 
-<kbd>
-       /path/of/command type parameter
-</kbd>
+<h3>Making it automatic</h3>
 
 <p>
-       The type is there to indicate what the parameter is. This gives
-       the idea that parameter types are quite strict and if the command
-       requires an Integer <em>"i"</em> then the controller had better send it.
-       However, the checking of the parameter type is left to the receiving
-       software.
+Once you've verified that the ports appear in JACK as expected, you
+can make this happen whenever you start JACK.
 </p>
 
-<p>
-       What this means in practical terms is that the surface can get away
-       with sending the wrong type of parameter. There are some places
-       where that just doesn't make sense. For example, a parameter that
-       is specified as a Float with a range of 0 to 1, could be sent as
-       an Integer, but would only have full scale and minimum value with
-       nothing in between. This is not much use for a fader, though ok for
-       a button.
+<p>If you use a newer version of JACK 1, just make sure the -X
+alsa_midi or -X seq options are enabled for whatever technique you use
+to start JACK.
 </p>
 
 <p>
-       There are a number of OSC controllers based on iOS and Android
-       tablets that only send or receive parameters as floats or text.
-       These controllers should have no problem sending bool or int values
-       as floats. Ardour will interpret the values as required.
+For other versions of JACK,
+add <kbd class="input">a2jmidid -e &amp;</kbd> as an "after start-up" script
+in the <kbd class="menu">Setup &gt; Options</kbd> tab of QJackCtl, so
+that it is started automatically whenever you start JACK.
 </p>
 
+<p class="fixme">Is this true anymore in Ardour 5? This section may have been relevant in Ardour 3, but it might not be relevant anymore.</p>
+
 ---
-title: Selection/Feedback Expansion Considerations in OSC
+title: MIDI on OS X
 part: subchapter
 ---
 
 <p>
-  Ardour does not send every possible feedback value for each channel.
-  It does send expanded information on the selected channel. There are
-  also extra commands for the selected strip. All the feedback and
-  select commands have their own path <em>/select</em>.
-  This means that for the selected channel the surface does not have to
-  keep track of the strip ID. The /select strip will follow the
-  "current mixer strip" in the GUI editor window.
-</p>
-<p>
-  There are two major uses for this:
-  <ol>
-       <li>Single strip control surfaces. Using
-         <em>/access_action Editor/select-next-route</em> or
-         <em>/access_action Editor/select-prev-route</em>
-         to step through the mixer strips.</li>
-       <li>Using a "Super strip" section of knobs to control parts
-       of the strip that are changed less often such as polarity, sends or
-       plugin parameters.</li>
-  </ol>
-</p>
-<p>
-  Selection in Ardour's OSC implementation are complicated by the
-  possibility of using more than one OSC controller at the same time.
-  User "A" may select strip 4 and use a selected controller to make
-  changes to that strip. User "B" may subsequently select strip 7 to
-  make changes on. This leaves user "A" making changes to strip 7
-  which they did not choose.
+  In order for CoreMIDI to work with Jack MIDI, a CoreMIDI-to-JACK-MIDI
+  <dfn>bridge</dfn>
+  is required. This feature is available on versions equal to or great than
+  version 0.89 of JackOSX.
 </p>
 
-<p>
-  For this reason Ardour offers local expansion aside from the GUI
-  selection. Local expansion only affects the one OSC controller. GUI
-  selection is global and affects all controllers using GUI selection
-  as well as the GUI.
-</p>
+<h2>Routing MIDI</h2>
 
-<p>
-  In general, in a one user situation where that one user may use either
-  the OSC surface or the GUI, using GUI based selection makes the most
-  sense. This is the default because this is the more common use.
-</p>
+<h3>Inside Ardour</h3>
 
 <p>
-  When there is more than one operator, then expansion only is the
-  mode of choice. It may make sense for one of the surfaces to
-  use GUI selection where the operator is also using the GUI for some
-  things. However, the set up should be carefully analyzed for the
-  possibility of selection confusions. Expansion should be
-  considered the <em>safe</em> option.
+  MIDI ports show up in Ardour's MIDI connection matrix in multiple
+  locations. Bridged CoreMIDI ports as well as JACK MIDI ports that have
+  been created by other software clients will show up under the "Other" tab.
+  Bridged CoreMIDI hardware ports show up under the "Hardware" tab.
 </p>
 
-<p>
-  It is always ok to use expansion on the surface even in a one
-  user scenario. This allows the user to use GUI and surface selection
-  for different uses.
-</p>
+<h3>External Applications</h3>
 
 <p>
-  It is also possible to use both if desired. /strip/select will ways
-  set the GUI select, but /strip/expand will set the select feedback
-  and commands locally without changing the GUI select. Another
-  /strip/expand or a /strip/select will override that expand command
-  and releasing the /strip/expand or /select/expand (setting it to 0 or
-  false) will set the /select set of commands/feedback back to whichever
-  strip the GUI has selected at that time. This could be used to switch
-  between the GUI select and the local expand to compare two strips
-  settings.
+  There are multiple options for connecting MIDI ports outside of Ardour.
 </p>
 
----
-title: Using the OSC Setup Dialog
-part: subchapter
----
+<ul>
+  <li><a href="http://www.snoize.com/MIDIMonitor/">MIDI Monitor</a> is a handy
+  tool for doing various MIDI-related tasks.</li>
+  <li><a href="http://notahat.com/midi_patchbay">MIDI Patchbay</a> lets you
+  connect ports and filters MIDI data.</li>
+</ul>
 
-<p>
-  Starting with Ardour 5.1 OSC has a graphic setup dialog. This dialog
-  can be accessed from Preferences->Control Surfaces. Select OSC and
-  click on the Show Protocol Settings.
-</p>
 
-<p>
-  The Ardour OSC dialog has three tabs. The main tab, the Strip Types
-  tab and the Feedback tab.
-</p>
 
-<p>
-  Many OSC devices get their IP from a DHCP making it difficult to set
-  an IP in Ardour's OSC settings. Therefore, most of the settings are
-  <em>default</em> settings. Values are set and the next OSC surface to
-  send a /set_surface* message to Ardour will use those settings. An OSC
-  surface that has previously sent a message to Ardour will retain the
-  settings it already had. The <em>Clear OSC Devices</em> will reset all
-  device settings. A <em>/refresh</em> message will both reset the
-  device settings as well as set that device to any new settings. The
-  Use of <em>/set_surface</em> will override all settings except
-  <em>Port Mode</em>.
-</p>
 
-<h2>Dialog settings</h2>
+---
+title: Ardour's Interface
+part: part
+---
 
-<h3>OSC setup tab</h3>
+
+---
+title: About Ardour's Interface
+part: chapter
+---
 
 <p>
-<img alt="the OSC configuration dialog"
-     src="/images/osc-dialog.png">
+  In Ardour, you work in two main windows: the <dfn>Editor</dfn> and the
+  <dfn>Mixer</dfn>.
 </p>
 
-<h4>Connection:</h4>
+<figure>
+  <img src="/images/global-editor-window-split.png" alt="Ardour's editor window">
+  <img style="margin-left:2em;" src="/images/global-mixer-window-split.png" alt="Ardour's mixer window">
+  <figcaption>
+  <ol class="multicol3">
+    <li>Main menu</li>
+    <li>Status bar</li>
+</ol><ol class="multicol3" start="3">
+    <li>Transport bar & Times</li>
+    <li>Mode switch</li>
+</ol><ol class="multicol3" start="5">
+    <li>The <dfn>Mixer</dfn> window</li>
+    <li>The <dfn>Editor</dfn> window</li>
+  </ol>
+  </figcaption>
+</figure>
 
 <p>
-  This field is informational only. It shows where Ardour will receive
-  OSC messages. The system Name and the Port are the most important parts.
+  Switching between the Editor and the Mixer windows done:
 </p>
 
-<h4>Port Mode:</h4>
+<ul>
+  <li>with the Mode Switch buttons (#4 in the screenshot) in the upper right</li>
+  <li>with the <kbd class="mod2">M</kbd> shortcut</li>
+  <li>with the menu <kbd class="menu">Window &gt; Editor <em>(or Mixer)</em> &gt; Show</kbd>.</li>
+</ul>
 
 <p>
-  This drop down allows the choice of Auto or Manual outbound port
-  setting. The default Auto port mode, will send OSC messages back to
-  the port messages from that surface are received from. This setting
-  allows two surfaces on the same IP to operate independently. However,
-  there are a number of OSC control surfaces that do not monitor the
-  same port they send from and in fact may change ports they send from
-  as well. Manual allows the outgoing port (the port the surface will
-  receive on, to be manually set. In Manual port mode only one control
-  surface per IP can work. Most phone or tablet OSC controllers like
-  touchOSC or Control need Manual port mode. More than one controller
-  can be used so long as each has it's own IP.
+  Both windows can be visible at the same time (eg. for a multi-monitor
+  setup) using <kbd class="menu">Window &gt; Editor <em>(or Mixer)</em> &gt; Detach</kbd> option in the same submenu.
 </p>
 
-<h4>Manual Port:</h4>
+<hr>
+
+<p class="fixme">Which of these two should be there? They seem to have the same content&hellip;</p>
 
 <p>
-  This is an Entry box for setting the outgoing port when in
-  Manual port mode.
+  In Ardour, you work in two main windows: the <dfn>Editor</dfn> and the <dfn>Mixer</dfn>. 
 </p>
 
-<h4>Bank Size:</h4>
+<figure>
+  <img src="/images/editor_split.png" alt="Ardour's mixer window">
+  <img src="/images/mixer_split.png" alt="Ardour's editor window">
+  <figcaption>
+  <ol class="multicol4">
+    <li>Main menu</li>
+    <li>Status bar</li>
+    <li>Transport bar & Times</li>
+</ol><ol class="multicol4" start="4">
+    <li>Mode switch</li>
+    <li>The <dfn>Editor</dfn> window</li>
+    <li>a track's mixer strip</li>
+</ol><ol class="multicol4" start="7">
+    <li>Editors List</li>
+    <li>The <dfn>Mixer</dfn> window</li>
+    <li>Favorite plugins</li>
+</ol><ol class="multicol4" start="10">
+    <li>Track list</li>
+    <li>Group list</li>
+    <li>Master strip</li>
+  </ol>
+  </figcaption>
+</figure>
 
 <p>
-  This sets the default bank size for the next surface to send a
-  <em>/set_surface/*</em> OSC message. Bank size 0 (the default) sets
-  no banking and allows controlling all strips included in strip_types
-  at once.
+  To switch between those windows, use the buttons (#4 Mode switch in the upper right), the shortcut <kbd class="mod2">M</kbd>, or the menu <kbd class="menu">Window > Editor <em>(or Mixer)</em> > Show</kbd>. Both windows can be visible at the same time (eg. for a multi-monitor setup) using <kbd class="menu">Detach</kbd> in the same menu.
 </p>
 
-<h4>Gain Mode:</h4>
-
-<p>
-  Sets the faders (and sends faders) feedback math to position where a
-  value between 0 and 1 represents the fader position of the same fader
-  in the mixer GUI or dB where the feedback from fader movement will be
-  returned as a dB value. When the Gain Mode is set to position, the
-  /*/name feedback for the channel will show dB values in text while the
-  fader is being adjusted and then return the the name text.
-</p>
-<h4>Debug:</h4>
-<p>
-  For debugging purposes this allows logging either good OSC messages
-  Ardour receives or invalid messages received or none.
-</p>
-<h4>Preset:</h4>
-<p>
-  Ardour now allows the use of preset settings. The default settings
-  used are the settings from the last session or the factory defaults
-  the first time OSC is enabled. As soon as any of these settings are
-  changed, the Preset will change to "User" and the new settings will be
-  save to the osc directory Ardour configuration directory as
-  <em>user.preset</em>. This preset file can be renamed for future use.
-  It is suggested to also change the name value inside to avoid confusion
-  in the preset listing. Ardour will ship with some of it's own presets
-  that go with some popular OSC control and map combinations.
-</p>
-<h4>Clear OSC Devices</h4>
-<p>
-  This button clears operating device profiles so that Ardour will reset
-  all devices settings to use the new defaults from changed settings. a
-  device may still override these new settings with the /set_surface set
-  of commands. The reason for setting defaults settings is that some OSC
-  controllers are not able to send more than one parameter at a time and
-  so having correct defaults allows one "Connect" button rather than 4.
-</p>
-<h3>Default Strip Types tab</h3>
-<p>
-<img alt="the Default Strip Types tab"
-     src="/images/osc-strip-types.png">
-</p>
-<p>
-  This allows selecting which of Ardour's mixer strips will be available
-  for control. The Factory default is all strips except master, monitor
-  and hidden strips. If it is desired to only see input tracks the
-  others can be deselected. It is also possible to change these settings
-  from the control surface. A set of buttons could select showing only
-  inputs or only buses. If a group is selected in the GUI then showing
-  only selected strips will show only that group. Showing hidden tracks
-  is handy for cases where a groups of tracks that grouped to a bus or
-  controlled by a VCA are hidden, but one of those tracks needs a tweak.
-</p>
-
-<h3>Default Feedback tab</h3>
-
-<p>
-<img alt="the Default Feedback tab"
-     src="/images/osc-feedbackdefault.png">
-</p>
-
-<p>
-  This allows setting up which controls provide feedback. The Factory
-  default is none. If the controller is unable to receive feedback, this
-  should be left blank. In the case of metering, Metering as a LED strip
-  only works if Metering as a Float is disabled.
-</p>
-
----
-title: Querying Ardour with OSC
-part: subchapter
----
-
-<p>
-  In order to make a custom controller that knows what strips Ardour
-  has, the controller needs to be able to query Ardour for that
-  information. These set of commands are for smarter control surfaces
-  That have the logic to figure out what to do with the information.
-  These are not of value for mapped controllers like touchOSC and
-  friends. The controller will need to send these queries to ardour
-  as often as it needs this information. It may well make sense to use
-  regular feedback for things that need to be updated often such as
-  position or metering.
-  Here are the commands used to query Ardour:
-</p>
-
-<dl class="bindings">
-  <dt><kbd class="osc">/strip/list</kbd></dt>
-  <dd>Ask for a list of strips</dd>
-  <dt><kbd class="osc">/strip/sends <em>ssid</em></kbd></dt>
-  <dd>Asks for a list of sends on the strip <em>ssid</em></dd>
-  <dt><kbd class="osc">/strip/receives <em>ssid</em></kbd></dt>
-  <dd>Asks for a list of tracks that have sends to the strip <em>ssid</em> points to</dd>
-  <dt><kbd class="osc">/strip/plugin/list <em>ssid</em></kbd></dt>
-  <dd>Asks for a list of plug-ins for strip <em>ssid.</em></dd>
-  <dt><kbd class="osc">/plugin/descriptor <em>ssid</em> <em>piid</em></kbd></dt>
-  <dd>Asks for a list of descriptors for plug-in <em>piid</em> on strip <em>ssid</em></dd>
-</dl>
-
-<h3>A list of strips</h3>
-
-<p>
-  <code>/strip/list</code> asks Ardour for a list of strips that the
-  current session has. Ardour replies with a message for each
-  strip with the following information:
-  <ul>
-    <li>Strip type</li>
-    <li>Strip name</li>
-    <li>Number of inputs</li>
-    <li>Number of outputs</li>
-    <li>Muted (bool)</li>
-    <li>Soloed (bool)</li>
-    <li>Ssid (strip number)</li>
-    <li>Record enabled (bool)</li>
-  </ul>
-  After all the strip messages have been sent, one final message is
-  sent with:
-  <ul>
-    <li>The text <code>end_route_list</code></li>
-    <li>The session frame rate</li>
-    <li>The last frame number of the session</li>
-  </ul>
-</p>
-<p class="note">A bus will not have a record enable and so a bus message
-  will have one less parameter than a track. It is the controllers
-  responsability to deal with this.
-</p>
-
-<h3>A list of sends</h3>
-<p>
-  <code>/strip/sends <em>ssid</em></code> asks Ardour for a list of
-  sends for strip number ssid. The reply is sent back to the
-  controller as one message with the following information:
-  <ul>
-    <li>Ssid that information is for</li>
-    <li>Each send's information:</li>
-    <ul>
-      <li>The send's target bus ssid</li>
-      <li>The send's target bus name</li>
-      <li>The send id for this strip</li>
-      <li>The send gain as a fader possition</li>
-      <li>The Send's enable state</li>
-    </ul>
-  </ul>
-</p>
-<p>
-  The controller can tell how many sends there are from the number of
-  parameters as each send has 5 parameters and there is one extra for
-  ssid.
-</p>
-
-<h3>A list if tracks that send audio to a bus</h3>
-<p>
-  <code>/strip/receives <em>ssid</em></code> will return a list of
-  tracks that have sends to the bus at the ssid. The reply will
-  contain the following information for each track conntected to this
-  bus:
-  <ul>
-    <li>The ssid of the track sending</li>
-    <li>The name of the sending track</li>
-    <li>The id of the send at that track</li>
-    <li>It's gain in fader possition</li>
-    <li>The send's enable state</li>
-  </ul>
-</p>
-
-<h3>A list of plug-ins for strip</h3>
-<p>
-  <code>/strip/plugin/list <em>ssid</em></code> will return a list of
-  plug-ins that strip ssid has. The reply will contain the following
-  information:
-  <ul>
-    <li>Ssid that information is for</li>
-    <li>Each plugin's information:</li>
-    <ul>
-      <li>The plug-in's id</li>
-      <li>The plug-in's name</li>
-    </ul>
-  </ul>
-</p>
-
-<h3>A list of a plug-in's parameters</h3>
-<p>
-  <code>/plugin/descriptor <em>ssid</em> <em>piid</em></code> will
-  return the plug-in parameters for ppid plug-in on the ssid strip. The
-  reply will contain the following information:
-  <ul>
-    <li>Ssid of the strip the plug-in is in</li>
-    <li>The plug-in id for the plug-in</li>
-    <li>The plug-in's name</li>
-    <li>Information about each parameter</li>
-    <ul>
-      <li>The parameter id</li>
-      <li>The parameter's name</li>
-      <li>A bitset of flags (see below)</li>
-      <li>Data type</li>
-      <li>Minimum value</li>
-      <li>Maximum value</li>
-      <li>The number of scale points</li>
-      <li>zero or more scale points of one value and one string each</li>
-      <li>The current parameter value</li>
-    </ul>
-  </ul>
-</p>
-
-<p>
-  The flag bitset above has been defined as (from lsb):
-  <ul>
-    <li>0 - enumeration</li>
-    <li>1 - integer step</li>
-    <li>2 - logarithmic</li>
-    <li>3 - max unbound</li>
-    <li>4 - min unbound</li>
-    <li>5 - sample rate dependent</li>
-    <li>6 - toggled</li>
-    <li>7 - controllable</li>
-  </ul>
-</p>
-
-<p>
-  While this seems complex, it is really not that bad. Minimum, maximum and value will in most cases give you all you need.
-</p>
-
----
-title: Devices using Mackie/Logic Control Protocol
-menu_title: Mackie/Logic Control Devices
-part: subchapter
----
-
-<p>
-  This will walk you through the process of configuring and using
-  a MIDI control surface with Ardour that uses the <dfn>Mackie Control
-  protocol</dfn> (MCP) or <dfn>Logic Control protocol</dfn>. Devices that
-  have been tested and are known to work include the SSL Nucleus, Mackie
-  Control Pro (plus extenders), Behringer devices in Mackie/Logic mode,
-  and Steinberg CMC devices.
-</p>
-
-<h2>Enabling Mackie Control in Ardour</h2>
-
-<p>
-  Navigate to <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces</kbd>.
-  Double-click on <kbd class="menu">Mackie Control</kbd> to see the setup dialog:
-</p>
-
-<img src="/images/missing.png" alt="Mackie Control Setup Dialog" />
-
-<p>
-  From the selector at the top, choose the type of device you are using.
-  (<a
-  href="/using-control-surfaces/devices-using-mackielogic-control-protocol/devices-not-listed/">
-  What to do if your device is not listed</a>).
-</p>
-
-<p>
-  Once your setup is complete, click "OK" to close the dialog. Now click
-  on the enable checkbox for "Mackie Control".
-</p>
-
-<h2>Connecting control surface and Ardour MIDI ports</h2>
-
-<p>
-  If you are using a device that uses ipMIDI, such as the SSL Nucleus, no
-  MIDI port connections are required&mdash;Ardour and your control
-  surface will be able to talk to each other automatically.
-</p>
-
-<p>
-  If you are using a device that uses normal MIDI (via a standard MIDI or
-  USB cable), you need to connect Ardour's Mackie Control in and out ports
-  to the MIDI ports leading to and coming from the control surface.
-</p>
-
-<p>
-  When you have made these connections once, Ardour will recreate them
-  for you in the future, as long as you leave Mackie Control enabled.
-</p>
-
-<h2>Customizing your control surface</h2>
-
-<p>
-  Every possible Mackie Control button can be bound to any action present
-  in Ardour's GUI. Please check your control surface page for suggestions.
-</p>
-
-<h2>Preparing your device for use with Ardour</h2>
-
-<p>
-  Most interfaces will require some configuration to send and respond to
-  MCP.
-</p>
-
-<p class="note">
-  When setting up the control surface, do <em>not</em> use "Pro Tools"
-  mode. Pro Tools is the only DAW that still requires HUI. The rest of
-  world uses Mackie Control Protocol. Ardour does not support HUI.
-</p>
-
----
-title: Behringer devices in Mackie/Logic Control Mode
-menu_title: Behringer devices
-part: subchapter
----
-
-<h2>Behringer BCF-2000 Faders Controller</h2>
-
-<p>
-  <img alt="Digramatic Image of the BCF2000"
-     src="/images/BCF2000.png">
-</p>
-
-<p>
-  The Behringer BCF-2000 Fader Controller is a control surface with 8 motorized
-  faders, 8 rotary encoders and 30 push buttons. The device is a class
-  compliant USB Midi Interface and also has standard Midi DIN IN/OUT/THRU  ports.
-  The device has included a Mackie/Logic Control Emulation Mode since firmware v1.06.
-  If you're devices firmware is older than v1.06 it will require an update before
-  Mackie Control Emulation will work as described here.
-</p>
-
-<p>
-  <img alt="Digramatic Image of the BCF2000 in Edit Global Mode"
-     src="/images/BCF2000-EG.png">
-</p>
-
-<p>
-  In order to put the controller into Mackie/Logic control mode turn on the
-  unit while holding third button from the left in the top most row
-  of buttons (under the rotary encoder row). Hold the button down until <dfn>EG</dfn>
-  or edit global mode is displayed on the LCD screen of the unit. The global parameters
-  can then be edited using the 8 rotary encoders in the top row.
-</p>
-  <ul>
-    <li><code>
-      Encoder #1 sets the operating mode and should be set to <dfn>U-1</dfn> or
-      USB mode 1 if using with a USB cable connection.
-    </li></code>
-    <li><code>
-      Encoder #3 sets the foot switch mode and should most likely be set to
-      <dfn>Auto</dfn> to detect how the foot switch is wired.
-    </li></code>
-    <li><code>
-      Encoder #5 sets the device id, if you are using only 1 device the id
-      should be set to <dfn>ID 1</dfn>. If you are using multiple BCF/BCR2000 each
-      device is required to be set up sequentially and one at a time.
-    </li></code>
-    <li><code>
-      Encoder #7 controls the MIDI <dfn>Dead Time</dfn> or the amount of milliseconds
-      after a move has been made that the device ignores further changes, this
-      should be set to <dfn>100</dfn>.
-    </li></code>
-    <li><code>
-      Encoder #8 controls the MIDI message <dfn>Send Interval</dfn> in milliseconds
-      and should be set to <dfn>10</dfn>
-    </li></code>
-  </ul>
-<p>
-  To exit the <dfn>EG</dfn> mode press the <dfn>Exit</dfn> button. The device is now
-  ready to use with Ardour.
-</p>
-
-<h3>Modes of Operation</h3>
-<p>
-  <img alt="Digramatic Image of the BCF2000 Control Modes"
-     src="/images/BCF2000-Modes.png">
-</p>
-<p>
-  The four buttons arranged in a rectangle and located under the Behringer logo
-  are the mode selection buttons in Logic Control Emulation Mode,
-  currently Ardour has implemented support for two of these modes.
-</p>
-<p>
-The surface can be broken into 8 groups of controls.
-</p>
-
-<ol>
-  <li>The rotary encoders at the top of the device</li>
-  <li>The first row of buttons under the encoders</li>
-  <li>The second row of buttons under the encoders</li>
-  <li>The row of motorized faders<li>
-  <li>
-    The group of 4 buttons at the top right that will be
-    referred to here as the <dfn>Shift Group</dfn>
-  </li>
-  <li>
-    The group of 4 buttons under the <dfn>Shift Group</dfn>
-    referred to here as the <dfn>Mode Group</dfn>
-  </li>
-  <li>
-    The group of 2 buttons under the <dfn>Mode Group</dfn>
-    referred to here as the <dfn>Select Group</dfn>
-  </li>
-  <li>
-    The group of 4 buttons under the <dfn>Select Group</dfn>
-    referred to here as the <dfn>Transport Group</dfn>
-  </li>
-</ol>
-
-<h3>Mixer Pan Mode</h3>
-<p>
-  <img alt="Digramatic Image of the BCF2000 Control Modes"
-     src="/images/BCF2000-Pan.png">
-</p>
-<p>
-  This is the standard work mode that organizes the control surface to emulate
-  a standard mixer layout where controls for each track/bus are arranged vertically.
-  The order of the faders is either controlled by the order of the tracks in the
-  mixer or can be set manually by the user.
-</p>
-<dl>
-  <dt>Encoders</dt>
-  <dd>Mixer Pans. The red LEDs show the amount of pan left or right</dd>
-  <dt>First Row of Buttons</dt>
-  <dd>Mixer Mutes. The button led lights if the track is currently muted</dd>
-  <dt>Second Row of Buttons</dt>
-  <dd>Select Active Track/Bus. Currently selected track/bus is indicated by the button led</dd>
-  <dt>Faders</dt>
-  <dd>Mixer Gains</dd>
-  <dt>Shift Group</dt>
-  <dd>
-    The top and bottom left buttons are the simply shifts to change the function of other buttons
-  </dd>
-  <dd>
-    The top right is the <dfn>Fine Control</dfn> button that allows the increment values sent by
-    by rotary encoders and faders to be a small value for more precise editing. This button
-    can also act as a shift button.
-  </dd>
-  <dd>
-    The bottom right is the <dfn>Global Shift</dfn> button that allows you to change back to the
-    standard Mixer Pan view from other views and modes. This button can also act as a shift button.
-  </dd>
-  <dt>Mode Group</dt>
-  <dd>The top two buttons functions are not currently implemented in Ardour.</dd>
-  <dd>The bottom left button sets the device to <dfn>Pan</dfn> mode and should currently be lit</dd>
-  <dd>
-    The bottom right button sets the device to <dfn>Send</dfn> mode but will only allow the switch
-    if the currently selected track/bus has a send or sends to control.
-  </dd>
-  <dt>Select Group</dt>
-  <dd>
-    In this mode they function as bank select left and right. If your session has more than 8 tracks
-    the next set of 8 tracks is selected with the right button and the faders will move to match the
-    current gain settings of that bank of 8 tracks/busses. If the last bank contains less than 8
-    tracks/busses the unused  faders will move to the bottom and the pan lights will all turn
-    off. An unlimited amount of tracks can be controlled with the device.
-  </dd>
-  <dt>Transport Group</dt>
-  <dd>The upper left button controls <dfn>Rewind<dfn>.
-  <dd>The upper right button controls <dfn>Fast Foreword</dfn>
-  <dd>The lower left button controls stop</dd>
-  <dd>The lower right button controls play</dd>
-</dl>
-<h3>Send Mode</h3>
-<p>
-  <img alt="Digramatic Image of the Send Mode"
-     src="/images/BCF2000-Send.png">
-</p>
-<p>
-  Send mode allows for the top row of encoders to control the sends for a selected channel.
-  One interesting option is to flip the controls from the encoders to the faders by pressing
-  the shift 1 button and the global view button at the same time.
-</p>
-<dl>
-  <dt>Encoders</dt>
-  <dd>
-    In send mode, the encoders control sends from left to right instead of mixer pans.
-    If there are less than 8 sends the behavior of the encoder will be to continue controlling
-    the mixer pan. Visually it's indicated by the change in the LED from originating at the 12
-    o'clock position to originating at the 7 o'clock position. If <dfn>FLIP</dfn> is pressed
-    the encoder will control the mixer gain for the selected track/bus.
-  </dd>
-  <dt>First row of buttons</dt>
-  <dd>No Change</dd>
-  <dt>Second row of buttons</dt>
-  <dd>No Change.</dd>
-  <dt>Faders</dt>
-  <dd>
-    No change unless <dfn>FLIP</dfn>is pressed then it controls the send for the selected track/bus.
-  </dd>
-  <dt>Shift Group</dt>
-  <dd>No Change</dd>
-  <dt>Select Group</dt>
-  <dd>No Change</dd>
-  <dt>Transport Group</dt>
-  <dd>No Change</dd>
-</dl>
-<h3>Mixer Pan While Holding Shift 1</h3>
-<p>
-  <img alt="Digramatic Image of the Mixer Mode while holding down shift 1"
-     src="/images/BCF2000-Shift1.png">
-</p>
-<p>
-  The operations of various buttons change while holding down the <dfn>Shift 1</dfn> button
-</p>
-<dl>
-  <dt>Encoders</dt>
-  <dd>No Change</dd>
-  <dt>First row of buttons</dt>
-  <dd>These now control the Soloing of each track/bus in the current bank</dd>
-  <dt>Second row of buttons</dt>
-  <dd>These now control the Enable Record for each track</dd>
-  <dt>Faders</dt>
-  <dd>No Change</dd>
-  <dt>Shift Group</dt>
-  <dd>No change</dd>
-  <dt>Mode Group</dt>
-  <dd>No Change</dd>
-  <dt>Select Group</dt>
-  <dd>
-    These now change the current bank of tracks being controlled over by
-    one. So if you where controlling tracks 1-8 a push the right
-    button the surface would now control tracks 2-9 pressing the left
-    would then shift back to controlling tracks 1-8.
-  </dd>
-  <dt>Transport Group</dt>
-  <dd>The upper left now controls turning on and off <dfn>Loop</dfn> mode.</dd>
-  <dd>
-    The upper right now toggles
-    <dfn>Click</dfn>.
-  </dd>
-  <dd>The lower left toggles <dfn>Replace</dfn>.</dd>
-  <dd>
-    The lower right toggles
-    <dfn>Global Record</dfn>.
-  </dd>
-</dl>
-<h3>Mixer Pan While Holding Shift 2</h3>
-<p>
-  <img alt="Digramatic Image of the Mixer Mode while holding down shift 2"
-     src="/images/BCF2000-Shift2.png">
-</p>
-<p>
-  The operations of various buttons change while holding down the <dfn>Shift 2</dfn> button
-</p>
-<dl>
-  <dt>Encoders</dt>
-  <dd>No Change</dd>
-  <dt>First row of buttons</dt>
-  <dd>FIX ME</dd>
-  <dt>Second row of buttons</dt>
-  <dd>These now control setting up different <dfn>Views</dfn>. See bellow for more info</dd>
-  <dt>Faders</dt>
-  <dd>No Change</dd>
-  <dt>Shift Group</dt>
-  <dd>No change</dd>
-  <dt>Mode Group</dt>
-  <dd>No Change</dd>
-  <dt>Select Group</dt>
-  <dd>Left button controls <dfn>Undo</dfn>(NEEDS VERIFIED)</dd>
-  <dt>Transport Group</dt>
-  <dd>FIX ME</dd>
-  <dd>FIX ME</dd>
-  <dd>FIX ME</dd>
-  <dd>FIX ME</dd>
-</dl>
-
-<h3>Views</h3>
-
-<p>
-  <img alt="Digramatic Image of the LED display for different Views"
-     src="/images/BCF2000-Views.png">
-</p>
-
-<p class="fixme">FIX ME</p>
-
----
-title: SSL Nucleus
-part: subchapter
----
-
-<p>
-  The Nucleus, from Solid State Logic, is a 16 fader Mackie Control
-  device that includes many buttons, separate meters, two LCD displays
-  and other features. The device is not cheap (around US$5000 at the
-  time of writing), and has some <a href="#design">design features</a>
-  (or lack thereof) which some Ardour developers find
-  questionable. Nevertheless, it is a very flexible device, and makes
-  a nice 16 fader surface without the need to somehow attach an
-  extender to your main surface.
-</p>
-
-<h2>Pre-configuring the Nucleus</h2>
-
-<p>
-  Your Nucleus comes complete with a number of "profiles" for a few
-  well-known DAWs. At the time of writing it does not include one for
-  Ardour (or related products such as Harrison Mixbus).
-</p>
-<p>
-  We have prepared a profile in which as many buttons as possible send
-  Mackie Control messages, which makes the device maximally useful
-  with Ardour (and Mixbus). You can
-  download <a href="https://community.ardour.org/files/ArdourNucleusProfile.zip">the
-  profile</a>
-  and load it to your Nucleus using the <code>Edit Profiles</code>
-  button in SSL's Nucleus Remote application. Be sure to select it for
-  the active DAW layer in order to make Ardour work as well as
-  possible. <em>Note: unfortunately, the Nucleus Remote application
-  only runs on OS X or Windows, so Linux users will need access to
-  another system to load the profile. We will provide notes on the
-  profile settings at a future time.</em>
-</p>
-
-<h2>Connecting the Nucleus</h2>
-
-<p>
-  Unlike most Mackie Control devices, the Nucleus uses an ethernet
-  connection to send and receive the MIDI messages that make up the
-  Mackie Control protocol. Specifically, it uses a technology called
-  "ipMIDI" which essentially "broadcasts" MIDI messages on a local
-  area network, so that any connected devices (computers, control
-  surfaces, tablets etc.) can participate.
-</p>
-<p>
-  All other DAWs so far that support the Nucleus have chosen to do so
-  by using a 3rd party MIDI driver called "ipMIDI", which creates a
-  number of "virtual" MIDI ports on your computer. You, the user,
-  tells the DAW which ports to connect to, and ipMIDI takes care of
-  the rest.
-</p>
-<p>
-  Ardour has builtin ipMIDI support, with no need of any 3rd party
-  packages, and no need to identify the "ports" to connect to in order
-  to communicate with the Nucleus. This makes setting it up a bit
-  easier than most other systems.
-</p>
-<p>
-  Unless ... you already installed the ipMIDI driver in order to use
-  some other DAW with your Nucleus. If ipMIDI is configured to create
-  any "ports", it is not possible for Ardour's own ipMIDI support to
-  function. We decided to offer both methods of communicating with
-  your Nucleus. If you regularly use other DAWs, and appreciate having
-  ipMIDI permanently set up to communication with the Nucleus&mdash;that's
-  OK, you can tell Ardour to use the ipMIDI driver you already
-  have. But if you're not using other DAWs with the Nucleus (and thus
-  have not installed the ipMIDI driver), then you can ignore the
-  ipMIDI driver entirely, and let Ardour connect directly with no
-  configuration.
-</p>
-
-<h3>Connecting via Ardour's own ipMIDI support</h3>
-
-<p class="alert alert-info">
-  This is usable only on computers with no 3rd party ipMIDI
-  driver software installed and configured. If you have the OS X or
-  Windows ipMIDI driver from nerds.de, it <strong>MUST</strong> be
-  configured to offer <strong>ZERO</strong> ports before using this
-  method.
-</p>
-
-<p>
-  Open <code>Preferences > Control Surfaces</code>. Ensure that the
-  Mackie protocol is enabled, then double-click on it to open the
-  Mackie Control setup dialog.
-</p>
-<p>
-  Ensure that the device selected is "SSL Nucleus". The dialog should
-  show a single numerical selector control below it, defining the
-  ipMIDI port number to use (it should almost always be left at the
-  default value of 21928).
-</p>
-<p>
-  Communication is automatically established with the Nucleus and you
-  need do nothing more.
-</p>
-<p>
-  If this does not work, then make sure your network cables are
-  properly connected, and that you are <strong>not</strong> running
-  other ipMIDI software on the computer.
-</p>
-
-<h3>Connecting via 3rd party ipMIDI support</h3>
-
-<p class="alert alert-info">
-  This is usable only on computers with 3rd party ipMIDI
-  driver software installed and configured for (at least) 2 ports.
-</p>
-
-<p>
-  Open <code>Preferences > Control Surfaces</code>. Ensure that the
-  Mackie protocol is enabled, then double-click on it to open the
-  Mackie Control setup dialog.
-</p>
-<p>
-  Ensure that the device selected is "SSL Nucleus (via platform MIDI)". The dialog should
-  show four combo/dropdown selectors, labelled (respectively):
-</p>
-  <ul>
-    <li><code>Main Surface receives via</code></li>
-    <li><code>Main Surface sends via</code></li>
-    <li><code>1st extender receives via</code></li>
-    <li><code>1st extender sends via</code></li>
-  </ul>
-<p>
-  You should choose "ipMIDI port 1", "ipMIDI port 1", "ipMIDI port 2"
-  and "ipMIDI port 2" for each of the 4 combo/dropdown selectors.
-</p>
-<p>
-  Communication should be automatically established with the Nucleus.
-</p>
-<p>
-  If this does not work, then make sure your network cables are
-  properly connected, and that you are running the approprate ipMIDI
-  driver and have configured it for 2 (or more) ports.
-</p>
-
-<h2><a name="design">Nucleus Design Discussion</a></h2>
-
-<p>
-  You might be reading this part of the manual seeking some guidance
-  on whether the Nucleus would make a suitable control surface for
-  your workflows. We don't want to try to answer that question
-  definitively, since the real answer depends on the very specific
-  details of your workflow and situation, but we would like to point
-  out a number of design features of the Nucleus that might change
-  your opinion.
-</p>
-
-<h3>Cons</h3>
-<dl>
-  <dt>No Master Faster</dt>
-  <dd>It is not possible to control the level of the Master bus or
-  Monitor section. Really don't know what SSL was thinking here.</dd>
-  <dt>No dedicated rec-enable buttons</dt>
-  <dd>You have to press the "Rec" button and convert the per-strip
-    "Select" buttons into rec-enables</dd>
-  <dt>No dedicated automation buttons</dt>
-  <dd>You have to press the "Auto" button and convert the first 4
-  vpots into 4 automation-related buttons, losing your current view
-    of the session.</dd>
-  <dt>No buttons with Mackie-defined "Marker" functionality</dt>
-  <dd>Mackie's design intentions for the interoperation of the
-    Marker, rewind and ffwd buttons requires profile editing in order
-    to function properly.
-  </dd>
-  <dt>No "Dyn" button</dt>
-  <dd>This is hard to assign in an edited profile. To be fair, other
-    Mackie Control devices also lack this button.
-  </dd>
-</dl>
-
-<h3>Pros</h3>
-<dl>
-  <dt>Single cable connectivity</dt>
-  <dd>No need for multiple MIDI cables to get 16 faders</dd>
-  <dt>Broadcast connectivity</dt>
-  <dd>Connecting to multiple computers does not require recabling</dd>
-  <dt>16 faders from a single box</dt>
-  <dd>No need to figure out how to keep extenders together</dd>
-  <dt>Meters separated from displays</dt>
-  <dd>Contrast with the Mackie Control Universal Pro, where meters
-    interfere with the display
-  </dd>
-  <dt>DAW profiles</dt>
-  <dd>Easy to flip profiles for use by different DAWs.</dd>
-</dl>
-
-
-<h3>Ambiguous</h3>
-<dl>
-  <dt>Ability to make buttons generate USB keyboard events</dt>
-  <dd>The extent to which this is useful reflects the target DAWs
-    inability to manage all of its functionality via Mackie Control
-  </dd>
-  <dt>Sophisticated "profile" editing</dt>
-  <dd>It is nice to be able to reassign the functionality of most
-    buttons, but this is only necessary because of the relatively few
-    global buttons on the surface.
-  </dd>
-  <dt>Builtin analog signal path</dt>
-  <dd>SSL clearly expects users to route audio back from their
-  computer via the Nucleus' own 2 channel output path, and maybe even
-  use the input path as well. They take up a significant amount of
-  surface space with the controls for this signal path, space that
-  could have been used for a master fader or more Mackie Control
-  buttons. The USB audio device requires a proprietary driver, so
-  Linux users can't use this, and OS X/Windows users will have to
-  install a device driver (very odd for a USB audio device these
-  days). The analog path also no doubt adds notable cost to the
-  Nucleus. There's nothing wrong with this feature for users that
-  don't already have a working analog/digital signal path for their
-  computers. But who is going to spend $5000 on a Nucleus that
-  doesn't have this already?</dd>
-</dl>
-
----
-title: Mackie Control Setup on Linux
-part: subchapter
----
-
-<h2>Devices using ipMIDI</h2>
-
-<p>
-  If you are using a device like the SSL Nucleus that uses ipMIDI,
-  no set up is required other than to ensure that your control surface
-  and computer are both connected to the same network.
-</p>
-
-<h2>Devices using conventional MIDI</h2>
-
-<p>
-  Before attempting to use a Mackie Control device that communicates via
-  a standard MIDI cable or a USB cable, you should ensure that
-  <a href="/setting-up-your-system/setting-up-midi/midi-on-linux">your Linux
-  MIDI environment is setup</a>.
-</p>
-
----
-title: What to do if your Device is not Listed
-menu_title: Unlisted devices
-part: subchapter
----
-
-<p>
-  All Mackie Control devices are based on the original Logic Control and the
-  documentation in the user manual that came with it. The Mackie Control and
-  the Mackie Control Pro and so on, all use this same protocol. Any units
-  from other manufactures will also use the same encoding as best the
-  hardware will allow. If the unit in use has more than one Mackie Control
-  option, it is best to choose Logic Control or LC. Any Templates for the
-  buttons should be chosen the same way as the Function key Editor uses these
-  button names. The "Mackie Control" option should be considered default and
-  should be tried with any unlisted device before attemping to create a
-  custom definition file.
-</p>
-
----
-title: Working With Extenders
-menu_title: Working With Extenders
-part: subchapter
----
-
-<p>
-  Extenders will require a custom file as there are no combinations listed
-  at this time. The best way is to start with the mc.device file and copy it
-  to a new name such as xt+mc.device and then edit that file. It is best to
-  name the file with the order the devices are expected to be used in as
-  the position of the master device is specified in this file.
-</p>
-
-<p>
-  The two lines of interest are:
-<p>
-
-<pre>
- &lt;Extenders value="0"/&gt;
- &lt;MasterPosition value="0"/&gt;
-</pre>
-
-<p>
-  Add these two lines if they are not present. The <code>Extenders</code>
-  value is the number of extenders used and should not include the master in
-  that number.
-</p>
-
-<p>
-  When an <code>Extenders</code> value of greater than 0 is used, extra midi
-  ports will appear for the extenders to be connected to. The MIDI ports
-  for the controllers will be named <code>mackie control #1</code>,
-  <code>mackie control #2</code> and up. The numbers will go from left to
-  right. That is, from lowest number channel to highest.
-</p>
-
-<p>
-  The <code>MasterPosition</code> value is the port number the master unit
-  (with the master fader) is connected to. So if there are three surfaces,
-  <code>&lt;MasterPosition value="1"/&gt;</code> will expect the master on
-  the left, <code>&lt;MasterPosition value="2"/&gt;</code> would be master
-  in the middle and <code>&lt;MasterPosition value="3"/&gt;</code> would be
-  master on the right. So the position matches the port name.
-</p>
-
-<p class="note">
-  The default value of <code>&lt;MasterPosition value="0"/&gt;</code> has
-  the same effect as <code>&lt;MasterPosition value="1"/&gt;</code>.
-</p>
-
-<p>
-  If the <code>MasterPosition</code> value does not properly match the
-  physcal position and MIDI port, the master fader and global controls will
-  not work. The master unit will act like an extender.
-</p>
-
----
-title: MIDI Binding Maps
-part: subchapter
----
-
-<p>
-  Ardour 2.X supported
-  <a href="/using-control-surfaces/midi-learn"><dfn>MIDI learning</dfn></a>
-  for more or less any control. This was a nice feature that quite a few other
-  DAWs are providing by now, but it didn't allow Ardour to work "out of the
-  box" with sensible defaults for existing commercial MIDI
-  controllers. In Ardour 3 and later versions, we have augmented the
-  MIDI learn feature with the ability to load a <dfn>MIDI binding map</dfn>
-  for a given controller, which can set up an arbitrary number of physical
-  controls with anything inside Ardour that can be controlled.
-</p>
-
-<p>
-  Currently (August 2016), we have presets for the following devices/modes:
-</p>
-
-<ul>
-  <li>AKAI MPD-32</li>
-  <li>AKAI MPK61</li>
-  <li>AKAI MPKmini</li>
-  <li>Behringer BCF2000</li>
-  <li>Behringer BCF2000 (Mackie Emulation mode; better to use
-    Ardour's actual Mackie Control Protocol support)</li>
-  <li>Behringer DDX3216</li>
-  <li>Korg nanoKONTROL (2 layouts)</li>
-  <li>Korg nanoKONTROL 2 (2 layouts)</li>
-  <li>Korg Taktile</li>
-  <li>M-Audio Axiom 25 (2 layouts)</li>
-  <li>M-Audio Axiom 61</li>
-  <li>M-Audio Oxygen 49</li>
-  <li>M-Audio Oxygen 61v3</li>
-  <li>M-Audio Oxygen 25</li>
-  <li>M-Audio Oxygen 8v2</li>
-  <li>Novation Impulse 49</li>
-  <li>Novation Impulse 61</li>
-  <li>Novation LaunchControl XL</li>
-  <li>Novation LaunchKey 25</li>
-  <li>Roland SI-24</li>
-  <li>Roland V Studio 20</li>
-  <li>Yamaha KX25</li>
-</ul>
-  At this time, new binding maps need to be created with a text editor.
-<p>
-  MIDI binding maps are accessible by double-clicking <kbd class="menu">Edit
-  &gt; Preferences &gt; Control Surfaces &gt; Generic MIDI</kbd>. Ardour will
-  retain your selection after you choose one.
-</p>
-
-<h2>Creating new MIDI maps</h2>
-<h3>The Basic Concept</h3>
-<p>
-  Since the beginning of time (well, sometime early in the 2.X series),
-  Ardour has had the concept of identifying each track and bus with a
-  <dfn>remote control ID</dfn>. This ID uniquely identifies a track or bus
-  so that when messages arrive from elsewhere via MIDI or OSC , we can determine
-   which track or bus they are intended to control. Ardour has a
-   <a
-  href="/working-with-tracks/controlling-track-ordering/track-ordering-and-remote-control-ids/">number
-   of ways of assigning remote control IDs</a>, but they don't really matter
-   very much when creating MIDI binding maps, so we won't discuss that here.
-   You just need to know that there is a "first track" and its remote control
-   ID is 1, and so on.
-</p>
-<h3>Getting Started</h3>
-<p>
-  MIDI bindings are stored in files with the suffix ".map" attached to their
-  name. The minimal content looks like this:
-</p>
-<pre>
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;ArdourMIDIBindings version="1.0.0" name="The name of this set of
-bindings"&gt;
-&lt;/ArdourMIDIBindings&gt;
-</pre>
-<p>
-  So, to start, create a file with that as the initial contents.
-</p>
-<p>
-  On OS X, Ardour loads midi maps from its binary-bundle folder in
-  <code>Ardour-&lt;version&gt;/midi_maps/</code> and checks
-  various other locations as well (defined by the ARDOUR_MIDIMAPS_PATH
-  environment variable). On GNU/Linux the easiest is to save the file to
-  <code>~/.config/ardour3/midi_maps/</code>.
-</p>
-
-<h3>Finding out what your MIDI control surface sends</h3>
-<p>
-  This is the most complex part of the job, but its still not very hard.
-  You need to connect the control surface to an application that will show
-  you the information that the device sends each time you modify a knob,
-  slider, button etc. There are a variety of such applications (notably
-  <code>gmidimon</code> and <code>kmidimon</code>, but you can actually use
-  Ardour for this if you want. Start Ardour in a terminal window, connect
-  MIDI ports up, and in the Preferences window, enable "Trace Input" on the
-  relevant MIDI port. A full trace of the MIDI data received will show up in
-  the terminal window. (Note: in Ardour3, you get a dedicated, custom dialog
-  for this kind of tracing.)
-</p>
-<h3>Types of Bindings</h3>
-<p>
-  There are two basic kinds of bindings you can make between a MIDI message
-  and something inside Ardour. The first is a binding to a specific parameter
-  of a track or bus. The second is a binding to a function that will change
-  Ardour's state in some way.
-</p>
-<h4>Binding to Track/Bus controls</h4>
-<p>
-  A track/bus binding has one of two basic structures
-</p>
-<code>
-  &lt;Binding <em>msg specification</em>  uri="<em>... control address ...</em>"/&gt;
-  &lt;Binding <em>msg specification</em>  function="<em>... function name ...</em>"/&gt;
-</code>
-
-<h4>Message specifications</h4>
-<p>
-  You can create a binding for either 3 types of channel messages, or for a
-  system exclusive ("sysex") message.  A channel message specification looks
-  like this:
-</p>
-<code>
-   &lt;Binding channel="1" ctl="13" ....
-</code>
-<p>
-  This defines a binding for a MIDI Continuous Controller message involving
-  controller 13, arriving on channel 1. There are 16 MIDI channels, numbered
-  1 to 16. Where the example above says <code>ctl</code>, you can alternatively
-  use <code>note</code> (to create binding for a Note On message) or
-  <code>pgm</code>  (to create a binding for a Program Change message).
-</p>
-<p>
-  As of Ardour 4.2, <code>enc-r</code>, <code>enc-l</code>, <code>enc-2</code> and
-  <code>enc-b</code> may be used for surfaces that have encoders that send
-  offsets rather than values. These accept Continuous Controller messages
-  but treat them as offsets. These are good for banked controls as they are
-  always at the right spot to start adjusting. (
-   <a href="/using-control-surfaces/midi-binding-maps/working-with-encoders/">
-   Learn more about working with encoders
-   </a>)
-</p>
-<p>
-  You can also bind sysex messages:
-</p>
-<code>
-  &lt;Binding sysex="f0 0 0 e 9 0 5b f7" ....
-  &lt;Binding sysex="f0 7f 0 6 7 f7" ....
-</code>
-<p>
-  The string after the <code>sysex=</code> part is the sequence of MIDI bytes,
-  as hexadecimal values, that make up the sysex message.
-</p>
-<p>
-  Finally, you can bind a totally arbitrary MIDI message:</p>
-<code>
-  &lt;Binding msg="f0 0 0 e 9 0 5b f7" ....
-  &lt;Binding msg="80 60 40" ....
-</code>
-<p>
-  The string after the <code>msg=</code> part is the sequence of MIDI bytes, as
-  hexadecimal values, that make up the message you want to bind. Using this is
-  slightly less efficient than the other variants shown above, but is useful for
-  some oddly designed control devices.
-</p>
-
-<p class="note">
-  As of Ardour 4.6 it is possible to use multi-event MIDI strings such as
-  two event CC messages, RPN or NRPN.
-</p>
-
-<p class="note">
-  The <code>sysex=</code> and <code>msg=</code> bindings will only work with
-  <code>function=</code> or <code>action=</code> control addresses. They
-  will <em>not</em> work with the <code>uri=</code> control addresses.
-  Controls used with <code>uri=</code> require a <em>Value</em> which is
-  only available in a known place with channel mode MIDI events.
-</p>
-
-<h4>Control address</h4>
-<p>
-  A <dfn>control address</dfn> defines what the binding will actually control.
-  There are quite a few different things that can be specified here:
-</p>
-<dl class="wide-table">
-<dt>/route/gain</dt>
-<dd>the gain control ("fader") for the track/bus</dd>
-<dt>/route/trim</dt>
-<dd>the trim control for the track/bus (new in 4.1)</dd>
-<dt>/route/solo</dt>
-<dd>a toggleable control for solo (and listen) of the track/bus</dd>
-<dt>/route/mute</dt>
-<dd>a toggleable control to mute/unmute the track/bus</dd>
-<dt>/route/recenable</dt>
-<dd>a toggleable control to record-enable the track</dd>
-<dt>/route/panwidth</dt>
-<dd>interpreted by the track/bus panner, should control image "width"</dd>
-<dt>/route/pandirection</dt>
-<dd>interpreted by the track/bus panner, should control image "direction"</dd>
-<dt>/route/plugin/parameter</dt>
-<dd>the Mth parameter of the Nth plugin of a track/bus
-</dd>
-<dt>/route/send/gain</dt>
-<dd>the gain control ("fader") of the Nth send of a track/bus</dd>
-</dl>
-<p>Each of the specifications needs an address, which takes various forms too. For track-level controls (solo/gain/mute/recenable), the address is one the following:</p>
-<dl class="wide-table">
-<dt>a number, eg. "1"
-</dt>
-<dd>identifies a track or bus by its remote control ID
-</dd>
-<dt>B, followed by a number
-</dt>
-<dd>identifies a track or bus by its remote control ID within the current bank (see below for more on banks)
-</dd>
-<dt>one or more words
-</dt>
-<dd>identifies a track or bus by its name
-</dd>
-</dl>
-<p>
-  For send/insert/plugin controls, the address consists of a track/bus
-  address (as just described) followed by a number identifying the plugin/send
-  (starting from 1). For plugin parameters, there is an additional third
-  component: a number identifying the plugin parameter number (starting from
-  1).
-</p>
-<p>
-  One additional feature: for solo and mute bindings, you can also add
-  <code>momentary="yes"</code> after the control address. This is useful
-  primarily for NoteOn bindings&mdash;when Ardour gets the NoteOn it
-  will solo or mute the targetted track or bus, but then when a NoteOff
-  arrives, it will un-solo or un-mute it.
-</p>
-
-<h4>Bindings to Ardour "functions"</h4>
-<p>
-  Rather than binding to a specific track/bus control, it may be useful to
-  have a MIDI controller able to alter some part of Ardour's state. A
-  binding definition that does this looks like this:
-</p>
-<code>
-  &lt;Binding channel="1" note="13" function="transport-roll"/&gt;
-</code>
-<p>
-  In this case, a NoteOn message for note number 13 (on channel 1) will
-  start the transport rolling. The following function names are available:
-</p>
-<dl class="narrower-table">
-<dt>
-<code>transport-stop</code>
-</dt>
-<dd>stop the transport
-</dd>
-<dt>
-<code>transport-roll</code>
-</dt>
-<dd>start the transport "rolling"
-</dd>
-<dt>
-<code>transport-zero</code>
-</dt>
-<dd>move the playhead to the zero position
-</dd>
-<dt>
-<code>transport-start</code>
-</dt>
-<dd>move the playhead to the start marker
-</dd>
-<dt>
-<code>transport-end</code>
-</dt>
-<dd>move the playhead to the end marker
-</dd>
-<dt>
-<code>loop-toggle</code>
-</dt>
-<dd>turn on loop playback
-</dd>
-<dt>
-<code>rec-enable</code>
-</dt>
-<dd>enable the global record button
-</dd>
-<dt>
-<code>rec-disable</code>
-</dt>
-<dd>disable the global record button
-</dd>
-<dt>
-<code>next-bank</code>
-</dt>
-<dd>Move track/bus mapping to the next bank (see Banks below)
-</dd>
-<dt>
-<code>prev-bank</code>
-</dt>
-<dd>Move track/bus mapping to the previous bank (see Banks below)
-</dd>
-</dl>
-
-<h4>Binding to Ardour "actions"</h4>
-<p>
-  You can also bind a sysex or arbitrary message to any of the items
-  that occur in Ardour's main menu (and its submenus).  The best place
-  to look for the (long) list of how to address each item is in your
-  keybindings file, which will contain lines that look like this:
-</p>
-<code>
-(gtk_accel_path "&lt;Actions&gt;/Editor/temporal-zoom-in" "equal")
-</code>
-<p>
-  To create a binding between an arbitrary MIDI message (we'll use a
-  note-off on channel 1 of MIDI note 60 (hex) with release velocity
-  40 (hex)), the binding file would contain:
-</p>
-<code>
-   &lt;Binding msg="80 60 40" action="Editor/temporal-zoom-in"/&gt;
-</code>
-<p>
-  The general rule, when taken an item from the keybindings file and
-  using it in a MIDI binding is to simply strip the
-  <code>&lt;Action&gt;</code> prefix of the second field in the
-  keybinding definition.
-</p>
-
-<h3>Banks and Banking</h3>
-<p>
-  Because many modern control surfaces offer per-track/bus controls
-  for far fewer tracks &amp; busses than many users want to control,
-  Ardour offers the relatively common place concept of <dfn>banks</dfn>. Banks
-  allow you to control any number of tracks and/or busses easily,
-  regardless of how many faders/knobs etc. your control surface has.<br />
-  To use banking, the control addresses must be specified using the
-  <dfn>bank relative</dfn> format mentioned above ("B1" to identify
-  the first track of a bank of tracks, rather than "1" to identify
-  the first track).
-</p>
-<p>
-  One very important extra piece of information is required to use
-  banking: an extra line near the start of the list of bindings
-  that specifies how many tracks/busses to use per bank. If the
-  device has 8 faders, then 8 would be a sensible value to use for
-  this. The line looks like this:</p>
-<code>
-   &lt;DeviceInfo bank-size="8"/&gt;
-</code>
-<p>
-  In addition, you probably want to ensure that you bind something
-  on the control surface to the <code>next-bank</code> and
-  <code>prev-bank</code> functions, otherwise you and other users
-  will have to use the mouse and the GUI to change banks, which
-  rather defeats the purpose of the bindings.
-</p>
-<h2>A Complete (though muddled) Example</h2>
-<pre>
-&lt;?xml version="1.0" encoding="UTF-8"?&gt;
-&lt;ArdourMIDIBindings version="1.0.0" name="pc1600x transport controls"&gt;
-  &lt;DeviceInfo bank-size="16"/&gt;
-  &lt;Binding channel="1" ctl="1"   uri="/route/gain B1"/&gt;
-  &lt;Binding channel="1" ctl="2"   uri="/route/gain B2"/&gt;
-  &lt;Binding channel="1" ctl="3"   uri="/route/send/gain B1 1"/&gt;
-  &lt;Binding channel="1" ctl="4"   uri="/route/plugin/parameter B1 1 1"/&gt;
-  &lt;Binding channel="1" ctl="6"   uri="/bus/gain master"/&gt;
-
-  &lt;Binding channel="1" note="1"  uri="/route/solo B1"/&gt;
-  &lt;Binding channel="1" note="2"  uri="/route/solo B2" momentary="yes"/&gt;
-
-  &lt;Binding channel="1" note="15"  uri="/route/mute B1" momentary="yes"/&gt;
-  &lt;Binding channel="1" note="16"  uri="/route/mute B2" momentary="yes"/&gt;
-
-  &lt;Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/&gt;
-  &lt;Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/&gt;
-  &lt;Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/&gt;
-  &lt;Binding sysex="f0 0 0 e 9 0 53 0 0 f7" function="loop-toggle"/&gt;
-
-  &lt;Binding channel="1" note="13" function="transport-roll"/&gt;
-  &lt;Binding channel="1" note="14" function="transport-stop"/&gt;
-  &lt;Binding channel="1" note="12" function="transport-start"/&gt;
-  &lt;Binding channel="1" note="11" function="transport-zero"/&gt;
-  &lt;Binding channel="1" note="10" function="transport-end"/&gt;
-&lt;/ArdourMIDIBindings&gt;
-</pre>
-<p>
-  Please note that channel, controller and note numbers are specified as
-  decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively
-  (the channel range may change at some point).
-</p>
-
----
-title: Working With Encoders in Ardour
-menu_title: Working With Encoders
-part: subchapter
----
-
-<p>
-  Encoders are showing up more frequently on controllers. However, they use
-  the same MIDI events as Continuous Controllers and they have no standard
-  way of sending that information as MIDI events. Ardour 4.2 has implemented
-  4 of the more common ways of sending encoder information.
-</p>
-<p>
-  Encoders that send the same continuous values as a pot would are not
-  discussed here as they are already supported by <code>ctl</code>.
-</p>
-<P>
-  Encoders as this page talks about them send direction and offset that the
-  DAW will add to or subtract from the current value.
-</p>
-<p>
-  The 4 kinds of encoder supported are:
-</p>
-<ul>
-<li>
-  enc-r:  On the bcr/bcf2000 this is called "Relative Signed Bit". The most
-  significant bit sets positive and the lower 6 signifcant bits are the
-  offset.
-</li>
-<li>
-  enc-l: The bcr2000 calls this "Relative Signed Bit 2". The most
-  significant bit sets negative and the lower 6 signifcant bits are the
-  offset. If you are using one of these two and the values are right but
-  reversed, use the other. This one is the one the Mackie Control Protocol
-  uses.
-</li>
-<li>
-  enc-2: The bcr2000 calls this one "Relative 2s Complement". Positive
-  offsets are sent as normal from 1 to 64 and negative offsets are sent as
-  2s complement negative numbers.
-</li>
-<li>
-  enc-b: The bcr2000 calls this one "Relative Binary Offset". Positive
-  offsets are sent as offset plus 64 and negative offsets are sent as 64
-  minus offset.
-</li>
-</ul>
-<p>
-  If the wrong one is chosen, either the positive or negative side will act
-  incorrectly. It is not really possible to auto detect which one the
-  controller is using. Trial and error is the only way if the specification
-  of the controller is not known.
-</p>
-<p>
-  Many controllers have more than one choice as well, check the manual for
-  the surface.
-</p>
-
----
-title: MIDI Learn
-part: subchapter
----
-
-<h2>Philosophy</h2>
-
-<p>
-  There are no "best" ways to map an arbitrary MIDI controller for controlling Ardour. There may be very legitimate reasons for different users to prefer quite different mappings.
-</p>
-
-<p>
-  On every platform that Ardour runs on, there are excellent free-of-charge tools for making connections between MIDI hardware and "virtual" MIDI ports like the ones that Ardour creates and uses. Rather than waste precious developer time replicating these connection/patch managers, we prefer to leverage their existence by having users rely on them to actually connect Ardour to other MIDI devices and software. On OS X, we recommend Pete Yandell's MIDI Patchbay. On Linux, a wide variety of tools are available including QJackctl, aconnect, Patchage, and more.
-</p>
-
-<h2>Basics</h2>
-
-<ol>
-  <li>Enable Generic MIDI control: <kbd class="menu">Edit &gt; Preferences
-  &gt; Control Surfaces &gt; Generic MIDI</kbd></li>
-  <li>Connect Ardour's MIDI port named <samp>control</samp> to whatever
-  hardware or software you want (using a MIDI patchbay app)</li>
-  <li><kbd class="mod1 mouse">Middle</kbd>-click on whatever on-screen
-  fader, plugin parameter control, button etc. you want to control</li>
-  <li>A small window appears that says "Operate Controller now"</li>
-  <li>Move the hardware knob or fader, or press the note/key.</li>
-  <li>The binding is complete. Moving the hardware should control the Ardour fader etc. </li>
-</ol>
-
-<h2>Avoiding work in the future</h2>
-
-<p>
-  If you want the bindings you set up to be used automatically in every session, the simplest thing to do is to use <kbd class="menu">Session &gt; Save Template</kbd>. Then, when creating new sessions, select that template and all the bindings will be automatically set up for you.
-</p>
-
----
-title: Using the Presonus Faderport
-menu_title: Presonus Faderport
-part: subchapter
----
-
-<p>
-  Since version 4.5, Ardour has had full support for the Presonus
-  Faderport. This is a compact control surface featuring a single
-  motorized fader, a single knob (encoder) and 24 buttons with fixed
-  labels. It is a relatively low-cost device that functions very well
-  to control a single (selected) track or bus, along with a variety of
-  other "global" settings and conditions.
-</p>
-
-<h2>Connecting the Faderport</h2>
-
-<p>
-  The Faderport comes with a single USB socket on the back. Connect a
-  suitable USB cable from there to a USB port on your computer. As of
-  the end of 2015, you should avoid USB3 ports&mdash;these cause erratic
-  behaviour with the device. This issue might get fixed by Presonus in
-  the future.
-</p>
-
-<p class="well">
-  Ardour uses the Faderport in what Presonus calls "native" mode. You
-  do not need to do anything to enable this&mdash;Ardour will set the
-  device to be in the correct mode. In native mode, the Faderport
-  sends and receives ordinary MIDI messages to/from the host, and the
-  host understands the intended meaning of these messages. We note
-  this detail to avoid speculation about whether Ardour supports the
-  device via the HUI protocol&mdash;it does not.
-</p>
-
-<p>
-  The Faderport will be automatically recognized by your operating
-  system, and will appear in any of the lists of possible MIDI ports
-  in both Ardour and other similar software.
-</p>
-
-<p>
-  To connect the Faderport to Ardour, open the Preferences dialog, and
-  then click on "Control Surfaces". Click on the "Enable" button
-  in the line that says "Faderport" in order to activate Ardour's
-  Faderport support. Then double click on the line that says
-  "Faderport". A new dialog will open, containing (among other things)
-  two dropdown selectors that will allow you to identify the MIDI
-  ports where your Faderport is connected.
-</p>
-
-<p>
-<img alt="the Faderport configuration dialog"
-     src="/images/faderport_dialog.png">
-</p>
-
-<p>
-  Once you select the input and output port, Ardour will initialize
-  the Faderport and it will be ready to use. You only need do this
-  once: once these ports are connected and your session has been
-  saved, the connections will be made automatically in this and other
-  future sessions.
-</p>
-
-<p>
-  You do not need to use the power supply that comes with the
-  Faderport but without it, the fader will not be motorized. This
-  makes the overall experience of using the Faderport much less
-  satisfactory, since the fader will not move when Ardour tells it
-  to, leading to very out-of-sync conditions between the physical
-  fader position and the "fader position" inside the program.
-</p>
-
-<h2>Using the Faderport</h2>
-
-<p>
-  The Faderport's controls can be divided into three groups:
-  <ol>
-    <li>Global controls such as the transport buttons</li>
-
-    <li>Controls which change the settings for particular track or
-      bus</li>
-
-    <li>Controls which alter which track or bus is modified by the
-      per-track/bus controls.</li>
-  </ol>
-</p>
-<p>
-  Because the Faderport has only a single set of per-track controls,
-  by default those controls operate on the first selected track or
-  bus. If there is no selected track or bus, the controls will do
-  nothing.
-</p>
-
-<h3>Transport Buttons</h3>
-<p>
-  The transport buttons all work as you would expect.
-  <dl>
-    <dt>Rewind</dt>
-    <dd>
-      <p>
-      When pressed on its own, starts the transport moving backwards. Successive presses
-      speed up the "rewind" behaviour.
-      </p>
-      <p>
-       If pressed while also holding the Stop button, the playhead will
-       return to the zero position on the timeline.
-      </p>
-      <p>
-       If pressed while also holding the Shift button, the playhead will
-       move to the session start marker.
-      </p>
-    </dd>
-    <dt>Fast Forward</dt>
-    <dd>
-      <p>
-       When pressed on its own, starts the transport moving faster than normal. Successive presses
-       speed up the "fast forward" behaviour.
-      </p>
-      <p>
-       If pressed while also holding the Shift button, the playhead
-       will move to the session end marker.
-      </p>
-    </dd>
-    <dt>Stop</dt>
-    <dd>
-      Stops the transport. Also used in combination with the Rewind
-      button to "return to zero".
-    </dd>
-    <dt>Play</dt>
-    <dd>
-      Starts the transport. If pressed while the transport is
-      already rolling at normal speed, causes the playhead to jump to
-      the start of the last "roll" and continue rolling ("Poor man's
-      looping").
-    </dd>
-    <dt>Record Enable</dt>
-    <dd>Toggles the global record enable setting
-    </dd>
-  </dl>
-</p>
-
-<h3>Other Global Controls</h3>
-<p>
-  The Mix, Proj, Trns buttons do not obviously correspond any
-  particular functions or operations in Ardour. We have therefore
-  allowed users to choose from a carefully curated set of possible
-  actions that seem related to the button labels in some clear
-  way. This can be done via the Faderport configuration dialog
-  accessed via <code>Preferences &gt; Control Surfaces</code>. Each
-  button has 3 possible actions associated with it:
-  <ul>
-    <li>Plain Press: action to be taken when the button is pressed on
-      its own.</li>
-    <li>Shift-Press: action to be taken when the button is pressed in
-      conjunction with the Shift button.</li>
-    <li>Long Press: action to be taken when the button is pressed on
-      its own and held down for more than 0.5 seconds.</li>
-  </ul>
-  Click on the relevant drop-down selector to pick an action as you
-  prefer.
-</p>
-<p>
-  The User button also has no obvious mapping to specific Ardour
-  functionality, so we allow users to choose from <em>any</em>
-  possible GUI action. The menu for selecting the action is somewhat
-  confusing and it can be hard to find what you're looking
-  for. However, all possible actions are there, so keep looking!
-<p>
-  <dl>
-    <dt>Mix</dt>
-    <dd>
-      <p>
-       Possible actions include:
-       <ul>
-         <li>Toggle Editor &amp; Mixer visibility</li>
-         <li>Show/Hide the Editor mixer strip</li>
-       </ul>
-      </p>
-    </dd>
-    <dt>Proj</dt>
-    <dd>
-      <p>
-       Possible actions include:
-       <ul>
-         <li>Toggle Meterbridge visibility</li>
-         <li>Toggle Session Summary visibility</li>
-         <li>Toggle Editor Lists visibility</li>
-         <li>Zoom to session</li>
-         <li>Zoom in</li>
-         <li>Zoom out</li>
-       </ul>
-      </p>
-   </dd>
-    <dt>Trns</dt>
-    <dd>
-      <p>
-       Possible actions include:
-       <ul>
-         <li>Toggle Locations window visibility</li>
-         <li>Toggle Metronome</li>
-         <li>Toggle external sync</li>
-         <li>Set Playhead at current pointer position</li>
-       </ul>
-      </p>
-    </dd>
-    <dt>Undo/Redo</dt>
-    <dd>
-      Undo Causes the last operation carried out in the editor to be
-      undone. When pressed in conjuction with the Shift button, it
-      causes the most recent undone operation to be re-done.
-    </dd>
-    <dt>Punch</dt>
-    <dd>
-      <p>
-       When pressed on its own, toggles punch recording. If there is no
-       punch range set for the session, this will do nothing.
-      </p>
-      <p>
-       When pressed in conjunction with the Shift button, this moves
-       the playhead to the previous Marker
-      </p>
-    </dd>
-    <dt>User</dt>
-    <dd>
-      <p>
-       See above. Any and all GUI-initiated actions can be driven with
-       by pressing this button on its own, or with a "long" press.
-      </p>
-      <p>
-       When pressed in conjunction with the Shift button, this will move
-       the playhead to the next marker.
-      </p>
-    </dd>
-    <dt>Loop</dt>
-    <dd>
-      <p>
-       When pressed on its own, this toggles loop playback. If the
-       Ardour preference "Loop-is-mode" is enabled, this does nothing
-       to the current transport state. If that preference is disabled,
-       then engaging loop playback will also start the transport.
-      </p>
-      <p>
-       When pressed in conjunction with the Shift button, this will
-       create a new (unnamed) marker at the current playhead
-       position.
-      </p>
-    </dd>
-  </dl>
-</p>
-
-<h3>Per-track Controls</h3>
-<p>
-  <dl>
-    <dt>Mute</dt>
-    <dd>
-      This toggles the mute setting of the currently controlled
-      track/bus. The button will be lit if the track/bus is muted.
-    </dd>
-    <dt>Solo</dt>
-    <dd>
-      This toggles the solo (or listen) setting of the currently
-      controlled track/bus. The button will be lit if the track/bus is
-      soloed (or set to listen mode).
-    </dd>
-    <dt>Rec</dt>
-    <dd>
-      This toggles the record-enabled setting of the currently
-      controlled track/bus. The button will be lit if the track is
-      record-enabled. This button will do nothing if the Faderport is
-      controlling a bus.
-    </dd>
-    <dt>Fader</dt>
-    <dd>
-      The fader controls the gain applied to the currently controlled
-      track/bus. If the Faderport is powered, changing the gain in
-      Ardour's GUI or via another control surface, or via automation,
-      will result in the fader moving under its own control.
-    </dd>
-    <dt>Knob/Dial/Encoder</dt>
-    <dd>
-      <p>
-       The knob controls 1 or 2 pan settings for the current
-       controlled track/bus. When used alone, turning the knob controls
-       the "azimuth" or "direction" (between left and right) for the
-       panner in the track/bus (if any). This is all you need when
-       controlling tracks/busses with 1 input and 2 outputs.
-      </p>
-      <p>
-       If controlling a 2 input/2 output track/bus, Ardour's panner
-       has two controls: azimuth (direction) and width. The width
-       must be reduced to less than 100% before the azimuth can be
-       changed. Pressing the "Shift" button while turning the knob
-       will alter the width setting.
-      </p>
-      <p>
-       The knob can also be turned while the "User" button is held,
-       in order to modify the input gain for the currently controlled
-       track.
-      </p>
-    </dd>
-    <dt>Read</dt>
-    <dd>
-      Enables playback/use of fader automation data by the controlled track/bus.
-    </dd>
-    <dt>Write</dt>
-    <dd>
-      Puts the fader for the controlled track/bus into automation
-      write mode. While the transport is rolling, all fader changes
-      will be recorded to the fader automation lane for the relevant track/bus.
-    </dd>
-    <dt>Touch</dt>
-    <dd>
-      Puts the fader for the controlled track/bus into automation
-      touch mode. While the transport is rolling, touching the fader
-      will initiate recording all fader changes until the fader is
-      released. When the fader is not being touched, existing
-      automation data will be played/used to control the gain level.
-    </dd>
-    <dt>Off</dt>
-    <dd>
-      This disables all automation modes for the currently controlled
-      track/bus. Existing automation data will be left unmodified by
-      any fader changes, and will not be used for controlling gain.
-    </dd>
-  </dl>
-</p>
-
-<h3>Track Selection Controls</h3>
-<p>
-  You can manually change the track/bus controlled by the Faderport by
-  changing the selected track in Ardour's editor window. If you select
-  more than 1 track, the Faderport will control the first selected
-  track and <em>only</em> that track/bus.
-</p>
-<p>
-  <dl>
-    <dt>Left (arrow)</dt>
-    <dd>
-      This causes the Ardour GUI to select the previous track/bus
-      (using the current visual order in the editor window), which
-      will in turn cause the Faderport to control that track. If there
-      is no previous track/bus, the selected track/bus is left
-      unchanged, and the Faderport continues to control it.
-    </dd>
-    <dt>Right (arrow)</dt>
-    <dd>
-      This causes the Ardour GUI to select the next track/bus
-      (using the current visual order in the editor window), which
-      will in turn cause the Faderport to control that track. If there
-      is no next track/bus, the selected track/bus is left
-      unchanged, and the Faderport continues to control it.
-    </dd>
-    <dt>Output</dt>
-    <dd>
-      <p>
-       Pressing the Output button causes the Faderport to control
-       the fader, pan, mute and solo settings of the Master bus. If
-       your session does not contain a Master bus, it does nothing.
-       This is a toggle button&mdash;pressing it again returns Faderport
-       to controlling whichever track/bus was selected before the
-       first press of the Output button.
-      </p>
-      <p>
-       If your session uses Ardour's monitor section, you can use
-       Shift-Output to assign it to the Faderport in the same way
-       that Output assigns the Master bus. This is also a toggle
-       setting, so the second Shift-Output will return the Faderport
-       to controlling whichever track/bus was selected before.
-      </p>
-      <p>
-       If you press Shift-Output after a single press to Output
-       (i.e. control the Monitor Section while currently controlling
-       the Master bus) or vice versa (i.e. control the Master bus
-       while currently controlling the Monitor Section), the press
-       will be ignored. This avoids getting into a tricky situation
-       where it is no longer apparent what is being controlled and
-       what will happen if you try to change it.
-      </p>
-    </dd>
-    <dt>Bank</dt>
-    <dd>
-      The "Bank" button is currently not used by Ardour
-    </dd>
-  </dl>
-</p>
-
----
-title: Using the Ableton Push 2
-menu_title: Ableton Push 2
-part: subchapter
----
-
-<p>
-  <img alt="the Ableton Push 2 surface" src="/images/push2-main.jpg">
-</p>
-
-<p>
-  Since version 5.4, Ardour has had extensive support for the Ableton
-  Push2. This is an expensive but beautifully engineered control
-  surface primarily targetting the workflow found in Ableton's Live
-  software and other similar tools such as Bitwig. As of version 5.4, Ardour
-  does not offer the same kind of workflow, so we have designed our support for the
-  Push 2 to be used for mixing and editing and musical performance,
-  without the clip/scene oriented approach in Live. This may change in
-  future versions of Ardour.
-</p>
-
-<h2>Connecting the Push 2</h2>
-
-<p>
-  Plug the USB cable from the Push 2 into a USB2 or USB3 port on your
-  computer. For brighter backlighting, also plug in the power supply
-  (this is not necessary for use).
-</p>
-
-<p>
-  The Push 2 will be automatically recognized by your operating
-  system, and will appear in any of the lists of possible MIDI ports
-  in both Ardour and other similar software.
-</p>
-
-<p>
-  To connect the Push 2 to Ardour, open the Preferences dialog, and
-  then click on "Control Surfaces". Click on the "Enable" button
-  in the line that says "Ableton Push 2" in order to activate Ardour's
-  Push 2 support.
-</p>
-
-<p>
-  Once you select the input and output port, Ardour will initialize
-  the Push 2 and it will be ready to use. You only need do this
-  once: once these ports are connected and your session has been
-  saved, the connections will be made automatically in this and other
-  future sessions.
-</p>
-
-<h2>Push 2 Configuration</h2>
-
-<p>
-  The only configuration option at this time is whether the pads send
-  aftertouch or polyphonic pressure messages. You can alter this
-  setting via the Push 2 GUI, accessed by double-clicking on the "Push
-  2" entry in the control surfaces list.
-<p>
-
-<img alt="the Push 2 configuration dialog"
-     src="/images/push2-gui.png">
-</p>
-
-<h2>Basic Concepts</h2>
-
-<p>
-  With the Push 2 support in Ardour 5.4, you can do the following
-  things:
-  <dl>
-    <dt>Perform using the 8 x 8 pad "grid"</dt>
-    <dd>The Push 2 has really lovely pressure-sensitive pads that can
-    also generate either aftertouch or note (polyphonic) pressure.</dd>
-    <dt>Global Mixing</dt>
-    <dd>See many tracks at once, and control numerous parameters for each.</dd>
-    <dt>Track/Bus Mixing</dt>
-    <dd>View a single track/bus, with even more parameters for the track.</dd>
-    <dt>Choose the mode/scale, root note and more for the pads</dt>
-    <dd>37 scales are available. Like Live, Ardour offers both
-    "in-key" and "chromatic" pad layouts.</dd>
-  </dl>
-
-  &hellip; plus a variety of tasks related to transport control, selection,
-  import, click track control and more.
-</p>
-
-<h2>Musical Performance</h2>
-
-<p>
-  Messages sent from the 8x8 pad grid and the "pitch bend bar" are
-  routed to a special MIDI port within Ardour called "Push 2 Pads"
-  (no extra latency is incurred from this routing). Although you can
-  manually connect this port to whatever you wish, the normal
-  behaviour of Ardour's Push 2 support is to connect the pads to the
-  most recently selected MIDI track.
-</p>
-
-<p>
-  This means that to play a soft-synth/instrument plugin in a given
-  MIDI track with the Push 2, you just need to select that track.
-</p>
-
-<p>
-  If multiple MIDI tracks are selected at once, the first selected
-  track will be used. Note that messages originating from all other
-  controls on the Push 2 will <em>not</em> not be delivered to the
-  "Push 2 Pads" port. This makes no difference in practice, because
-  the other controls do not send messages that are useful for musical
-  performance.
-</p>
-
-<h2>Global Mix</h2>
-
-<p>
-  This is the default mode that Ardour will start the Push 2 in. In
-  this mode, the 8 knobs at the top of the device, the 8 buttons below
-  them, the video display and the 8 buttons below that are combined to
-  provide a global view of the session mix.
-</p>
-
-<p>
-  <img alt="global mix mode on Push2 screen"
-       src="/images/push2-globalmix.png">
-</p>
-
-<p>
-  The upper buttons are labelled by text in the video display just
-  below them. Pressing one of the buttons changes the function of the
-  knobs, and the parameters that will shown for each track/bus in the
-  display.
-</p>
-
-<p>
-  As of Ardour 5.4, the possible parameters are:
-  <dl>
-    <dt>Volumes</dt>
-    <dd>The display shows a knob and text displaying
-      the current gain setting for the track, and a meter that
-      corresponds precisely to the meter shown in the Ardour GUI for
-      that track. Changing the meter type (e.g. from Peak to K12) in the
-      GUI will also change it in the Push 2 display. The physical knob
-      will alter track/bus gain.
-    </dd>
-    <dt>Pans</dt>
-    <dd>The display shows a knob indicating the pan direction/azimuth
-    for the corresponding track/bus. Turning the physical knob will
-    pan the track left and right. If the track/bus has no panner
-    (i.e. it has only a single output), no knob is shown and the
-    physical knob will do nothing. </dd>
-    <dt>Pan Widths</dt>
-    <dd><p>For tracks with 2 outputs, the display will show a knob
-       indicating the pan width setting for the corresponding
-       track/bus. The physical knob can be turned to adjust the
-       width.
-       </p>
-
-       <p>
-       Unlike many DAWs, Ardour's stereo panners have "width"
-       parameter that defaults to 100%. You cannot change the pan
-       direction/azimuth of a track with 100% width, but must first
-       reduce the width in order to pan it. Similarly, a track panned
-       anywhere other than dead center has limits on the maximum
-       width setting. If these concepts are not familiar to you,
-       please be aware than many DAWs use a "panner" that actually
-       implement "balance" and not "panning", hence the difference.
-      </p>
-    </dd>
-    <dt>A Sends</dt>
-    <dd>The display shows a knob indicating the gain level for the
-      first send in that track. If the track has no send, no knob will
-      be shown, and the physical knob for that track will do nothing.
-    </dd>
-    <dt>B Sends, C Sends, D Sends</dt>
-    <dd>Like "A Sends", but for the 2nd, 3rd and 4th sends of a
-      track/bus respectively.
-    </dd>
-  </dl>
-</p>
-
-<p>
-  To change which tracks are shown while in global mix mode, use the
-  left and right arrow/cursor keys just below and to the right of the
-  display. Tracks and busses that are hidden in Ardour's GUI will also
-  be hidden from display on the Push 2.
-</p>
-
-<p>
-  To select a track/bus directly from the Push 2, press the
-  corresponding button below the display. The track name will be
-  highlighted, and the selection will change in Ardour's GUI as well
-  (and also any other control surfaces).
-</p>
-
-<h3>Soloing and Muting in Global Mix mode</h3>
-
-<p>
-  The Solo and Mute buttons to the left of the video display can be
-  used to solo and mute tracks while in Global Mix mode. The operation
-  will be applied to the <em>first</em> currently selected
-  track(s).
-</p>
-
-<p>
-  There are two indications that one or more tracks are soloed:
-  <ol>
-    <li>The solo button will blink red</li>
-    <li>Track names will be prefixed by "*" if they are soloed, and
-      "-" if they are muted due to soloing.</li>
-  </ol>
-</p>
-
-<p>
-  To cancel solo, either:
-  <ul>
-    <li>Select the soloed track(s) and press the solo button
-      again</li>
-    <li>Press and hold the solo button for more than 1 second</li>
-  </ul>
-</p>
-
-<h2>Track Mix</h2>
-
-<p>Track Mix mode allows you to focus on a single track in more detail
-  than is possible in Global Mix mode. To enter (or leave) Track Mix
-  mode, press the "Mix" button.
-</p>
-
-<p>
-  In Track Mix mode, various aspects of the state of the first
-  selected track/bus will be displayed on the Push 2. Above the
-  display, the first 4 knobs control track volume (gain), pan
-  directiom/azimuth, pan width, and where appropriate, track input
-  trim.
-</p>
-
-<p>
-  Below the display, 7 buttons provide immediate control of mute,
-  solo, rec-enable, monitoring (input or disk or automatic), solo
-  isolate and solo safe state. When a a track is muted due to other
-  track(s) soloing, the mute button will flash (to differentiate from
-  its state when it is explicitly muted).
-</p>
-
-<p>
-  The video display also shows meters for the track, which as in
-  Global Mix mode, precisely match the meter type shown in Ardour's
-  GUI. There are also two time displays showing the current playhead
-  position in both musical (beats|bars|ticks) format, and as
-  hours:minutes:seconds.
-</p>
-
-<p>
-  To change which track is visible in Track Mix mode, use the
-  left/right arrow/cursor keys just below and to the right of the
-  video display.
-</p>
-
-<h2>Scale Selection</h2>
-
-<p>
-  Press the Scale button to enter Scale mode. The display will look
-  like this:
-</p>
-
-<p>
-  <img alt="track mix mode on Push2 screen"
-       src="/images/push2-scale.png">
-</p>
-
-<p>
-  In the center, 37 scales are presented. Scroll through them by
-  either using the cursor/arrow keys to the lower right of the
-  display, or the knobs above the display. The scale will change
-  dynamically as you scroll. You can also scroll in whole pages using
-  the upper right and upper left buttons above the display (they will
-  display "<" and ">" if scrolling is possible).
-</p>
-
-<p>
-  To change the root note of the scale, press the corresponding button
-  above or below the video display.The button will be lit to indicate
-  your selection (and the text will be highlighted).
-</p>
-
-<p>
-  By default, Ardour configures the Push 2 pads to use "in-key" mode,
-  where all pads correspond to notes "in" the chosen scale. Notes
-  corresponding to the root note, or the equivalent note in higher
-  octaves, are highlighted with the color of the current target MIDI
-  track.
-</p>
-
-<p>
-  In
-  "chromatic" mode, the pads correspond to a continuous sequence of
-  notes starting with your selected root note. Pads corresponding to
-  notes in the scale are illuminated; those corresponding to the root
-  note are lit with the color the current target MIDI track. Other
-  pads are left dark, but you can still play them.
-</p>
-
-<p>
-  To switch between them, press button on the lower left of the video
-  display; the text above it will display the current mode (though it
-  is usually visually self-evident from the pad lighting pattern).
-</p>
-
-<p>
-  To leave Scale mode, press the "Scale" button again. You may also
-  use the upper left button above the display, though if you have
-  scrolled left, it may require more than one press.
-</p>
-
-<h2>Specific Button/Knob Functions</h2>
-
-<p>
-  In addition to the layouts described above, many (but not all) of
-  the buttons and knobs around the edges of the Push 2 will carry out
-  various functions related to their (illuminated) label. As of Ardour
-  5.4, this includes:
-  <dl>
-    <dt>Metronome (button and adjacent knob)</dt>
-    <dd>
-      Enables/disables the click (metronome). The knob directly above
-      it will control the volume (gain) of the click.
-    </dd>
-    <dt>Undo/Redo</dt>
-    <dd>
-      Undo or redo the previous editing operation.
-    </dd>
-    <dt>Delete</dt>
-    <dd>
-      Deletes the currently selected region, or range, or
-      note. Equivalent to using Ctrl/Cmd-x on the keyboard.
-    </dd>
-    <dt>Quantize</dt>
-    <dd>
-      If a MIDI region is selected in Ardour, this will open the
-      quantize dialog.
-    </dd>
-    <dt>Duplicate</dt>
-    <dd>
-      Duplicates the current region or range selection.
-    </dd>
-    <dt>Rec-Enable</dt>
-    <dd>
-      Enables and disables Ardour's global record enable state.
-    </dd>
-    <dt>Play</dt>
-    <dd>
-      Starts and stops the transport. Press Shift-Play to return to the session start.
-    </dd>
-    <dt>Add Track</dt>
-    <dd>
-      Opens Ardour's Add Track/Bus dialog.
-    </dd>
-    <dt>Browse</dt>
-    <dd>
-      Open's Ardour's import dialog to select and audition existing
-      audio and MIDI files.
-    </dd>
-    <dt>Master</dt>
-    <dd>
-      Pressing this button jumps directly to Track Mix mode, with the
-      master out bus displayed.
-    </dd>
-    <dt>Cursor arrows</dt>
-    <dd>
-      These are used by some modes to navigate within the display (e.g
-      Scale mode). In other modes, the up/down cursor arrows will
-      scroll the GUI display up and down, while the left/right cursor
-      arrows will generally scroll within the Push 2 display itself.
-    </dd>
-    <dt>Repeat</dt>
-    <dd>
-      Enables/disables loop playback. This will follow Ardour's "loop
-      is mode" preference, just like the loop button in the Ardour
-      GUI.
-    </dd>
-    <dt>Octave buttons</dt>
-    <dd>
-      These shift the root note of the current pad scale up or down by
-      1 octave.
-    </dd>
-    <dt>Page buttons</dt>
-    <dd>
-      These scroll Ardour's editor display left and right along the
-      timeline.
-    </dd>
-    <dt>Master (top right) knob</dt>
-    <dd>
-      This knob controls the gain/volume of Ardour's main output. If
-      the session has a monitor saec
-    </dd>
-  </dl>
-</p>
-
-
----
-title: Configuring MIDI
-part: chapter
----
-
-
----
-title: Using External MIDI Devices
-part: subchapter
----
-
-<p class="fixme">Add content</p>
-
-
----
-title: Setting Up MIDI
-part: subchapter
----
-
-<h2>What Can Ardour Do With MIDI?</h2>
-<p>
-  <dfn><abbr title="Musical Instrument Digital
-  Interface">MIDI</abbr></dfn> is a way to describe musical
-  performances and to control music hardware and software.
-</p>
-<p>Ardour can import and record MIDI data, and perform a variety of
-  editing operations on it. Furthermore, MIDI can be used to control
-  various functions of Ardour.
-</p>
-
-<h2>MIDI Handling Frameworks</h2>
-<p>
-  MIDI input and output for Ardour are handled by the same "engine"
-  that handles audio input and output. Up to release 3.5, that means
-  that all MIDI I/O takes place via JACK. JACK itself uses the
-  native MIDI support of the operating system to receive and send
-  MIDI data. The native MIDI support  provides device drivers for MIDI
-  hardware and libraries needed by software applications that want to
-  work with MIDI.
-</p>
-
-<dl>
-<dt>OS X</dt>
-<dd>  <dfn>CoreMIDI</dfn> is the standard MIDI framework on OSX systems.
-</dd>
-<dt>Linux</dt>
-<dd>
-  <dfn><abbr title="Advanced Linux Sound API">ALSA</abbr> MIDI</dfn>
-  is the standard MIDI framework on Linux systems.
-</dd>
-</dl>
-
-<p class="note">
-  On Linux systems, <dfn>QJackCtl</dfn> control software displays ALSA MIDI
-  ports under its "ALSA" tab (it does not currently display CoreMIDI
-  ports).  By contrast, JACK MIDI ports show up under
-  the <kbd class="menu">MIDI</kbd> tab in QJackCtl.
-</p>
-
-<h2>JACK MIDI Configuration</h2>
-<p>
-By default, JACK will <strong>not</strong> automatically detect and use existing MIDI
-ports on your system. You must choose one of several ways
-of <dfn>bridging</dfn> between the native MIDI frameworks
-(e.g. CoreMIDI or ALSA) and JACK MIDI, as described in the sections
-below.
-</p>
-
----
-title: MIDI on Linux
-part: subchapter
----
-
-<p>The right approach for using MIDI on Linux depends on which version of
-JACK you use. The world divides into:</p>
-
-<dl>
-<dt>Systems using JACK 1, versions 0.124 or later</dt>
-<dd>On these systems, just start JACK with the <code>-X alsa_midi</code> server argument. To support legacy control applications, you can also use the <code>-X seq</code> argument to the ALSA backend of JACK and get the exact same results.</dd>
-<dt>All others</dt>
-<dd>Use a2jmidid to act as a bridge between ALSA MIDI and JACK. Do not use the <code>-X seq</code> or <code>-X raw</code> arguments&mdash;the timing and performance of these options is not acceptable.
-</dd>
-</dl>
-
-<h2>a2jmidid</h2>
-
-<p>
-  <dfn>a2jmidid</dfn> is an application that bridges between the system
-  <abbr title="Musical Instrument Digital Interface">MIDI</abbr> ports and
-  <abbr title="JACK Audio Connection Kit">JACK</abbr>.
-</p>
-
-<p>
-  First you should make sure that there is no ALSA sequencer support enabled
-  in JACK. To do that open QJackCtl's <kbd class="menu">Setup</kbd> window.
-</p>
-
-<p>
-  Set <kbd class="menu">Settings &gt; MIDI Driver</kbd> to <kbd
-  class="input">none</kbd>.
-  Then uncheck the <kbd class="optoff">Misc &gt; Enable ALSA Sequencer
-  support</kbd> option.<br />
-  Now it's time to restart your jack server before going on.
-</p>
-
-<h3>Check for a2jmidid availability</h3>
-
-<p>
-  First, check whether a2jmidid is already installed in your system. After
-  starting your JACK server, go to the command line and type
-</p>
-
-<kbd class="cmd lin">a2jmidid -e</kbd>
-
-<p>
-  If a2jmidid does not exist, install it with the software manager of your
-  Linux distribution and try again.
-</p>
-
-<h2>Check available MIDI ports</h2>
-
-<p>
-  If you have correctly configured JACK for MIDI, then your MIDI ports should appear in
-  qjackctl under <kbd class="menu">Connections &gt; MIDI </kbd>.
-</p>
-
-<h3>Making it automatic</h3>
-
-<p>
-Once you've verified that the ports appear in JACK as expected, you
-can make this happen whenever you start JACK.
-</p>
-
-<p>If you use a newer version of JACK 1, just make sure the -X
-alsa_midi or -X seq options are enabled for whatever technique you use
-to start JACK.
-</p>
-
-<p>
-For other versions of JACK,
-add <kbd class="input">a2jmidid -e &amp;</kbd> as an "after start-up" script
-in the <kbd class="menu">Setup &gt; Options</kbd> tab of QJackCtl, so
-that it is started automatically whenever you start JACK.
-</p>
-
-<p class="fixme">Is this true anymore in Ardour 5? This section may have been relevant in Ardour 3, but it might not be relevant anymore.</p>
-
----
-title: MIDI on OS X
-part: subchapter
----
-
-<p>
-  In order for CoreMIDI to work with Jack MIDI, a CoreMIDI-to-JACK-MIDI
-  <dfn>bridge</dfn>
-  is required. This feature is available on versions equal to or great than
-  version 0.89 of JackOSX.
-</p>
-
-<h2>Routing MIDI</h2>
-
-<h3>Inside Ardour</h3>
-
-<p>
-  MIDI ports show up in Ardour's MIDI connection matrix in multiple
-  locations. Bridged CoreMIDI ports as well as JACK MIDI ports that have
-  been created by other software clients will show up under the "Other" tab.
-  Bridged CoreMIDI hardware ports show up under the "Hardware" tab.
-</p>
-
-<h3>External Applications</h3>
-
-<p>
-  There are multiple options for connecting MIDI ports outside of Ardour.
-</p>
-
-<ul>
-  <li><a href="http://www.snoize.com/MIDIMonitor/">MIDI Monitor</a> is a handy
-  tool for doing various MIDI-related tasks.</li>
-  <li><a href="http://notahat.com/midi_patchbay">MIDI Patchbay</a> lets you
-  connect ports and filters MIDI data.</li>
-</ul>
-
-
-
-
----
-title: Ardour's Interface
-part: part
----
-
-
----
-title: About Ardour's Interface
-part: chapter
----
-
-<p>
-  In Ardour, you work in two main windows: the <dfn>Editor</dfn> and the
-  <dfn>Mixer</dfn>.
-</p>
-<figure>
-       <img src="/images/editor_split.png" alt="Ardour's mixer window">
-       <img src="/images/mixer_split.png" alt="Ardour's editor window">
-       <figcaption>
-               <ol class="multicol4">
-                       <li>Main menu</li>
-                       <li>Status bar</li>
-                       <li>Transport bar & Times</li>
-</ol><ol class="multicol4" start="4">
-                       <li>Mode switch</li>
-                       <li>The <dfn>Editor</dfn> window</li>
-                       <li>a track's mixer strip</li>
-</ol><ol class="multicol4" start="7">
-                       <li>Editors List</li>
-                       <li>The <dfn>Mixer</dfn> window</li>
-                       <li>Favorite plugins</li>
-</ol><ol class="multicol4" start="10">
-                       <li>Strips list</li>
-                       <li>Group list</li>
-                       <li>Master strip</li>
-               </ol>
-       </figcaption>
-</figure>
-<p>
-  To switch between those windows, use the buttons (#4 Mode switch in the upper right),
-  the shortcut <kbd class="mod2">M</kbd>, or the menu
-  <kbd class="menu">Window > Editor <em>(or Mixer)</em> > Show</kbd>.
-  Both windows can be visible at the same time (eg. for a multi-monitor
-  setup) using <kbd class="menu">Detach</kbd> in the same menu.</p>
-
 
 ---
 title: Main Menu
@@ -7018,7 +4293,9 @@ part: chapter
 ---
 
 <img src="/images/status-bar.png" alt="The status bar">
+
 <p>The status bar is an informative bar at the top of the window, showing:</p>
+
 <ul>
   <li><dfn>File:</dfn> the file format used in the session, including when recording</li>
   <li><dfn>TC:</dfn> is the timecode, i.e. the number of frames per second used by the session (for videos)</li>
@@ -7031,7 +4308,7 @@ part: chapter
   <li><dfn>a Log button</dfn> that indicates if Ardour has encountered any warning or error.</li>
 </ul>
 
-<p>The buffers are labelled as <kbd class="menu">p</kbd> for playback and <kbd class="menu">c</kbd> for capture. If the
+<p>The buffers are labeled as <kbd class="menu">p</kbd> for playback and <kbd class="menu">c</kbd> for capture. If the
 system is fast enough, these buffers should be 100% full at all times, showing the system has time to precompute
 all the data before delivering it to the audio system. A buffer constantly under 20% is a sign of an underpowered
 computer system or of too much processing.</p>
@@ -7039,7 +4316,7 @@ computer system or of too much processing.</p>
 <p>An Xrun (short for buffer over- or under-run) happens when the system has been forced to skip audio frames, e.g. if the latency
 asked is too short for the computing power of the machine. It usually results in clicks, pops and crackles if it happens while recording.</p>
 
-<p>The log button turns yellow when a warning is shows, and red when an error occurs. Clicking the log button gives acces to the log.</p>
+<p>The log button turns yellow when a warning occurs, and red when an error occurs. Clicking the log button gives acces to the log.</p>
 
 ---
 title: Transport bar and times
@@ -7061,15 +4338,15 @@ part: chapter
 </p>
 
 <ul>
-  <li><a href="/controlling-playback/using-the-transport-bar/">the Transport Controls</a></li>
-  <li><a href="/ardours-interface/using-ardour-clock-displays/">the Clocks</a></li>
+  <li>the Transport Controls</li>
+  <li>the Clocks</li>
   <li>3 status indicators:
     <ul>
       <li><dfn>Solo</dfn>: Blinks when one or more tracks are being soloed, see <a href="/mixing/muting-and-soloing/">Muting and Soloing</a>. Clicking this button disables any active explicit and implicit solo on all tracks and busses.</li>
       <li><dfn>Audition</dfn>: Blinks when using the import dialog to audition material.</li>
       <li><dfn>Feedback</dfn>: Blinks when Ardour detects a <dfn>feedback loop</dfn>, which happens when the output of an audio signal chain is plugged back to its input. This is probably not wanted and can be dangerous for the hardware and the listener.</li>
     </ul></li>
-  <li>A global Meter, showing the level of the Master Output, see <a href="/ardours-interface/meters/">Metering in Ardour</a></li>
+  <li>A global Meter, showing the level of the Master Output, see <a href="/introducing-ardour/meters/">Metering in Ardour</a></li>
   <li>the Mode Selector, allowing to switch between Editor and Mixer views, or edit the Preferences.</li>
 </ul>
 
@@ -7105,7 +4382,7 @@ part: subchapter
     <dfn>Play Loop Range</dfn>: Repeats the defined <a href="/controlling-playback/looping-the-transport/">loop</a> as defined by the <a href="/working-with-markers/loop-range/">Loop range</a>, until the "Stop playback" button is pressed. Clicking the "Play loop Range" button while already active switches to normal Play mode, which exits the loop without stopping and restarting playback.
   </li>
   <li>
-    <dfn>Play Range/Selection</dfn>: If a range has been defined using the Range Mode button, plays the range, of if an audio or MIDI region is selected, plays this region. In both cases, the playback stops at the end of the range or selected region.
+    <dfn>Play Range/Selection</dfn>: If a range has been defined using the Range Mode button, plays the range; or if an audio or MIDI region is selected, plays this region. In both cases, the playback stops at the end of the range or selected region.
   </li>
   <li>
     <dfn>Play from playhead</dfn>: Starts the playback and optionally record (more below).
@@ -7129,7 +4406,7 @@ part: subchapter
 </p>
 
 <p>
-  The Shuttle Speed Control supports 2 operating modes, that can be chosen with right click > Mode:
+  The Shuttle Speed Control supports 2 operating modes, that can be chosen with right click &gt; Mode:
 </p>
 
 <ul>
@@ -7142,7 +4419,7 @@ part: subchapter
 <p>
 
 <p>
-  The 3 vertical buttons on the right of the transport bar control the behaviour of the playhead:
+  The 3 vertical buttons on the right of the transport bar control the behavior of the playhead:
 </p>
 
 <ul>
@@ -7157,16 +4434,40 @@ part: subchapter
   </li>
 </ul>
 
+<h2>Using Key Bindings</h2>
+
+<p>
+  Ardour has many available commands for playback control that can be bound 
+  to keys. Many of them have default bindings, some do not, so the list below 
+  shows both the default bindings and internal command names for some of them.
+</p>
+
+<dl class="wide-table">
+  <dt><kbd>Space</kbd></dt>
+  <dd>switch between playback and stop.</dd>
+  <dt><kbd>Home</kbd></dt>
+  <dd>Move playhead to session start marker</dd>
+  <dt><kbd>End</kbd></dt>
+  <dd>Move playhead to session end marker</dd>
+  <dt><kbd>&rarr;</kbd></dt>
+  <dd>Playhead to next region boundary</dd>
+  <dt><kbd>&larr;</kbd></dt>
+  <dd>Playhead to previous region boundary</dd>
+  <dt><kbd>0</kbd></dt>
+  <dd>Move playhead to start of the timeline</dd>
+</dl>
+
+<p>
+  Go to the <kdb class="menu">Transport</kbd> and <kdb class="menu">Transport &gt> Playhead</kbd> to find more.
+</p>
+
 ---
 title: Times
 part: subchapter
 ---
 
 <p>
-  <dfn>Clocks</dfn> in Ardour are used to display <dfn>time values</dfn> precisely.
-  In many cases, they are also one way to edit (change) time values, and in a few
-  cases, the only way. All clocks share the same basic appearance and functionality,
-  which is described below, but a few clocks serve particularly important roles.
+  <dfn>Clocks</dfn> in Ardour are used to display <dfn>time values</dfn> precisely. In many cases, they are also one way to edit (change) time values, and in a few cases, the only way. All clocks share the same basic appearance and functionality, which is described below, but a few clocks serve particularly important roles.
 </p>
 
 <h2>Transport Clocks</h2>
@@ -7188,6 +4489,7 @@ part: subchapter
 </p>
 
 <h3>The Big Clock</h3>
+
 <p>
   To show the current playhead position in a big, resizable window, activate
   <kbd class="menu">Window &gt; Big Clock</kbd>. The big clock is very useful
@@ -7198,17 +4500,21 @@ part: subchapter
   large big clock window filling a good part of the display, and on the right,
   the same clock during active recording.
 </p>
+
 <a href="/images/bigclock.png"><img src="/images/bigclock.png" height="100" alt="an image of the big clock filling a screen" /></a> <a href="/images/bigclock-recording.png"><img src="/images/bigclock-recording.png" height="100" alt="an image of the big clock while recording"
 /></a>
 
 <h3>The Special Role of the Secondary Transport Clock</h3>
+
 <p>
   On a few occasions Ardour needs to display time values to the user, but there
   is no obvious way to specify what units to use. The most common case is the big
   cursor that appears when dragging regions. For this and other similar cases,
   Ardour will display time using the same units as the secondary clock.
 </p>
+
 <h4>Why are there two transport clocks?</h4>
+
 <p>
   Having two transport clocks lets you see the playhead position in two different
   time units without having to change any settings. For example, you can see the
@@ -7216,6 +4522,7 @@ part: subchapter
 </p>
 
 <h3>Selection and Punch Clocks</h3>
+
 <p>
   The transport bar also contains a set of 5 clocks that show the current
   <dfn>selection range</dfn> and <dfn>punch ranges</dfn>. Clicking on the punch
@@ -7228,6 +4535,7 @@ part: subchapter
 <img src="/images/selectionpunchclocks.png" alt="An image of the the selection and punch clocks in Ardour 3" />
 
 <h2>Clock Modes</h2>
+
 <p>
   Every clock in Ardour has four different, selectable <dfn>clock
   modes</dfn>. Each mode displays time using different units.
@@ -7367,13 +4675,34 @@ title: The Editor
 part: chapter
 ---
 
+<figure>
+  <img src="/images/detailed-editor-window.png" alt="Ardour's editor windo
+w">
+  <figcaption>
+  <ol class="multicol4">
+    <li>Toolbar</li>
+    <li>Rulers</li>
+</ol><ol class="multicol4" start="3">
+    <li>Editor's List</li>
+    <li>a Mixer strip</li>
+</ol><ol class="multicol4" start="5">
+    <li>Summary</li>
+    <li>an audio track</li>
+  </ol>
+</ol><ol class="multicol4" start="7">
+    <li>a MIDI track</li>
+    <li>automation</li>
+  </ol>
+  </figcaption>
+</figure>
+
 <p>
   The <dfn>Editor</dfn> window includes the editor track <dfn>canvas</dfn>
   where you can arrange audio and MIDI data along a timeline. This is the
   window you will be in while editing and arranging a project. The window
   has a general "horizontal" sense to it: the timeline flows from left to
   right, the playhead showing the current position in the session moves
-  from left to right &mdash; the window really represents <dfn>time</dfn>
+  from left to right&mdash;the window really represents <dfn>time</dfn>
   in a fairly literal way.
 </p>
 
@@ -7381,7 +4710,7 @@ part: chapter
   It is possible to show a single channel strip in the editor window, and
   some people find this enough to work on mixing without actually opening
   the mixer window. Most of the time though, you will want both of these
-  windows at various stages of a session's lifetime &mdash; sometimes
+  windows at various stages of a session's lifetime&mdash;sometimes
   you'll be focused on editing, sometimes on mixing and possibly some of
   the time on both.
 </p>
@@ -7409,21 +4738,21 @@ part: chapter
                </ol><ol class="multicol5" start="4">
                        <li>Edit Point</li>
     </ol><ol class="multicol5" start="5">
-                       <li>Nudge</li>
+                       <li>Nudge</li>
                </ol>
        </figcaption>
 </figure>
 
 <p>
-  The Toolbar is made of 5 "zones"
-</p
+  The Toolbar is made of 5 parts, described in this part.
+</p>
 
 ---
-title: The Toolbar
+title: The Toolbox
 part: subchapter
 ---
 
-<img src="/images/toolbar-tools.png" alt="Editor toolbar's tools">
+<img src="/images/toolbar-tools.png" alt="Editor toolbar's tools, aka toolbox">
 
 <h2>Global Edit mode</h2>
 
@@ -7529,11 +4858,8 @@ part: subchapter
   On a MIDI region, it allows to lasso-select multiple notes at a time.</dd>
 </dl>
 
-
-
 <p class="fixme">Make sure the Internal Edit and Draw tool act as described</p>
 
-
 ---
 title: the Zoom Controls
 part: subchapter
@@ -7757,25 +5083,49 @@ part: subchapter
 
 
 ---
-title: the Nudge Controls
+title: The Nudge Controls
+part: subchapter
+---
+
+<img class="left" src="/images/toolbar-nudge.png" alt="Editor toolbar's Nudge">
+
+<p>
+  The <dfn>nudge controls</dfn> will move the selected region(s) by a fixed amount of time. The left and right buttons move either backward or forward in time, and the small clock to the left of these buttons sets the amount of time to nudge by. As with all other clocks, you can right-click on the clock to choose the time representation you want to use.
+</p>
+
+<p>
+  If there are no selected objects, the nudge controls can be used to move the playhead backward or forward by the amount shown on the clock.
+</p>
+
+---
+title: The Ruler
 part: subchapter
 ---
 
-<img class="left" src="/images/toolbar-nudge.png" alt="Editor toolbar's Nudge">
+<img src="/images/ruler.png" alt="Ardour's Ruler">
 
 <p>
-  The <dfn>nudge controls</dfn> will move the selected region(s) by a fixed amount
-  of time. The left and right buttons move either backward or forward in time, and the small
-  clock to the left of these buttons sets the amount of time to nudge by.
-  As with all other clocks, you can right-click on the clock to choose the
-  time representation you want to use.
+  The <dfn>Ruler</dfn> scales the session along time, allows navigating, and can be marked for different uses. The main use of the Ruler is to move the playhead: clicking anywhere on the timeline will bring the playhead at this location in time.
 </p>
 
 <p>
-  If there are no selected objects, the nudge controls can be
-  used to move the playhead backward or forward by the amount shown on the clock.
+  It is made of a succession of rows, each having a special role related to time.From top to bottom, those rows are :
 </p>
 
+<dl>
+  <dt><dfn>Timecode</dfn></dt><dd>scaling the session whith the traditional Hours:Mins:Secs:Frames notation</dd>
+  <dt><dfn>Bars:Beats</dfn></dt><dd>slicing the time according to the time signature ot the Meter</dd>
+  <dt><dfn>Meter</dfb></dt><dd>shows the time signature. It can be changed along the timeline, by <kbd class="mouse">Right click</kbd> &gt; <kbd class="menu">New Meter</kbd>. The Bars:Beats ruler will reflect the change.</dd>
+  <dt><dfn>Tempo</dfn></dt><dd>shows the BPM. It can be changed along the timeline, by <kbd class="mouse">Right click</kbd> &gt; <kbd class="menu">New Tempo</kbd>. The Bars:Beats ruler will reflect the change.</dd>
+  <dt><dfn>Range Markers</dfn></dt><dd>allow to create and modify ranges directly on the Ruler.</dd>
+  <dt><dfn>Loop/Punch Ranges</dfn></dt><dd>are special kind of ranges designed to be played as a loop and to do punch recording, i.e. recording on a precise section of time, respectively.</dd>
+  <dt><dfn>CD Markers</dfn></dt><dd>are markers designed to be used while creating a recording that has to be split in time, as an audio CD</dd>
+  <dt><dfn>Location Markers</dfn></dt><dd>is meant to receive any kind of marker, user generated or from Ardour itself.</dd>
+</dl>
+
+<p>
+  Most of the operations on the markers are described in <a href="/working-with-markers/">Working with Markers</a>, while the Meter, Tempo, Bars:Beats and Timecode use are described in <a href="/tempo-meter/tempo-and-meter/">Tempo and Meter</a>.
+</p>
 
 
 ---
@@ -7793,7 +5143,6 @@ part: chapter
   vary the width of the list.
 </p>
 
-
 ---
 title: Region List
 part: subchapter
@@ -7840,7 +5189,7 @@ part: subchapter
 </p>
 
 ---
-title: Tracks &amp; Busses List
+title: Tracks and Busses List
 part: subchapter
 ---
 
@@ -7866,7 +5215,7 @@ part: subchapter
   <dt id="solo-isolated">SI</dt>
   <dd>track solo-isolated state.</dd>
   <dt id="solo-safe">SS</dt>
-  <dd>solo safe state. </dd>
+  <dd>solo safe state.</dd>
 </dl>
 
 <p class="note">
@@ -7893,7 +5242,7 @@ part: subchapter
 </p>
 
 ---
-title: Track &amp; Bus Group List
+title: Track and Bus Group List
 part: subchapter
 ---
 
@@ -7929,22 +5278,16 @@ part: subchapter
   <dt>Sel</dt>
   <dd>whether the constituents are selected together.</dd>
   <dt>A</dt>
-  <dd>whether the constituents share active status. </dd>
+  <dd>whether the constituents share active status.</dd>
 </dl>
 
 ---
-title: Ranges &amp; Marks List
+title: Ranges and Marks List
 part: subchapter
 ---
 
 <p>
-  The <dfn>Ranges &amp; Marks List</dfn> is a tab in the <dfn>Editor
-  Lists</dfn> area on the right of the Editor window. If the editor
-  list area isn't visible it can be enabled by checking
-  <kbd class="option">View &gt; Show Editor List</kbd>.
-  The Ranges &amp; Marks list can be used as a single point
-  of control for all range and location markers (including the punch and
-  loop ranges), or as a supplement to other methods of working with them.
+  The <dfn>Ranges &amp; Marks List</dfn> is a tab in the <dfn>Editor Lists</dfn> area on the right of the Editor window. If the editor list area isn't visible it can be enabled by checking <kbd class="option">View &gt; Show Editor List</kbd>. The Ranges &amp; Marks list can be used as a single point of control for all range and location markers (including the punch and loop ranges), or as a supplement to other methods of working with them.
 </p>
 
 <h2>Common elements</h2>
@@ -7964,11 +5307,13 @@ part: subchapter
   changing of the display between Timecode, Bars:Beats, Minutes:Seconds,
   and Samples.<br />
 </p>
+
 <p>
  The <kbd class="menu">&mdash;</kbd> (subtract) button in front of each
  user-defined range or marker in the list allows that particular item to
  be removed. The name fields of custom ranges and markers can be edited.
 </p>
+
 <p>
   The <kbd class="option">Hide</kbd> checkboxes make markers and ranges invisible
   on the respective ruler to reduce visual clutter; the markers remain
@@ -7980,6 +5325,7 @@ part: subchapter
   than the absolute time. This will make the respective marker follow
   changes in the tempo map.
 </p>
+
 <p>
   At the bottom of the list are buttons to add new markers or ranges.
 </p>
@@ -8002,26 +5348,39 @@ part: subchapter
   that may contain audio data between tracks.</dd>
 </dl>
 
+---
+Title: The Summary
+part: subchapter
+---
 
+<img src="/images/summary.png" alt="Ardour's Summary">
 
+<p>
+  The <dfn>Summary</dfn> is a global overview of the session, allowing for a good "bird's eye" view of where in time and tracks the work happens.
+</p>
 
+<p>
+  Each horizontal line represents a track in the session, with the colored bars being the audio and MIDI regions, colored as per their track's color setting.
+</p>
 
+<p>
+  Two yellow vertical lines show the position of the <em>Start</em> and <em>End</em> markers, defining the session's length. The red line shows the playhead's position.
+</p>
 
+<p>
+  The transparent white rectangle represents what's actually displayed in the Editor window, i.e. what part of the session is beign looked at on screen.
+</p>
 
+<p>
+  The Summary also doubles as a navigator:
+</p>
 
-
-
-
-
-
-
-
-
-
-
-
-
-
+<ul>
+  <li>the arrows on the left allow to scroll the view horizontally, by 1 length of the veiw each time</li>
+  <li>the arrows on the right allow to scroll vertically, by 1 track each time</li>
+  <li>the white rectangle can be dragged anywhere on the session, moving the view accordingly</li>
+  <li>each border and corner of the white square can be resized, changing the view accordingly</li>
+</ul>
 
 
 ---
@@ -8029,16 +5388,29 @@ title: The Mixer
 part: chapter
 ---
 
+<figure>
+  <img src="/images/detailed-mixer-window.png" alt="Ardour's mixer window">
+  <figcaption>
+  <ol class="multicol3">
+    <li>Favorite Plugins</li>
+    <li>Strip List</li>
+</ol><ol class="multicol3" start="3">
+    <li>Group list</li>
+    <li>a track's strip</li>                        
+</ol><ol class="multicol3" start="5">
+    <li>Master strip</li>
+    <li>Monitor section</li>
+  </ol>
+  </figcaption>
+</figure>
+
 <p>
-  The <dfn>Mixer</dfn> window on the other hand represents signal flow and
-  is the window you will probably be using most when mixing a session. It
-  includes <dfn>channel strips</dfn> for each track and bus in your session.
-  It has a general "vertical" sense to it: signals flow from the top of each
-  channel strip through the processing elements in the strip to reach the
-  output listed at the bottom.
+  The <dfn>Mixer</dfn> window on the other hand represents signal flow and is the window you will probably be using most when mixing a session. It includes <dfn>channel strips</dfn> for each track and bus in your session. It has a general "vertical" sense to it: signals flow from the top of each channel strip through the processing elements in the strip to reach the output listed at the bottom.
 </p>
 
-
+<p>
+  This section describes the Mixer. To learn more about the process of mixing, see <a href="/mixing/">Mixing<a>.
+</p>
 
 ---
 title: The Mixer - Favorite Plugins Window
@@ -8075,21 +5447,91 @@ part: subchapter
   When favorites are added with the <a href="/working-with-plugins/plugin-manager">Plugin Manager</a>, they are appended to the bottom of the list.
 </p>
 
-
-
 ---
 title: The Mixer - The Strips list
 part: subchapter
 ---
 
-<p class="fixme">add content</p>
+<p>
+  The <dfn>Strips List</dfn> is a quick way to manage big sessions, with lots of tracks, where the mixer would otherwise be too crowded.
+</p>
+
+<p>
+  It is a list of all the tracks, busses and VCA in the session, with a tick to allow for hiding or showing them. This visibility status also affects the Editor view, and is exactly the same as toggling the <kbd class="option">V</kbd> checkbox in the <a href="/ardours-interface/the-editor/the-editor_s-lists/tracks-and-busses-list/">Tracks and Busses</a> panel of the Editor List.
+</p>
+
+<p>
+  Dragging and dropping tracks inside the Strips List allows to reorganise the tracks in the session, both in the Mixer and the Editor.
+</p>
+
+<p>
+  It is possible, by <kbd class="mouse">right</kbd> clicking, to act on multiple tracks at once:
+</p>
+
+<ul>
+  <li>Show All</li>
+  <li>Hide All</li>
+  <li>Show All Audio Tracks</li>
+  <li>Hide All Audio Tracks</li>
+  <li>Show All Audio Busses</li>
+  <li>Hide All Audio Busses</li>
+  <li>Show All MIDI Tracks</li>
+  <li>Hide All MIDI Tracks</li>
+</ul>
+
+<p>
+  The <kbd class="menu">&plus;</kbd> button under the list is a shortcut to create a new track, bus or VCA, as in clicking <kbd class="menu">Track &gt; Add Track, Bus or VCA&hellip;</kbd>.
+</p>
 
 ---
 title: The Mixer - The Groups list
 part: subchapter
 ---
 
-<p class="fixme">add content</p>
+<p>
+  The <dfn>Goups List</dfn> allows to quickly manage the <a href="/working-with-tracks/track-and-bus-groups/">groups</a> of the session, and make use of them.
+</p>
+
+<p>
+  Each group has a <kbd class="option">Show</kbd> checkbox to quickly toggle their visibility. Clicking an already selected group allows to rename it.
+</p>
+
+<p>
+  The context menu, reached by <kbd class="mouse">right</kbd> clicking a group, allows for multiple mixing actions:
+</p>
+
+<dl>
+  <dt>Create New Group From...</dt><dd>Creates a new group based on some track properties. The choice is :
+    <ul>
+      <li><kbd class="menu">Selection...</kbd> to create a group of all selected tracks</li>
+      <li><kbd class="menu">Record Enabled...</kbd> to create a group of all the tracks that are record enabled</li>
+      <li><kbd class="menu">Soloed...</kbd> to create a group of all the soloed tracks</li>
+    </ul></dd>
+  <dt>Create New Group with Master From...</dt><dd>Acts exactly as the previous choice, but also creates a Control Master tied to these tracks.</dd>
+  <dt>Assign Selection to Control Master...</dt><dd>Allows to link all the selected tracks to a chosen Control Master, whether or not they belong to a group.</dd>
+  <dt>Assign Record Enabled to Control Master...</dt><dd>Allows to link all the record armed tracks to a chosen Control Master.</dd>
+  <dt>Assign Soloed to Control Master...</dt><dd>Allows to link all the soloed tracks to a chosen Control Master.</dd>
+  <dt>Enable All Groups</dt><dd>Enable all the groups, i.e. their selected properties are synchronized.</dd>
+  <dt>Disable All Groups</dt><dd>Disable all the groups, i.e. changing a property in a track won't affect the others.</dd>
+</dl>
+
+<p>
+  When a group is selected, <kbd class="mouse">right</kbd> clicking it adds the following menu entries :
+</p>
+
+<dl>
+  <dt>Create New Group with Master From...</dt><dd>Acts exactly as the previous choice, but also creates a Control Master tied to these tracks.</dd>
+  <dt>Edit Group...</dt><dd>Shows the <kbd class="menu">Track/bus Group</kbd> <a href="/working-with-tracks/track-and-bus-groups/">window</a>.</dd>
+  <dt>Collect Group</dt><dd>Rearranges the tracks/busses order to visualy group together the tracks belonging to the same group.</dd>
+  <dt>Remove Group</dt><dd>Deletes the group (but not the tracks/busses belongidng to this group).</dd>
+  <dt>Assign Group to Control Master...</dt><dd>Allows to link all the tracks in the group to a chosen VCA.</dd>
+  <dt>Add/Remove Subgroup Bus</dt><dd>Creates/removes a new bus connected to the Master, and send the output of all the tracks in the group to this new bus.</dd>
+  <dt>Add New Aux Bus (pre/post-fader)</dt><dd>Creates a new bus connected to the Master, and create <a href="/signal-routing/aux-sends/">Aux Sends</a> (pre or post-fader) in all the tracks in the group to this new bus.</dd>
+</dl>
+
+<p>
+  The <kbd class="menu">&plus;</kbd> button under the list allows the creation of an (empty) group, while the <kbd class="menu">&minus;</kbd> button deletes the selected group (but not the tracks in this group).
+</p>
 
 ---
 title: The Mixer - The Master Strip
@@ -8098,7 +5540,6 @@ part: subchapter
 
 <p class="fixme">add content</p>
 
-
 ---
 title: The Mixer - The Monitor Section
 part: subchapter
@@ -8107,9 +5548,6 @@ part: subchapter
 <p class="fixme">add content</p>
 
 
-
-
-
 ---
 title: Sessions & Tracks
 part: part
@@ -8126,6 +5564,7 @@ part: chapter
 title: New/Open Session Dialog
 part: subchapter
 ---
+
 <p class="fixme">Info is out of date, image needs updating</p>
 
 <p>
@@ -9374,37 +6813,13 @@ part: subchapter
 ---
 
 <p>
-  Every track and bus in Ardour is assigned a <dfn>remote control ID</dfn>.
-  When a <a href="/using-control-surfaces/">control surface</a> or any other
-  remote control is used to control Ardour, these IDs are used to identify
-  which track(s) or buss(es) are the intended target of incoming commands.
-</p>
-
-<p>
-  By default, remote IDs will be assigned to tracks and busses in the order
-  that they are created, starting from 1. The master bus and monitor section
-  have their own unique IDs (318 and 319).
+  Every track and bus in Ardour is assigned a <dfn>remote control ID</dfn>. When a <a href="/using-control-surfaces/">control surface</a> or any other remote control is used to control Ardour, these IDs are used to identify which track(s) or buss(es) are the intended target of incoming commands.
 </p>
 
 <p>
-  Ardour provides two methods to control remote control IDs, which can be
-  chosen via <kbd class="menu">Edit &gt; Preferences &gt; Control Surfaces
-  &gt; Control surface remote ID</kbd>:
+  Remote IDs will be assigned to tracks and buses in the order that they appear in the mixer window from left to right, starting from 1. Manual assignment of remote IDs is not possible. The master bus and monitor section can be accessed by name.
 </p>
 
-<dl class="wide-table">
-  <dt>follows order of mixer</dt>
-  <dd>This will reset the remote control IDs to match the mixer and editor
-  track order order, starting with rcID 1. Manual assignment of rcIDs is
-  not possible.</dd>
-  <dt>assigned by user</dt>
-  <dd>When enabled, the remote control ID is completely independent of the
-  ordering in either window, and may be changed manually by the user via the
-  <kbd class="menu"><em>trackname</em> &gt; Remote Control ID...</kbd>
-  dialog in each mixer strip.
-  </dd>
-</dl>
-
 ---
 title: Bus Controls
 part: subchapter
@@ -9815,8 +7230,6 @@ part: chapter
 ---
 
 
-
-
 ---
 title: Playback & Recording
 part: part
@@ -9829,43 +7242,19 @@ part: chapter
 ---
 
 
-
-
 ---
-title: Looping the Transport
+title: Controlling Playback
 part: subchapter
 ---
 
-<p>
-  When the <dfn>loop transport</dfn> button is pressed, the playhead will
-  jump the start of the loop range, and continue to the end of that range
-  before returning to the start and repeating.
-  While looping, a light green area is displayed in the time ruler over
-  the tracks to show the loop range.
-</p>
-
-<p>
-  By default, looping is bound to the <kbd>l</kbd> key.
-</p>
-
-<p>
-  For more information on defining and altering the loop range see
-  <a href="/working-with-markers/the-loop-range">Loop Range Markers</a>.
-</p>
-
-<p class="fixme">Broken link</p>
-
----
-title: Positioning the Playhead
-part: subchapter
----
+<h2>Positioning the Playhead</h2>
 
 <p>
   The <dfn>playhead</dfn> is a vertical line with two arrows at each end
   that indicates the current position of playback.
 </p>
 
-<h2>Positioning the playhead at the current pointer position</h2>
+<h3>Positioning the playhead at the current pointer position</h3>
 
 <p>
   Pressing <kbd>P</kbd> will set the playhead to the current position of
@@ -9879,7 +7268,7 @@ part: subchapter
   will move the playhead to that position.
 </p>
 
-<h2>Positioning the playhead with the transport clocks</h2>
+<h3>Positioning the playhead with the transport clocks</h3>
 
 <p>
   Click on either the primary or secondary transport clock and
@@ -9887,7 +7276,7 @@ part: subchapter
   to move the playhead to a specific position.
 </p>
 
-<h2>Positioning the playhead at a marker</h2>
+<h3>Positioning the playhead at a marker</h3>
 
 <p>
   Click <kbd class="mouse">Right</kbd> on the marker and select either
@@ -9902,6 +7291,22 @@ part: subchapter
    markers <dfn>start</dfn> and <dfn>end</dfn>, respectively.
 </p>
 
+<h2>Looping the Transport</h2>
+
+<p>
+  When the <dfn>loop transport</dfn> button is pressed, the playhead will jump the start of the loop range, and continue to the end of that range before returning to the start and repeating. While looping, a light green area is displayed in the time ruler over the tracks to show the loop range.
+</p>
+
+<p>
+  By default, looping is bound to the <kbd>l</kbd> key.
+</p>
+
+<p>
+  For more information on defining and altering the loop range see <a href="/working-with-markers/the-loop-range">Loop Range Markers</a>.
+</p>
+
+<p class="fixme">Broken link</p>
+
 ---
 title: Using Key Bindings
 part: subchapter
@@ -12978,7 +10383,7 @@ part: subchapter
 <h3>Audio Busses vs MIDI Busses</h3>
 
 <p>
-       Ardour supports 2 types of busses: Audio and MIDI. A MIDI bus differs from an audio bus just by its input (which is 1 midi input instead of <em>n</em> audio), the fact that you can put an instrument on it at creation time, whereas you can't easily add an instrument to an audio bus.
+  Ardour supports 2 types of busses: Audio and MIDI. A MIDI bus differs from an audio bus just by its input (which is 1 midi input instead of <em>n</em> audio), the fact that you can put an instrument on it at creation time, whereas you can't easily add an instrument to an audio bus.
 </p>
 
 <p>
@@ -13019,6 +10424,10 @@ part: subchapter
 
 <h2>VCAs</h2>
 
+<p class="fixme">
+  Reword this section to Control MAster, separate from Busses, Detail the fact a track can have multiple VCA attached
+</p>
+
 <img class="left" src="/images/vcas.png" alt="VCAs strips">
 
 <p>
@@ -16121,6 +13530,146 @@ part: subchapter
 </p>
 
 
+---
+title: Open Sound Control (OSC)
+part: part
+---
+
+
+---
+title: Controlling Ardour with OSC
+include: controlling-ardour-with-osc.html
+part: chapter
+---
+
+---
+title: OSC&#58; Controlling Ardour with OSC
+include: osc-control.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Using the Setup Dialog
+include: osc-setup-dialog.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Querying Ardour
+include: querying-ardour-with-osc.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Feedback
+include: feedback-in-osc.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Feedback and Strip-types Values
+include: calculating-feedback-and-strip-types-values.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Personal Monitoring Control
+include: osc-personal-monitoring.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Parameter Types
+include: parameter-types-in-osc.html
+part: subchapter
+---
+
+---
+title: OSC&#58; Selection and Expansion Considerations
+include: selection-considerations-in-osc.html
+part: subchapter
+---
+
+---
+title: OSC control for Ardour 4.7 and Prior
+include: osc-control-in-ardour-4.7-and-prior.html
+part: subchapter
+---
+
+
+---
+title: Devices using Mackie/Logic Control Protocol
+include: devices-using-mackielogic-control-protocol.html
+part: chapter
+---
+
+---
+title: Behringer devices in Mackie/Logic Control Mode
+menu_title: Behringer devices
+include: behringer-devices-in-mackielogic-control-mode.html
+part: subchapter
+---
+
+---
+title: SSL Nucleus
+include: ssl-nucleus.html
+part: subchapter
+---
+
+---
+title: Mackie Control Setup on Linux
+include: mackie-control-setup-on-linux.html
+part: subchapter
+---
+
+---
+title: What to do if your Device is not Listed
+menu_title: Unlisted devices
+include: devices-not-listed.html
+part: subchapter
+---
+
+---
+title: Working With Extenders
+menu_title: Working With Extenders
+include: working-with-extenders.html
+part: subchapter
+---
+
+
+---
+title: MIDI Binding Maps
+include: midi-binding-maps.html
+part: chapter
+---
+
+---
+title: Working With Encoders in Ardour
+menu_title: Working With Encoders
+include: working-with-encoders.html
+part: subchapter
+---
+
+
+---
+title: MIDI Learn
+include: midi-learn.html
+part: chapter
+---
+
+---
+title: Using the Presonus Faderport
+menu_title: Presonus Faderport
+include: presonus-faderport.html
+part: chapter
+---
+
+---
+title: Using the Ableton Push 2
+menu_title: Ableton Push 2
+include: ableton-push2.html
+part: chapter
+---
 
 
 ---
@@ -16608,3 +14157,16 @@ exclude: yes
 part: subchapter
 ---
 
+
+---
+title: Appendix
+part: part
+---
+
+
+---
+title: List of Menu Actions
+part: chapter
+include: menu-actions-list.html
+---
+
index 11dc86fd10051715823630e2029b0c5abcb89663..4a9fb5d1f1b8b10d498e6df637f0f1f10b6e15ac 100644 (file)
        caption-side: top ;
 }
 
+#content figure.right {
+    margin: 0 0 1em 1em;
+    float:right;
+    clear:right;
+}
+
+#content figure.left {
+    margin: 0 1em 1em 0;
+    float:left;
+    clear:left;
+}
+
 .multicol2 {
     width: 48%;
                float:left;
diff --git a/source/images/detailed-editor-window.png b/source/images/detailed-editor-window.png
new file mode 100644 (file)
index 0000000..4edaf4e
Binary files /dev/null and b/source/images/detailed-editor-window.png differ
diff --git a/source/images/detailed-mixer-window.png b/source/images/detailed-mixer-window.png
new file mode 100644 (file)
index 0000000..6af460b
Binary files /dev/null and b/source/images/detailed-mixer-window.png differ
diff --git a/source/images/global-editor-window-split.png b/source/images/global-editor-window-split.png
new file mode 100644 (file)
index 0000000..08a3d7f
Binary files /dev/null and b/source/images/global-editor-window-split.png differ
diff --git a/source/images/global-mixer-window-split.png b/source/images/global-mixer-window-split.png
new file mode 100644 (file)
index 0000000..7be88bb
Binary files /dev/null and b/source/images/global-mixer-window-split.png differ
diff --git a/source/images/ruler.png b/source/images/ruler.png
new file mode 100644 (file)
index 0000000..8be860c
Binary files /dev/null and b/source/images/ruler.png differ
diff --git a/source/images/summary.png b/source/images/summary.png
new file mode 100644 (file)
index 0000000..1289dc8
Binary files /dev/null and b/source/images/summary.png differ