@prefix lv2:  <http://lv2plug.in/ns/lv2core#>.
@prefix doap: <http://usefulinc.com/ns/doap#>.
@prefix epp: <http://lv2plug.in/ns/ext/port-props#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
@prefix urid: <http://lv2plug.in/ns/ext/urid#> .

<http://polyeffects.com/lv2/midi_to_cv_poly> 
a lv2:Plugin;

doap:name "MIDI to CV Poly";
doap:license "GPL v2+" ;
doap:developer [
    foaf:name "Bram Giesen & Jarno Verheesen";
    foaf:homepage <https://moddevices.com>;
    foaf:mbox <mailto:bram@moddevices.com>;
    ];

doap:maintainer [
    foaf:name "MOD";
    foaf:homepage <https://moddevices.com>;
    foaf:mbox <mailto:bram@moddevices.com>;
    ];

    lv2:minorVersion 1;
    lv2:microVersion 1;

rdfs:comment """
MIDI to CV poly enables you to convert a midi message to polyphonic control voltages, 1/12 volt per note.
""";

lv2:port
[
    a lv2:InputPort, atom:AtomPort;
    atom:bufferType atom:Sequence;
    atom:supports midi:MidiEvent;
    lv2:designation lv2:control;
    lv2:index 0;
    lv2:symbol "MIDIIn";
    lv2:name "MIDI Input";
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 1;
    lv2:symbol "Pitch1";
    lv2:name "Pitch 1";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 2;
    lv2:symbol "Pitch2";
    lv2:name "Pitch 2";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 3;
    lv2:symbol "Pitch3";
    lv2:name "Pitch 3";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 4;
    lv2:symbol "Pitch4";
    lv2:name "Pitch 4";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 5;
    lv2:symbol "vel";
    lv2:name "Velocity";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 6;
    lv2:symbol "Gate1";
    lv2:name "Gate 1";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 7;
    lv2:symbol "Gate2";
    lv2:name "Gate 2";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 8;
    lv2:symbol "Gate3";
    lv2:name "Gate 3";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:OutputPort, lv2:CVPort;
    lv2:index 9;
    lv2:symbol "Gate4";
    lv2:name "Gate 4";
    lv2:minimum 0.0;
    lv2:maximum 10.0;
],
[
    a lv2:InputPort ,
    lv2:ControlPort ;
    lv2:index 10 ;
    lv2:symbol "Octave" ;
    lv2:name "Octave";
    lv2:default 0 ;
    lv2:minimum -4 ;
    lv2:maximum 4 ;
    lv2:portProperty lv2:integer;
],
[
    a lv2:InputPort ,
    lv2:ControlPort ;
    lv2:index 11 ;
    lv2:symbol "Semitone" ;
    lv2:name "Semitone";
    lv2:default 0 ;
    lv2:minimum -12 ;
    lv2:maximum 12 ;
    lv2:portProperty lv2:integer;
],
[
    a lv2:InputPort ,
    lv2:ControlPort ;
    lv2:index 12 ;
    lv2:symbol "Cent" ;
    lv2:name "Cent";
    lv2:default 0 ;
    lv2:minimum -100 ;
    lv2:maximum 100 ;
    lv2:portProperty lv2:integer;
],
[
    a lv2:InputPort,
    lv2:ControlPort ;
    lv2:index 13;
    lv2:symbol "Panic";
    lv2:name "Panic";
    lv2:default 0;
    lv2:minimum 0;
    lv2:maximum 1;
    lv2:portProperty lv2:integer, lv2:toggled, epp:trigger ;
] ,
[
 	a lv2:InputPort,
	lv2:ControlPort ;
	lv2:index 14;
	lv2:symbol "channel";
	lv2:name "Channel";
	lv2:default 1;
	lv2:minimum 1;
	lv2:maximum 16;
	lv2:portProperty lv2:integer;
].
