MIDI map

This extension can be used by plugins to specify which MIDI controllers should be mapped to which control rate input ports by a host that supports that sort of mapping. It is a pure RDF extension and it does not use any Properties, HostFeatures or DataTypes, so it can always be safely ignored by a host. The extension consists of five URIs:

http://ll-plugins.nongnu.org/lv2/ext/midimap#defaultMidiController
http://ll-plugins.nongnu.org/lv2/ext/midimap#controllerType
http://ll-plugins.nongnu.org/lv2/ext/midimap#controllerNumber
http://ll-plugins.nongnu.org/lv2/ext/midimap#CC
http://ll-plugins.nongnu.org/lv2/ext/midimap#NRPN

If you have a port with the URI http://someport and you want hosts to map MIDI CC events with controller number 10 to changes in the value of that port, you should write something like this in the Turtle file:

@prefix mm: <http://ll-plugins.nongnu.org/lv2/ext/midimap#>.
<http://someport> mm:defaultMidiController [
  mm:controllerType mm:CC;
  mm:controllerNumber 10;
].

If you want to map NRPN 10 to the port instead, just use mm:NRPN instead of mm:CC.

MIDI mappings defined using this extension are just hints - the host may decide not to use them, or to use other mappings. The plugin should in no way rely on these mappings being used. Neither does the extension define where the host should get its MIDI events; it may create a new MIDI port, or if the plugin has a MIDI input port, filter out matching events from that.

It is probably a bad idea to map Bank Change controllers (CC 0 and 32) or controllers that are used internally by the plugin, e.g. a synth plugin that turns off all playing notes when it receives CC 120 or 123 (All Sound Off and All Notes Off).

If a host uses the mappings defined using these URIs, it should always map the entire range or the MIDI CC (0 to 127) to the entire range of the control port, specified using minimum and maximum values in the Turtle file. If a port has a MIDI mapping but no minimum and maximum values the mapping should be considered invalid.