]> Shamusworld >> Repos - ardour-manual/blobdiff - include/generic-midi-binding-maps.html
Add very basic docs on using the CLips browser in the Cue window
[ardour-manual] / include / generic-midi-binding-maps.html
index 43d56a115ba267885d37d376bc021ba3597f3bf8..8402cc66e11e46ab89e06f27a7a7444dbb765bdc 100644 (file)
@@ -1,7 +1,7 @@
 
 <p>
   Ardour 2.X supported
-  <a href="/using-control-surfaces/generic-midi/midi-learn/"><dfn>MIDI learning</dfn></a>
+  <a href="@@generic-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
   controls with anything inside Ardour that can be controlled.
 </p>
 <p>
-  Currently (August 2016), we have presets for the following devices/modes:
+  As of this writing we offer presets for the following devices/modes:
 </p>
-<ul>
-  <li>AKAI MPD-32</li>
+<ul> <!-- generated by: grep name= /opt/Ardour-6.7.0/share/midi_maps/*.map -->
+  <li>AKAI MPD32 by samtuke</li>
+  <li>Akai MidiMix EQ Mode</li>
+  <li>Akai MidiMix Normal Mode</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>Alesis QX25</li>
+  <li>Alesis VI25</li>
+  <li>Arturia KeyLab 49</li>
+  <li>Arturia MiniLab mkII</li>
+  <li>Behringer BCF2000 Factory Preset 2</li>
+  <li>Behringer BCF2000 Mackie Control</li>
+  <li>DDX3216</li>
+  <li>Korg nanoKONTROL</li>
+  <li>Korg nanoKONTROL2</li>
+  <li>Korg nanoKONTROL2 With Master</li>
+  <li>Korg nanoKONTROL w/Master</li>
+  <li>Korg nanoKONTROL Studio</li>
+  <li>Korg Taktile ( mode 9 )</li>
+  <li>M-Audio Oxygen61 V3 by samtuke</li>
+  <li>M-Audio Axiom 25 - Transport Controls</li>
   <li>M-Audio Axiom 61</li>
+  <li>M-Audio Axiom Air 25 (2015 Model) - Transport Controls</li>
+  <li>M-Audio Axiom AIR Mini 32</li>
+  <li>M-Audio Oxygen25 (factory default)</li>
+  <li>M-Audio Oxygen25 (3rd Gen)</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>M-Audio Oxygen 61 v3</li>
+  <li>M-Audio Oxygen8 V2</li>
+  <li>WiiMote via midikb</li>
+  <li>Nektar Panorama</li>
   <li>Novation Impulse 49</li>
   <li>Novation Impulse 61</li>
-  <li>Novation LaunchControl XL</li>
-  <li>Novation LaunchKey 25</li>
+  <li>Novation Launch Control XL</li>
+  <li>Novation Launchkey 25</li>
+  <li>Novation LaunchKey 49</li>
   <li>Roland SI-24</li>
-  <li>Roland V Studio 20</li>
-  <li>Yamaha KX25</li>
+  <li>Roland V-Studio 20</li>
+  <li>Xboard 61</li>
+  <li>Yamaha KX25 Transport Controls</li>
 </ul>
   At this time, new binding maps need to be created with a text editor.
 <p>
@@ -53,8 +69,7 @@
   <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. See
-   <a
-  href="/working-with-tracks/controlling-track-ordering/track-ordering-and-remote-control-ids/">
+   <a href="@@controlling-track-ordering">
    remote control IDs</a> for more information.
    You just need to know that there is a "first track" and its remote control
    ID is 1, and so on.
@@ -74,11 +89,8 @@ bindings"&gt;
   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>.
+       The file should be located in the midi_maps sub directory located in
+       the <a href="@@files-and-directories-ardour-knows-about">Ardour configuration directory</a>
 </p>
 
 <h3>Finding out what your MIDI control surface sends</h3>
@@ -98,16 +110,18 @@ bindings"&gt;
 <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.
+  of a track or bus. The second is a binding to something that will change
+  Ardour's state in some way (the "something" could either be called a
+  function or an action, see below).
 </p>
 <h4>Binding to Track/Bus controls</h4>
 <p>
-  A track/bus binding has one of two basic structures
+  A track/bus binding has one of three 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;
+  &lt;Binding <em>msg specification</em>  uri="<em>&hellip; control address &hellip;</em>"/&gt;</br>
+  &lt;Binding <em>msg specification</em>  function="<em>&hellip; function name &hellip;</em>"/&gt;</br>
+  &lt;Binding <em>msg specification</em>  action="<em>&hellip; action name &hellip;</em>"/&gt;
 </code>
 
 <h4>Message specifications</h4>
@@ -117,7 +131,7 @@ bindings"&gt;
   like this:
 </p>
 <code>
-   &lt;Binding channel="1" ctl="13" ....
+   &lt;Binding channel="1" ctl="13" &hellip;
 </code>
 <p>
   This defines a binding for a MIDI Continuous Controller message involving
@@ -127,21 +141,42 @@ bindings"&gt;
   <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/generic-midi/working-with-encoders/">
-   Learn more about working with encoders
-   </a>)
+       Continous Controlers (CCs) have coninued to evolve for different controlers.
+       The use of Encoders, RPN, NRPN, and controller buttons that give a 0 value
+       when released instead of toggling are now supported. These all have their
+       own type. The whole list of CC types are:
+</p>
+<p>
+       <ul>
+               <li>ctl - sets a CC to the value sent (works the same as
+               <code>note</code> with the <code>momentary</code> parameter set)</li>
+               <li>ctl-toggle - for CC controls that send a 127 for button press
+               and 0 for button release. The release is ignored and the value is
+               toggled with each press. (works the same as <code>note</code>)</li>
+               <li>ctl-dial - passes the CC value to the controlled object</li>
+               <li>rpn - The CC value may be a 14 bit value</li>
+               <li>nrpn - The CC number and the value may both be 14 bit values</li>
+               <li>rpn-delta - The value is expected to be a signed 14bit value
+               that is added to the current value. For use with encoders</li>
+               <li>nrpn-delta - The value is expected to be a signed 14bit value
+               that is added to the current value. For use with encoders</li>
+               <li>enc-r, enc-l, enc-2 and enc-b - For 7 bit encoders.
+               <a href="@@generic-midi-and-encoders"> Learn more about working
+               with encoders </a></li>
+       </ul>
+</p>
+
+<p class="note">
+       Ardour 5.12 has a bug with the encoder detection where the first
+       encoder message resets the control to 0. Setting "Enable Feedback"
+       on allows encoders to work as expected.
 </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" ....
+  &lt;Binding sysex="f0 0 0 e 9 0 5b f7" &hellip;.</br>
+  &lt;Binding sysex="f0 7f 0 6 7 f7" &hellip;.
 </code>
 <p>
   The string after the <code>sysex=</code> part is the sequence of MIDI bytes,
@@ -150,8 +185,8 @@ bindings"&gt;
 <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" ....
+  &lt;Binding msg="f0 0 0 e 9 0 5b f7" &hellip;.</br>
+  &lt;Binding msg="80 60 40" &hellip;.
 </code>
 <p>
   The string after the <code>msg=</code> part is the sequence of MIDI bytes, as
@@ -178,46 +213,49 @@ bindings"&gt;
   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 class="note">
+       Enable Feeback applies to these "Control Addresses" only.
+</p>
+<table class="dl">
+<tr><th>/route/gain</th>
+<td>the gain control ("fader") for the track/bus</td></tr>
+<tr><th>/route/trim</th>
+<td>the trim control for the track/bus (new in 4.1)</td></tr>
+<tr><th>/route/solo</th>
+<td>a toggleable control for solo (and listen) of the track/bus</td></tr>
+<tr><th>/route/mute</th>
+<td>a toggleable control to mute/unmute the track/bus</td></tr>
+<tr><th>/route/recenable</th>
+<td>a toggleable control to record-enable the track</td></tr>
+<tr><th>/route/panwidth</th>
+<td>interpreted by the track/bus panner, should control image "width"</td></tr>
+<tr><th>/route/pandirection</th>
+<td>interpreted by the track/bus panner, should control image "direction"</td></tr>
+<tr><th>/route/plugin/parameter</th>
+<td>the Mth parameter of the Nth plugin of a track/bus
+</td></tr>
+<tr><th>/route/send/gain</th>
+<td>the gain control ("fader") of the Nth send of a track/bus</td></tr>
+</table>
 <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>S, followed by a number
-</dt>
-<dd>identifies a selected track in order they have been selected, S1 should be the same track as the Editor Mixer
-</dd>
-<dt>one or more words
-</dt>
-<dd>identifies a track or bus by its name
-</dd>
-</dl>
+<table class="dl">
+<tr><th>a number, e.g. "1"
+</th>
+<td>identifies a track or bus by its remote control ID
+</td></tr>
+<tr><th>B, followed by a number
+</th>
+<td>identifies a track or bus by its remote control ID within the current bank (see below for more on banks)
+</td></tr>
+<tr><th>S, followed by a number
+</th>
+<td>identifies a selected track in order they have been selected, S1 should be the same track as the Editor Mixer
+</td></tr>
+<tr><th>one or more words
+</th>
+<td>identifies a track or bus by its name
+</td></tr>
+</table>
 <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
@@ -228,82 +266,98 @@ bindings"&gt;
 <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
+  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 class="note">
+  There is currently no feedback available for functions.
+</p>
 <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:
+  Rather than binding to a specific track/bus/plugin control, it may be useful to
+  have a MIDI controller able to alter some part of Ardour's
+  state. Ardour's Generic MIDI support provides a small number of
+  easily-used "functions" to do the most common operations, using a
+  binding that 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:
+  start the transport rolling. 
 </p>
-<dl class="narrower-table">
-<dt>
+<p>
+  Note that a much greater number of operations are possible using
+  actions, described below.
+</p>
+<p>
+  The following function names are available:
+</p>
+<table class="dl">
+<tr><th>
 <code>transport-stop</code>
-</dt>
-<dd>stop the transport
-</dd>
-<dt>
+</th>
+<td>stop the transport
+</td></tr>
+<tr><th>
 <code>transport-roll</code>
-</dt>
-<dd>start the transport "rolling"
-</dd>
-<dt>
+</th>
+<td>start the transport "rolling"
+</td></tr>
+<tr><th>
 <code>transport-zero</code>
-</dt>
-<dd>move the playhead to the zero position
-</dd>
-<dt>
+</th>
+<td>move the playhead to the zero position
+</td></tr>
+<tr><th>
 <code>transport-start</code>
-</dt>
-<dd>move the playhead to the start marker
-</dd>
-<dt>
+</th>
+<td>move the playhead to the start marker
+</td></tr>
+<tr><th>
 <code>transport-end</code>
-</dt>
-<dd>move the playhead to the end marker
-</dd>
-<dt>
+</th>
+<td>move the playhead to the end marker
+</td></tr>
+<tr><th>
 <code>loop-toggle</code>
-</dt>
-<dd>turn on loop playback
-</dd>
-<dt>
+</th>
+<td>turn on loop playback
+</td></tr>
+<tr><th>
 <code>rec-enable</code>
-</dt>
-<dd>enable the global record button
-</dd>
-<dt>
+</th>
+<td>enable the global record button
+</td></tr>
+<tr><th>
 <code>rec-disable</code>
-</dt>
-<dd>disable the global record button
-</dd>
-<dt>
+</th>
+<td>disable the global record button
+</td></tr>
+<tr><th>
 <code>next-bank</code>
-</dt>
-<dd>Move track/bus mapping to the next bank (see Banks below)
-</dd>
-<dt>
+</th>
+<td>Move track/bus mapping to the next bank (see Banks below)
+</td></tr>
+<tr><th>
 <code>prev-bank</code>
-</dt>
-<dd>Move track/bus mapping to the previous bank (see Banks below)
-</dd>
-</dl>
+</th>
+<td>Move track/bus mapping to the previous bank (see Banks below)
+</td></tr>
+</table>
 
 <h4>Binding to Ardour "actions"</h4>
+<p class="note">
+  It is not possible to have feedback available for actions because
+  these represent keyboard shortcuts which are input only.
+</p>
 <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 <a
-  href="/appendix/menu-actions-list/">
+  href="@@list-of-menu-actions">
   list of actions</a> shows all available values of <em>action-name</em>.
 <p>
   To create a binding between an arbitrary MIDI message (we'll use a
@@ -326,7 +380,7 @@ bindings"&gt;
   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 />
+  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
@@ -371,6 +425,9 @@ bindings"&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 channel="1" enc-r="11"   uri="/route/pandirection B1"/&gt;
+  &lt;Binding channel="1" enc-r="12"   uri="/route/pandirection B2"/&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;
@@ -389,5 +446,3 @@ bindings"&gt;
   (the channel range may change at some point).
 </p>
 
-{% children %}
-