<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>
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. See below</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>
- 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>)
-</p>
-<p>
- <ul>
- <li><code><Binding channel="1" enc-r="13" …</code></li>
- <li><code><Binding channel="1" enc-l="13" …</code></li>
- <li><code><Binding channel="1" enc-2="13" …</code></li>
- <li><code><Binding channel="1" enc-b="13" …</code></li>
- </ul>
- The <code>enc-*</code> value is the CC number used by the encoder.
- Encoders only work with CC messages.
-</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"
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>
<h4>Bindings to Ardour "functions"</h4>
<p class="note">
- There is currently no feedback available for functions.
+ 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>
<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.
+ 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