X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=include%2Fgeneric-midi-binding-maps.html;h=8402cc66e11e46ab89e06f27a7a7444dbb765bdc;hb=a26b49e5c69ac38d5465c62623994e8a81f1b6b3;hp=3757a1dd4cff5fb7ea9758e648a6ad00c10e3d38;hpb=dfec6899ef2a121ccf2ff1d47008e7ac4844cf70;p=ardour-manual diff --git a/include/generic-midi-binding-maps.html b/include/generic-midi-binding-maps.html index 3757a1d..8402cc6 100644 --- a/include/generic-midi-binding-maps.html +++ b/include/generic-midi-binding-maps.html @@ -1,7 +1,7 @@
Ardour 2.X supported - MIDI learning + MIDI learning 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 @@ -11,32 +11,48 @@ controls with anything inside Ardour that can be controlled.
- Currently (August 2016), we have presets for the following devices/modes: + As of this writing we offer presets for the following devices/modes:
-@@ -53,8 +69,7 @@ remote control ID. 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 - + remote control IDs 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"> So, to start, create a file with that as the initial contents.
- On OS X, Ardour loads midi maps from its binary-bundle folder in
- Ardour-<version>/midi_maps/
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
- ~/.config/ardour3/midi_maps/
.
+ The file should be located in the midi_maps sub directory located in
+ the Ardour configuration directory
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).
- A track/bus binding has one of two basic structures + A track/bus binding has one of three basic structures
- <Binding msg specification uri="… control address …"/>
- <Binding msg specification function="… function name …"/>
+ <Binding msg specification uri="… control address …"/>
+ <Binding msg specification function="… function name …"/>
+ <Binding msg specification action="… action name …"/>
- <Binding channel="1" ctl="13" ….
+ <Binding channel="1" ctl="13" …
This defines a binding for a MIDI Continuous Controller message involving
@@ -127,20 +141,41 @@ bindings">
pgm
(to create a binding for a Program Change message).
- As of Ardour 4.2, enc-r
, enc-l
, enc-2
and
- enc-b
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. (
-
- Learn more about working with encoders
- )
+ 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:
+
+
note
with the momentary
parameter set)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.
You can also bind sysex messages:
- <Binding sysex="f0 0 0 e 9 0 5b f7" ….
+ <Binding sysex="f0 0 0 e 9 0 5b f7" ….
<Binding sysex="f0 7f 0 6 7 f7" ….
@@ -150,7 +185,7 @@ bindings">
Finally, you can bind a totally arbitrary MIDI message:
- <Binding msg="f0 0 0 e 9 0 5b f7" ….
+ <Binding msg="f0 0 0 e 9 0 5b f7" ….
<Binding msg="80 60 40" ….
@@ -178,46 +213,49 @@ bindings"> A control address defines what the binding will actually control. There are quite a few different things that can be specified here:
-+ Enable Feeback applies to these "Control Addresses" only. +
+/route/gain | +the gain control ("fader") for the track/bus |
---|---|
/route/trim | +the trim control for the track/bus (new in 4.1) |
/route/solo | +a toggleable control for solo (and listen) of the track/bus |
/route/mute | +a toggleable control to mute/unmute the track/bus |
/route/recenable | +a toggleable control to record-enable the track |
/route/panwidth | +interpreted by the track/bus panner, should control image "width" |
/route/pandirection | +interpreted by the track/bus panner, should control image "direction" |
/route/plugin/parameter | +the Mth parameter of the Nth plugin of a track/bus + |
/route/send/gain | +the gain control ("fader") of the Nth send of a track/bus |
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:
-a number, e.g. "1" + | +identifies a track or bus by its remote control ID + |
---|---|
B, followed by a number + | +identifies a track or bus by its remote control ID within the current bank (see below for more on banks) + |
S, followed by a number + | +identifies a selected track in order they have been selected, S1 should be the same track as the Editor Mixer + |
one or more words + | +identifies a track or bus by its name + |
For send/insert/plugin controls, the address consists of a track/bus address (as just described) followed by a number identifying the plugin/send @@ -234,76 +272,92 @@ bindings">
+ There is currently no feedback available for functions. +
- 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:
<Binding channel="1" note="13" function="transport-roll"/>
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. +
++ Note that a much greater number of operations are possible using + actions, described below. +
++ The following function names are available:
-
transport-stop
-
- |
+stop the transport + |
---|---|
transport-roll
-
- |
+start the transport "rolling" + |
transport-zero
-
- |
+move the playhead to the zero position + |
transport-start
-
- |
+move the playhead to the start marker + |
transport-end
-
- |
+move the playhead to the end marker + |
loop-toggle
-
- |
+turn on loop playback + |
rec-enable
-
- |
+enable the global record button + |
rec-disable
-
- |
+disable the global record button + |
next-bank
-
- |
+Move track/bus mapping to the next bank (see Banks below) + |
prev-bank
-
- |
+Move track/bus mapping to the previous bank (see Banks below) + |
+ It is not possible to have feedback available for actions because + these represent keyboard shortcuts which are input only. +
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 + href="@@list-of-menu-actions"> list of actions shows all available values of action-name.
To create a binding between an arbitrary MIDI message (we'll use a @@ -371,6 +425,9 @@ bindings"> <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"/>