@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .
@prefix mflt:  <http://gareus.org/oss/lv2/midifilter#> .
@prefix mod:   <http://moddevices.com/ns/mod#> .
@prefix pprops:<http://lv2plug.in/ns/ext/port-props#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix time:  <http://lv2plug.in/ns/ext/time#> .

<http://gareus.org/rgareus#me>
	a foaf:Person ;
	foaf:name "Robin Gareus" ;
	foaf:mbox <mailto:robin@gareus.org> ;
	foaf:homepage <http://gareus.org/> .

<http://gareus.org/oss/lv2/midifilter>
	a doap:Project ;
	doap:maintainer <http://gareus.org/rgareus#me> ;
	doap:name "Midi Filter Plugin Set" .

 mflt:cctonote
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI CC to Note" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "mode" ; lv2:name "Operation Mode"; lv2:minimum 0 ; lv2:maximum 3 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Fixed key, velocity = CC-value" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "key = CC-value, fixed velocity (64)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "All keys, key = parameter, velocity = CC-value" ; rdf:value 2 ] ; rdfs:comment "" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "param" ; lv2:name "CC Parameter to intercept"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "unused in 'all keys' mode." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "key" ; lv2:name "Key (midi-note) to use with fixed-key mode"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 48; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "only used in 'velocity = value' mode." ]

 ; rdfs:comment "Convert MIDI control change messages to note-on/off messages. Note off is queued 10msec later."
 .

 mflt:channelfilter
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Channel Filter" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "chn1" ; lv2:name "Channel  1"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "chn2" ; lv2:name "Channel  2"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "chn3" ; lv2:name "Channel  3"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "chn4" ; lv2:name "Channel  4"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "chn5" ; lv2:name "Channel  5"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "chn6" ; lv2:name "Channel  6"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "chn7" ; lv2:name "Channel  7"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "chn8" ; lv2:name "Channel  8"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "chn9" ; lv2:name "Channel  9"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "chn10" ; lv2:name "Channel 10"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "chn11" ; lv2:name "Channel 11"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "chn12" ; lv2:name "Channel 12"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 15 ; lv2:symbol "chn13" ; lv2:name "Channel 13"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 16 ; lv2:symbol "chn14" ; lv2:name "Channel 14"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 17 ; lv2:symbol "chn15" ; lv2:name "Channel 15"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 18 ; lv2:symbol "chn16" ; lv2:name "Channel 16"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 ; rdfs:comment "Simple MIDI channel filter. Only data for selected channels may pass. This filter only affects midi-data which is channel relevant (ie note-on/off, control and program changes, key and channel pressure and pitchbend). MIDI-SYSEX and Realtime message are always passed on. See also 'MIDI Channel Map' filter." ;
 .

 mflt:channelmap
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Channel Map" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "chn1" ; lv2:name "Channel  1 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "chn2" ; lv2:name "Channel  2 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 2; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "chn3" ; lv2:name "Channel  3 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 3; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "chn4" ; lv2:name "Channel  4 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 4; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "chn5" ; lv2:name "Channel  5 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 5; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "chn6" ; lv2:name "Channel  6 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 6; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "chn7" ; lv2:name "Channel  7 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 7; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "chn8" ; lv2:name "Channel  8 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 8; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "chn9" ; lv2:name "Channel  9 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 9; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "chn10" ; lv2:name "Channel 10 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 10; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "chn11" ; lv2:name "Channel 11 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 11; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "chn12" ; lv2:name "Channel 12 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 12; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 15 ; lv2:symbol "chn13" ; lv2:name "Channel 13 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 13; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 16 ; lv2:symbol "chn14" ; lv2:name "Channel 14 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 14; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 17 ; lv2:symbol "chn15" ; lv2:name "Channel 15 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 15; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 18 ; lv2:symbol "chn16" ; lv2:name "Channel 16 to"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 16; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 ; rdfs:comment "Rewrite midi-channel number. This filter only affects midi-data which is channel relevant (ie note-on/off, control and program changes, key and channel pressure and pitchbend). MIDI-SYSEX and Realtime message are always passed thru unmodified." ;
 .

 mflt:midichord
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Chord" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "scale" ; lv2:name "Scale"; lv2:minimum 0 ; lv2:maximum 11 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "C Major" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "C#/Db Major" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "D Major" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "D#/Eb Major" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "E Major" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "F Major" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "F#/Gb Major" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "G Major" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "G#/Ab Major" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "A Major" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "A#/Bb Major" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "B Major" ; rdf:value 11 ] ; rdfs:comment "Scale for the Chords." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "hold" ; lv2:name "Hold Chord"; lv2:minimum 0 ; lv2:maximum 11 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "On" ; rdf:value 1 ] ; rdfs:comment "When enabled, parameter changes apply to new chords only." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "c1" ; lv2:name "prime"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "c2" ; lv2:name "2nd"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "c3" ; lv2:name "3rd"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "c4" ; lv2:name "4th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "c5" ; lv2:name "5th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "c6" ; lv2:name "6th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "c7" ; lv2:name "7th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "c8" ; lv2:name "octave"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "c9" ; lv2:name "9th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 15 ; lv2:symbol "c11" ; lv2:name "11th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 16 ; lv2:symbol "c13" ; lv2:name "13th"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 17 ; lv2:symbol "_8" ; lv2:name "bass"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 ; rdfs:comment "Harmonizer - make chords from single (fundamental) note in a given musical scale. The scale as well as intervals can be automated freely (currently held chords will change). Note-ons are latched, for multiple/combined chords only single note-on/off will be triggered for the duration of the combined chords. If a off-scale note is given, it will be passed through - no chord is allocated. Note: Combine this effect with the 'MIDI Enforce Scale' filter to weed them out." ;
 .

 mflt:enforcescale
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Enforce Scale" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "scale" ; lv2:name "Scale"; lv2:minimum 0 ; lv2:maximum 11 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "C Major" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "C# Major" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "D Major" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "D# Major" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "E Major" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "F Major" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "F# Major" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "G Major" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "G# Major" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "A Major" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "A# Major" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "B Major" ; rdf:value 11 ] ; rdfs:comment "Limit note-on/off messages to this scale." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "mode" ; lv2:name "Mode"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Discard" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Always down" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Always up" ; rdf:value 2 ] ; rdfs:comment "Behaviour of off-key notes." ]

 ; rdfs:comment "Filter note-on/off events depending on musical scale. If the scale is changed, note-off events are sent for all active out-of-key notes." ;
 .

 mflt:eventblocker
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Event Filter" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "blkcc" ; lv2:name "Block Control Changes"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "blknote" ; lv2:name "Block Notes"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "blkpc" ; lv2:name "Block Program Changes"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "blkpp" ; lv2:name "Block Polykey-Pressure"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "blkcp" ; lv2:name "Block Channel-Pressure"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "blkpb" ; lv2:name "Block Pitch Bend"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "blksx" ; lv2:name "Block System Messages"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "blkcm" ; lv2:name "Block Custom Message"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "cmt" ; lv2:name "Custom Message Type"; lv2:minimum 0 ; lv2:maximum 6 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Note Off (0x8x)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Note On (0x9x)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Polykey Pressure (0xAx)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "Control Change (0xBx)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "Program Change (0xCx)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "Channel Pressure (0xDx)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "Pitchbend (0xEx)" ; rdf:value 6 ] ; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "cmf" ; lv2:name "Custom message Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "cm1" ; lv2:name "Custom message Data1"; lv2:minimum -1 ; lv2:maximum 127 ; lv2:default -1; lv2:portProperty lv2:integer; lv2:scalePoint [ rdfs:label "Any" ; rdf:value -1 ] ; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "cm2" ; lv2:name "Custom message Data2"; lv2:minimum -1 ; lv2:maximum 127 ; lv2:default -1; lv2:portProperty lv2:integer; lv2:scalePoint [ rdfs:label "Any" ; rdf:value -1 ] ; ]

 ; rdfs:comment "Notch style message filter. Suppress specific messages. For flexible note-on/off range see also 'keyrange' and 'velocityrange'."
 .

 mflt:keyrange
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Key-Range Filter" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "lower" ; lv2:name "Lowest Note"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "lower end of note-range (inclusive)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "upper" ; lv2:name "Highest Note"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 127; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "upper end of note-range (inclusive)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "mode" ; lv2:name "Operation Mode"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Bypass" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Include Range" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Exclude Range" ; rdf:value 2 ] ; rdfs:comment "" ]

 ; rdfs:comment "This filter allows to define a range of allowed midi notes. Notes-on/off events outside the allowed range are discarded. If the range changes, note-off events are sent to currently active notes that end up outside the valid range." ;
 .

 mflt:keysplit
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Keysplit" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "split" ; lv2:name "Splitpoint"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 48; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "Given note and all higher notes are sent to 'upper-manual'." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "channel0" ; lv2:name "Channel Lower"; lv2:minimum 1 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI channel of 'lower-manual'." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "transp0" ; lv2:name "Transpose Lower"; lv2:minimum -48 ; lv2:maximum 48 ; lv2:default 0; lv2:portProperty lv2:integer; units:unit units:midiNote ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "channel1" ; lv2:name "Channel Upper"; lv2:minimum 1 ; lv2:maximum 16 ; lv2:default 2; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI channel of 'upper-manual'." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "transp1" ; lv2:name "Transpose Upper"; lv2:minimum -48 ; lv2:maximum 48 ; lv2:default 0; lv2:portProperty lv2:integer; units:unit units:midiNote ]
 ; rdfs:comment "Change midi-channel number depending on note. The plugin keeps track of transposed midi-notes in case and sends note-off events accordingly if the range is changed even if a note is active. However the split-point and channel-assignments for each manual should only be changed when no notes are currently played. "
 .

 mflt:mapcc
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI CC Map" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "ccin" ; lv2:name "CC Input"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "The control to change" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "ccout" ; lv2:name "CC Output"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "The target controller" ]

 ; rdfs:comment "Change one control message into another -- combine with scalecc to modify/scale the actual value."
 .

 mflt:mapkeychannel
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Note/Channel Map" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "k0" ; lv2:name "C"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "k1" ; lv2:name "C#"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "k2" ; lv2:name "D"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "k3" ; lv2:name "D#"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "k4" ; lv2:name "E"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "k5" ; lv2:name "F"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "k6" ; lv2:name "F#"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "k7" ; lv2:name "G"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "k8" ; lv2:name "G#"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "k9" ; lv2:name "A"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "k10" ; lv2:name "A#"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "k11" ; lv2:name "B"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel number 1..16 (0: disable channel)" ]
 ; rdfs:comment "12-tone channel map. Allow to change midi-channel per note. (Events other than note-on/off will be passed through as-is; currently there is no channel panic forwarding, nor note-off events when changing the channel-assignments dynamically)";
 .

 mflt:mapkeyscale
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Note Transpose" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "k0" ; lv2:name "C"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (C-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (C#-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (D-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (D#-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (E-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (F-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (F#-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (G-1)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (G#-1)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (A-1)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (A#-1)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (B-1)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (C+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (C#+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (D+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (D#+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (E+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (F+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (F#+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (G+0)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (G#+0)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (A+0)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (A#+0)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (B+0)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (C+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "k1" ; lv2:name "C#"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (C#-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (D-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (D#-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (E-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (F-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (F#-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (G-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (G#-1)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (A-1)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (A#-1)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (B-1)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (C+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (C#+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (D+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (D#+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (E+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (F+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (F#+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (G+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (G#+0)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (A+0)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (A#+0)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (B+0)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (C+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (C#+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "k2" ; lv2:name "D"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (D-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (D#-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (E-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (F-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (F#-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (G-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (G#-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (A-1)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (A#-1)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (B-1)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (C+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (C#+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (D+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (D#+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (E+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (F+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (F#+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (G+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (G#+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (A+0)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (A#+0)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (B+0)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (C+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (C#+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (D-1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "k3" ; lv2:name "D#"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (D#-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (E-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (F-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (F#-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (G-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (G#-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (A-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (A#-1)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (B-1)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (C+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (C#+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (D+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (D#+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (E+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (F+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (F#+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (G+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (G#+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (A+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (A#+0)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (B+0)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (C+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (C#+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (D+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (D#+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "k4" ; lv2:name "E"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (E-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (F-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (F#-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (G-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (G#-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (A-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (A#-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (B-1)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (C+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (C#+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (D+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (D#+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (E+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (F+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (F#+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (G+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (G#+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (A+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (A#+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (B+0)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (C+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (C#+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (D+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (D#+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (E+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "k5" ; lv2:name "F"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (F-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (F#-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (G-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (G#-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (A-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (A#-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (B-1)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (C+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (C#+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (D+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (D#+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (E+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (F+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (F#+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (G+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (G#+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (A+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (A#+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (B+0)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (C+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (C#+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (D+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (D#+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (E+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (F+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "k6" ; lv2:name "F#"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (F#-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (G-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (G#-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (A-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (A#-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (B-1)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (C+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (C#+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (D+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (D#+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (E+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (F+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (F#+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (G+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (G#+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (A+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (A#+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (B+0)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (C+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (C#+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (D+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (D#+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (E+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (F+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (F#+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "k7" ; lv2:name "G"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (G-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (G#-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (A-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (A#-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (B-1)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (C+0)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (C#+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (D+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (D#+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (E+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (F+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (F#+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (G+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (G#+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (A+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (A#+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (B+0)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (C+1)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (C#+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (D+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (D#+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (E+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (F+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (F#+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (G+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 12 ; lv2:symbol "k8" ; lv2:name "G#"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (G#-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (A-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (A#-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (B-1)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (C+0)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (C#+0)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (D+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (D#+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (E+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (F+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (F#+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (G+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (G#+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (A+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (A#+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (B+0)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (C+1)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (C#+1)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (D+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (D#+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (E+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (F+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (F#+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (G+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (G#+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 13 ; lv2:symbol "k9" ; lv2:name "A"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (A-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (A#-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (B-1)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (C+0)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (C#+0)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (D+0)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (D#+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (E+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (F+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (F#+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (G+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (G#+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (A+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (A#+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (B+0)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (C+1)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (C#+1)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (D+1)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (D#+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (E+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (F+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (F#+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (G+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (G#+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (A+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 14 ; lv2:symbol "k10" ; lv2:name "A#"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (A#-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (B-1)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (C+0)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (C#+0)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (D+0)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (D#+0)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (E+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (F+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (F#+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (G+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (G#+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (A+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (A#+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (B+0)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (C+1)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (C#+1)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (D+1)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (D#+1)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (E+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (F+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (F#+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (G+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (G#+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (A+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (A#+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 15 ; lv2:symbol "k11" ; lv2:name "B"; lv2:minimum -13 ; lv2:maximum 12 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Off" ; rdf:value -13 ] ; lv2:scalePoint [ rdfs:label "-12 (B-1)" ; rdf:value -12 ] ; lv2:scalePoint [ rdfs:label "-11 (C+0)" ; rdf:value -11 ] ; lv2:scalePoint [ rdfs:label "-10 (C#+0)" ; rdf:value -10 ] ; lv2:scalePoint [ rdfs:label "-9 (D+0)" ; rdf:value -9 ] ; lv2:scalePoint [ rdfs:label "-8 (D#+0)" ; rdf:value -8 ] ; lv2:scalePoint [ rdfs:label "-7 (E+0)" ; rdf:value -7 ] ; lv2:scalePoint [ rdfs:label "-6 (F+0)" ; rdf:value -6 ] ; lv2:scalePoint [ rdfs:label "-5 (F#+0)" ; rdf:value -5 ] ; lv2:scalePoint [ rdfs:label "-4 (G+0)" ; rdf:value -4 ] ; lv2:scalePoint [ rdfs:label "-3 (G#+0)" ; rdf:value -3 ] ; lv2:scalePoint [ rdfs:label "-2 (A+0)" ; rdf:value -2 ] ; lv2:scalePoint [ rdfs:label "-1 (A#+0)" ; rdf:value -1 ] ; lv2:scalePoint [ rdfs:label "+-0 (B+0)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "+1 (C+1)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "+2 (C#+1)" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "+3 (D+1)" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "+4 (D#+1)" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "+5 (E+1)" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "+6 (F+1)" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "+7 (F#+1)" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "+8 (G+1)" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "+9 (G#+1)" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "+10 (A+1)" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "+11 (A#+1)" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "+12 (B+1)" ; rdf:value 12 ] ; units:unit units:semitone12TET ]
 ; rdfs:comment "Flexible 12-tone map. Allow to map a note within an octave to another note in the same octave-range +- 12 semitones. Alternatively notes can also be masked (disabled). If two keys are mapped to the same note, the corresponding note on/events are latched: only the first note on and last note off will be sent. The settings can be changed dynamically: Note-on/off events will be sent accordingly.";
 .

 mflt:chokefilter
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Choke" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "triggerlo" ; lv2:name "Low Trigger Note"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 42; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "Lowest note of the note range, which triggers the choke." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "triggerhi" ; lv2:name "High Trigger Note"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 42; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "Highest note of the note range, which triggers the choke." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "choke" ; lv2:name "Choke Note"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 46; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "Note, which is choked when a trigger note is received." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "rvmode" ; lv2:name "Release Velocity"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 2; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Set to zero" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "From choke note-on velocity" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "From trigger note-on velocity" ; rdf:value 2 ] ; rdfs:comment "What to set the release velocity of the choke note-off to." ]

 ; rdfs:comment "MIDI Choke filter. Send note-off message for choke note (if it is on), when any note within the trigger note range is received." ;
 .

 mflt:mididelay
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Delayline" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; atom:supports time:Position; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "bpmsrc" ; lv2:name "BPM source"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Control Port" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Plugin Host (if available)" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "delayBPM" ; lv2:name "BPM"; lv2:minimum 1.0 ; lv2:maximum 280.0 ; lv2:default 120.0; units:unit units:bpm; rdfs:comment "base unit for the delay-time" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "delayBeats" ; lv2:name "Delay Beats 4/4"; lv2:minimum 0.0 ; lv2:maximum 16.0 ; lv2:default 1.0; lv2:scalePoint [ rdfs:label "No Delay" ; rdf:value 0.0 ] ; lv2:scalePoint [ rdfs:label "Eighth" ; rdf:value 0.5 ] ; lv2:scalePoint [ rdfs:label "Quarter" ; rdf:value 1.0 ] ; lv2:scalePoint [ rdfs:label "Half Note" ; rdf:value 2.0 ] ; lv2:scalePoint [ rdfs:label "Whole Note" ; rdf:value 4.0 ] ; lv2:scalePoint [ rdfs:label "Two Bars" ; rdf:value 8.0 ] ; lv2:scalePoint [ rdfs:label "Four Bars" ; rdf:value 16.0 ] ; rdfs:comment "delay length in base-unit" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "delayRandom" ; lv2:name "Randomize [Beats]"; lv2:minimum 0.0 ; lv2:maximum 1.0 ; lv2:default 0.0; rdfs:comment "randomization factor" ]

 ; rdfs:comment "MIDI delay line. Delay all MIDI events by a given time which is given as BPM and beats. If the delay includes a random factor, this effect takes care of always keeping note on/off events sequential regardless of the randomization."
 .

 mflt:mididup
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Channel Unisono" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "chs" ; lv2:name "Source Channel"; lv2:minimum 1 ; lv2:maximum 16 ; lv2:default 1; lv2:portProperty lv2:integer ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "chd" ; lv2:name "Duplicate to Channel"; lv2:minimum 1 ; lv2:maximum 16 ; lv2:default 2; lv2:portProperty lv2:integer ]
 ; rdfs:comment "Duplicate MIDI events from one channel to another."
 .

 mflt:midistrum
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Strum" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; atom:supports time:Position; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "bpmsrc" ; lv2:name "BPM source"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Control Port" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Plugin Host (if available)" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "bpm" ; lv2:name "BPM"; lv2:minimum 1.0 ; lv2:maximum 280.0 ; lv2:default 120.0; units:unit units:bpm; rdfs:comment "base unit for the time (unless host provides BPM)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "mode" ; lv2:name "Strum Direction"; lv2:minimum 0 ; lv2:maximum 4 ; lv2:default 2; lv2:scalePoint [ rdfs:label "Always Down (low notes first)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Always Up (high notes first)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Alternate" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "Up/Down Beat" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "Up/Down 8th" ; rdf:value 4 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "collect" ; lv2:name "Note Collect Timeout [ms]"; lv2:minimum 0.0 ; lv2:maximum 300.0 ; lv2:default 15.0; rdfs:comment "Time to wait for chord to be 'complete'. Keys pressed withing given timeframe will be combined into one chord." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "duration" ; lv2:name "Strum Duration in Beats"; lv2:minimum 0.0 ; lv2:maximum 4.0 ; lv2:default .25; lv2:scalePoint [ rdfs:label "Immediate" ; rdf:value 0.0 ] ; lv2:scalePoint [ rdfs:label "32th" ; rdf:value 0.125 ] ; lv2:scalePoint [ rdfs:label "16th" ; rdf:value 0.25 ] ; lv2:scalePoint [ rdfs:label "Eighth" ; rdf:value 0.5 ] ; lv2:scalePoint [ rdfs:label "Quarter" ; rdf:value 1.0 ] ; lv2:scalePoint [ rdfs:label "Half Note" ; rdf:value 2.0 ] ; lv2:scalePoint [ rdfs:label "Whole Note" ; rdf:value 4.0 ] ; rdfs:comment "" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "adjspeed" ; lv2:name "Strum Acceleration"; lv2:minimum -1.0 ; lv2:maximum 1.0 ; lv2:default 0.0; rdfs:comment "Accellerate/Decelerate over the time of the strum. The total duration remains unchanged. If the value is greater than zero, early notes are further apart and later notes will be closer together." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "adjvelocity" ; lv2:name "Velocity Change"; lv2:minimum -112.0 ; lv2:maximum 112.0 ; lv2:default 0.0; rdfs:comment "Modify velocity over stroke time. If the value is greater than zero, later notes will played louder." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 10 ; lv2:symbol "randspeed" ; lv2:name "Randomize Acceleration"; lv2:minimum 0.0 ; lv2:maximum 1.0 ; lv2:default 0.0; rdfs:comment "Amount of randomization to apply to the accel/decel setting. A Value of 1.0 means to add a random-number of the full-range (-1..1) to the given value." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 11 ; lv2:symbol "randvelocity" ; lv2:name "Randomize Velocity"; lv2:minimum 0.0 ; lv2:maximum 1.0 ; lv2:default 0.0; rdfs:comment "Amount of randomization to apply to the acceleation value. A value of 1.0 means to add a random-number of the full-range (-112..112) to the given value." ]

 ; rdfs:comment """A midi arpeggio effect intended to simulate strumming a stringed instrument (e.g. guitar). A chord is 'collected' and the single notes of the chord are played back spread out over time. The 'Note Collect Timeout' allows for the effect to be played live with midi-keyboard, it compensates for a human not pressing keys at the same point in time. If the effect is used with a sequencer that can send chords with all note-on at the exactly time, it should be set to zero."""
 .

 mflt:miditranspose
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Chromatic Transpose" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "transpose" ; lv2:name "Transpose"; lv2:minimum -63 ; lv2:maximum 64 ; lv2:default 0; lv2:portProperty lv2:integer ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "inversion" ; lv2:name "Inversion point"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Off"; rdf:value 0 ] ; lv2:portProperty lv2:integer; units:unit units:midiNote; rdfs:comment "Chromatic Inversion. Mirror chromatic scale around this point before transposing." ]

 ; rdfs:comment "Chromatic transpose of midi notes and key-pressure. If an inversion point is set, the scale is mirrored around this point before transposing. Notes that end up outside the valid range 0..127 are discarded.";
 .

 mflt:monolegato
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Monophonic Legato" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 ; rdfs:comment "Hold a note until the next note arrives. -- Play the same note again to switch it off."
 .

 mflt:nodup
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Duplicate Blocker" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 ; rdfs:comment "MIDI Duplicate Blocker. Filter out overlapping note on/off and duplicate messages."
 .

 mflt:noactivesensing
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Remove Active Sensing" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 ; rdfs:comment "Filter to block all active sensing events. Active sensing messages are optional MIDI messages and intended to be sent repeatedly to tell a receiver that a connection is alive, however they can clutter up the MIDI channel or be inadvertently recorded when dumping raw MIDI data to disk."
 .

 mflt:notetocc
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Note to CC" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "mode" ; lv2:name "Operation Mode"; lv2:minimum 0 ; lv2:maximum 3 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Fixed parameter, CC-value = velocity" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Fixed parameter, CC-value = key" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "All keys, parameter = key, CC-value = velocity" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "Toggle, parameter = key, CC-value = 127 note-on or 0 note-off" ; rdf:value 3 ] ; rdfs:comment "" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "param" ; lv2:name "CC Parameter"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 1; lv2:portProperty lv2:integer; rdfs:comment "unused in 'all keys' mode." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "key" ; lv2:name "Active Key (midi-note)"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 48; lv2:portProperty lv2:integer; units:unit units:midiNote ; rdfs:comment "only used in 'value = velocity' mode." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "nooff" ; lv2:name "Ignore Note Off"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 ; rdfs:comment "Convert only MIDI note-on messages to control change messages (ignored in toggle mode)."
 .

 mflt:notetoggle
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Note Toggle" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 ; rdfs:comment "Toggle Notes: play a note to turn it on, play it again to turn it off."
 .

 mflt:notetopgm
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Note to PC" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "mode" ; lv2:name "Mode"; lv2:minimum 0 ; lv2:maximum 11 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Chromatic Map" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "C -1" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "C 00" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "C 01" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "C 02" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "C 03" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "C 04" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "C 05" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "C 06" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "C 07" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "C 08" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "C 09" ; rdf:value 11 ] ; rdfs:comment "Mapping from note to patch-change. This is either chromatic mapping start at the lowest note (C-1), or white-keys (C-major scale) starting at a given C." ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "off" ; lv2:name "Offset"; lv2:minimum -64 ; lv2:maximum 64 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "Offset patch-change number" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "minvel" ; lv2:name "Min Velocity"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 1; lv2:portProperty lv2:integer ]
 ; rdfs:comment "Convert MIDI note messages to patch/program change messages."
 .

 mflt:ntapdelay
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI N-Tap Delay" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; atom:supports time:Position; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "bpmsrc" ; lv2:name "BPM source"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Control Port" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Plugin Host (if available)" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "delayBPM" ; lv2:name "BPM"; lv2:minimum 1.0 ; lv2:maximum 280.0 ; lv2:default 120.0; units:unit units:bpm; rdfs:comment "base unit for the delay-time" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "delayBeats" ; lv2:name "Repeat-time in beats"; lv2:minimum .00390625 ; lv2:maximum 16.0 ; lv2:default 1.0; lv2:scalePoint [ rdfs:label "32th" ; rdf:value 0.125 ] ; lv2:scalePoint [ rdfs:label "16th" ; rdf:value 0.25 ] ; lv2:scalePoint [ rdfs:label "Eighth" ; rdf:value 0.5 ] ; lv2:scalePoint [ rdfs:label "Quarter" ; rdf:value 1.0 ] ; lv2:scalePoint [ rdfs:label "Half Note" ; rdf:value 2.0 ] ; lv2:scalePoint [ rdfs:label "Whole Note" ; rdf:value 4.0 ] ; lv2:scalePoint [ rdfs:label "Two Bars" ; rdf:value 8.0 ] ; lv2:scalePoint [ rdfs:label "Four Bars" ; rdf:value 16.0 ] ; rdfs:comment "delay length in base-units" ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "taps" ; lv2:name "Repeats"; lv2:minimum 0 ; lv2:maximum 64 ; lv2:default 3; lv2:portProperty lv2:integer; lv2:scalePoint [ rdfs:label "until note-off" ; rdf:value 0 ] ; rdfs:comment "Number of repeats" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "velocityadj" ; lv2:name "velocity ramp"; lv2:minimum -64.0 ; lv2:maximum 64.0 ; lv2:default -10.0; rdfs:comment "Velocity change per repeat" ]

 ; rdfs:comment "This effect repeats notes N times. Where N is either a fixed number or unlimited as long as a given key is pressed. BPM and delay-time variable allows tempo-ramps. On every repeat the given velocity-adjustment is added or subtracted, the result is clamped between 1 and 127."
 .

 mflt:passthru
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Thru" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 ; rdfs:comment "MIDI All pass. This plugin has no effect and is intended as example."
 .

 mflt:quantize
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Quantization" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; atom:supports time:Position; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "bpmsrc" ; lv2:name "BPM source"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Control Port (freerun)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Plugin Host (if available)" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "bpm" ; lv2:name "BPM"; lv2:minimum 1.0 ; lv2:maximum 280.0 ; lv2:default 120.0; units:unit units:bpm; rdfs:comment "base unit for the time (unless host provides BPM)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "quant" ; lv2:name "Quantization Grid"; lv2:minimum .00390625 ; lv2:maximum 4.0 ; lv2:default .25; lv2:scalePoint [ rdfs:label "32th" ; rdf:value 0.125 ] ; lv2:scalePoint [ rdfs:label "16th" ; rdf:value 0.25 ] ; lv2:scalePoint [ rdfs:label "Eighth" ; rdf:value 0.5 ] ; lv2:scalePoint [ rdfs:label "Quarter" ; rdf:value 1.0 ] ; lv2:scalePoint [ rdfs:label "Half Note" ; rdf:value 2.0 ] ; lv2:scalePoint [ rdfs:label "Whole Note" ; rdf:value 4.0 ] ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "mindur" ; lv2:name "Note-off behaviour"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Quantize as is (may result in zero duration)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Enforce minimum duration of one grid unit" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 ; rdfs:comment "Live event quantization. This filter aligns incoming MIDI events to a fixed time-grid. Since the effect operates on a live-stream it will introduce latency: Events will be delayed until the next 'tick'. If the plugin-host provides BBT information, the events are aligned to the host's clock otherwise the effect runs on its own time."
 .

 mflt:randvelocity
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Velocity Randomization" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channel" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "randfact" ; lv2:name "Velocity Randomization"; lv2:minimum 0.0 ; lv2:maximum 127.0 ; lv2:default 8.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "mode" ; lv2:name "Random Mode"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 1; lv2:scalePoint [ rdfs:label "Absolute (equal distribution)" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Normalized (standard deviation)" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "" ]

 ; rdfs:comment "Randomize Velocity of MIDI notes (both note on and note off)."
 .

 mflt:scalecc
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Scale CC Value" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "lower" ; lv2:name "Parameter (Min)"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "lower end of parameter-range (inclusive)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "upper" ; lv2:name "Parameter (Max)"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 127; lv2:portProperty lv2:integer; rdfs:comment "upper end of parameter-range (inclusive)" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "pmode" ; lv2:name "Parameter Mode"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Bypass" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Include Range" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Exclude Range" ; rdf:value 2 ] ; rdfs:comment "" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "valmul" ; lv2:name "Value Scale"; lv2:minimum -10.0 ; lv2:maximum 10.0 ; lv2:default 1.0; rdfs:comment "" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "valoff" ; lv2:name "Value Offset"; lv2:minimum -64 ; lv2:maximum 64 ; lv2:default 0; lv2:portProperty lv2:integer; rdfs:comment "" ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "vmode" ; lv2:name "Value Mode"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Clamp to 0..127" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Reflect Overflow (-1 to 1, 128 to 127)" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Truncate Overflow (-1 to 127, 128 to 0)" ; rdf:value 2 ] ; rdfs:comment "" ]

 ; rdfs:comment "Modify the value (data-byte) of a MIDI control change message."
 .

 mflt:onechannelfilter
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Simple Channel Filter" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channel" ; lv2:name "Channel"; lv2:minimum 1 ; lv2:maximum 16 ; lv2:default 1; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI channel that can pass." ]

 ; rdfs:comment "MIDI channel filter. Only data for selected channel shall pass. This filter only affects midi-data which is channel relevant (ie note-on/off, control and program changes, key and channel pressure and pitchbend). MIDI-SYSEX and Realtime message are always passed on. See also 'MIDI Channel Map' and 'MIDI Channel Filter' filters." ;
 .

 mflt:sostenuto
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Sostenuto" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "sostenuto" ; lv2:name "Sostenuto [sec]"; lv2:minimum 0.0 ; lv2:maximum 600.0 ; lv2:default 0.0; units:unit units:s ; rdfs:comment "Time to delay the note-off signal." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "pedal" ; lv2:name "Pedal Mode"; lv2:minimum 0 ; lv2:maximum 2 ; lv2:default 1; lv2:scalePoint [ rdfs:label "off" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "on" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "CC64" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "CC66" ; rdf:value 3 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "Mode of the sustain pedal. Fixed on (pedal pressed) or off (pedal released) for notes of all MIDI channels. The on/off state can alternatively be set by CC, in which case it's per MIDI-channel." ]

 ; rdfs:comment "This filter delays note-off messages by a given time, emulating a piano sostenuto pedal. When the pedal is released, note-off messages that are queued will be sent immediately. The delay-time can be changed dynamically, changes do affects note-off messages that are still queued."
 .

 mflt:tonalpedal
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Tonal Pedal" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "pedal" ; lv2:name "Pedal CC"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:scalePoint [ rdfs:label "CC64" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "CC66" ; rdf:value 1 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "forward_cc" ; lv2:name "Forward CC"; lv2:minimum 0 ; lv2:maximum 1 ; lv2:default 0; lv2:portProperty lv2:integer; lv2:portProperty lv2:toggled ]
 ; rdfs:comment "This filter holds any notes that are currently played when the sustain pedal is pressed for as long as the pedal remains pressed. Releasing the pedal sends Note-Off events. New notes played after presseing the pedal are not affected."
 .

 mflt:velocitygamma
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Velocity Gamma" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channel" ; lv2:name "Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "ongamma" ; lv2:name "Note-on Gamma"; lv2:minimum 0.0 ; lv2:maximum 5.0 ; lv2:default 1.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "offgamma" ; lv2:name "Note-off Gamma"; lv2:minimum 0.0 ; lv2:maximum 5.0 ; lv2:default 1.0; ]
 ; rdfs:comment "Change the velocity of note events with separate controls for Note-on and Note-off. Velocities are first normalized to the range 0..1, then the gamma is applied as an exponent, and then the result is scaled back onto the 0..127 range. Higher gamma values produce a 'softer' velocity curve, lower gamma values make the low end harder. Gamma = 0 effectively produces a constant velocity."
 .

 mflt:velocityrange
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Velocity-Range Filter" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channelf" ; lv2:name "Filter Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "lower" ; lv2:name "Min Volume"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 0; lv2:portProperty lv2:integer ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "upper" ; lv2:name "Max Volume"; lv2:minimum 0 ; lv2:maximum 127 ; lv2:default 127; lv2:portProperty lv2:integer ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "mode" ; lv2:name "Operation Mode"; lv2:minimum 0 ; lv2:maximum 3 ; lv2:default 1; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; lv2:scalePoint [ rdfs:label "Bypass" ; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "Include Range" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "Exclude Range" ; rdf:value 2 ] ; ]

 ; rdfs:comment "Filter MIDI note-on events according to velocity. Note-on events outside the allowed range are discarded. If a Note-off is received for a note that was previously filtered, it is also not passed though. If the allowed range changes, note-off events are sent to currently active notes that end up outside the valid range."
 .

 mflt:velocityscale
 a lv2:Plugin, lv2:MIDIPlugin ; doap:name "MIDI Velocity Adjust" ;   lv2:microVersion 9 ;lv2:minorVersion 1551 ; doap:license <http://usefulinc.com/doap/licenses/gpl> ; lv2:project <http://gareus.org/oss/lv2/midifilter> ; lv2:optionalFeature lv2:hardRTCapable ; lv2:requiredFeature urid:map ; lv2:port [ a atom:AtomPort , lv2:InputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 0 ; lv2:symbol "midiin" ; lv2:name "MIDI In" ] , [ a atom:AtomPort , lv2:OutputPort ; atom:bufferType atom:Sequence ; atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; lv2:index 1 ; lv2:symbol "midiout" ; lv2:name "MIDI Out"; ] , [ a lv2:OutputPort, lv2:ControlPort ; lv2:name "latency" ; lv2:index 2 ; lv2:symbol "latency" ; lv2:minimum 0 ; lv2:maximum 192000 ; lv2:portProperty lv2:reportsLatency, lv2:integer, pprops:notOnGUI; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 3 ; lv2:symbol "channel" ; lv2:name "Channel"; lv2:minimum 0 ; lv2:maximum 16 ; lv2:default 0; lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ] ; lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ] ; lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ] ; lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ] ; lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ] ; lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ] ; lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ] ; lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ] ; lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ] ; lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ] ; lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ] ; lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ] ; lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ] ; lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ] ; lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ] ; lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ] ; lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ] ; lv2:portProperty lv2:integer; lv2:portProperty lv2:enumeration; rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any). Data on other channels is passed though unmodified." ]

 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 4 ; lv2:symbol "onmin" ; lv2:name "Note-on Min"; lv2:minimum 1.0 ; lv2:maximum 127.0 ; lv2:default 1.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 5 ; lv2:symbol "onmax" ; lv2:name "Note-on Max"; lv2:minimum 0.0 ; lv2:maximum 127.0 ; lv2:default 127.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 6 ; lv2:symbol "onoff" ; lv2:name "Note-on Offset"; lv2:minimum -64.0 ; lv2:maximum 64.0 ; lv2:default 0.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 7 ; lv2:symbol "offmin" ; lv2:name "Note-off Min"; lv2:minimum 0.0 ; lv2:maximum 127.0 ; lv2:default 0.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 8 ; lv2:symbol "offmax" ; lv2:name "Note-off Max"; lv2:minimum 0.0 ; lv2:maximum 127.0 ; lv2:default 127.0; ]
 , [ a lv2:InputPort, lv2:ControlPort ; lv2:index 9 ; lv2:symbol "offoff" ; lv2:name "Note-off Offset"; lv2:minimum -64.0 ; lv2:maximum 64.0 ; lv2:default 0.0; ]
 ; rdfs:comment "Change the velocity of note events with separate controls for Note-on and Note-off. The input range 1 - 127 is mapped to the range between Min and Max. If Min is greater than Max, the range is reversed. The offsets value is added to the velocity event after mapping the Min/Max range."
 .
