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>
<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.
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-<version>/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>
<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>
- <Binding <em>msg specification</em> uri="<em>… control address …</em>"/>
- <Binding <em>msg specification</em> function="<em>… function name …</em>"/>
+ <Binding <em>msg specification</em> uri="<em>… control address …</em>"/></br>
+ <Binding <em>msg specification</em> function="<em>… function name …</em>"/></br>
+ <Binding <em>msg specification</em> action="<em>… action name …</em>"/>
</code>
<h4>Message specifications</h4>
like this:
</p>
<code>
- <Binding channel="1" ctl="13" ….
+ <Binding channel="1" ctl="13" …
</code>
<p>
This defines a binding for a MIDI Continuous Controller message involving
<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="@@generic-midi-and-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>
- <Binding sysex="f0 0 0 e 9 0 5b f7" ….
+ <Binding sysex="f0 0 0 e 9 0 5b f7" ….</br>
<Binding sysex="f0 7f 0 6 7 f7" ….
</code>
<p>
<p>
Finally, you can bind a totally arbitrary MIDI message:</p>
<code>
- <Binding msg="f0 0 0 e 9 0 5b f7" ….
+ <Binding msg="f0 0 0 e 9 0 5b f7" ….</br>
<Binding msg="80 60 40" ….
</code>
<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>
+<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>
</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>
<table class="dl">
-<tr><th>a number, eg. "1"
+<tr><th>a number, e.g. "1"
</th>
<td>identifies a track or bus by its remote control ID
</td></tr>
</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>
<Binding channel="1" note="13" function="transport-roll"/>
</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>
+<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>
</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
<Binding channel="1" note="15" uri="/route/mute B1" momentary="yes"/>
<Binding channel="1" note="16" uri="/route/mute B2" momentary="yes"/>
+ <Binding channel="1" enc-r="11" uri="/route/pandirection B1"/>
+ <Binding channel="1" enc-r="12" uri="/route/pandirection B2"/>
+
<Binding sysex="f0 0 0 e 9 0 5b f7" function="transport-start"/>
<Binding sysex="f0 7f 0 6 7 f7" function="rec-disable"/>
<Binding sysex="f0 7f 0 6 6 f7" function="rec-enable"/>