@prefix doap:  <http://usefulinc.com/ns/doap#> .
@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 lv2:     <http://lv2plug.in/ns/lv2core#> .
@prefix pset: <http://lv2plug.in/ns/ext/presets#> .
@prefix lv2atom: <http://lv2plug.in/ns/ext/atom#> .
@prefix lv2midi: <http://lv2plug.in/ns/ext/midi#> .
@prefix lv2time: <http://lv2plug.in/ns/ext/time#> .
@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix ui:   <http://lv2plug.in/ns/extensions/ui#> .
@prefix pprops:   <http://lv2plug.in/ns/ext/port-props#> .

<http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio>
a param:ControlGroup ;
lv2:name "Audio Signal" ;
lv2:symbol "Audio_Signal" .

<http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi>
a param:ControlGroup ;
lv2:name "MIDI Signal" ;
lv2:symbol "MIDI_Signal" .

<http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl>
a param:ControlGroup ;
lv2:name "Control Signal" ;
lv2:symbol "Control_Signal" .


<http://ssj71.github.io/infamousPlugins/plugs.html#envfollower>
        a lv2:Plugin, lv2:EnvelopePlugin ;
        doap:name "the infamous envelope follower" ;
        doap:license <http://opensource.org/licenses/GPL-2.0> ;
        doap:description "Fully featured envelope follower";
        doap:maintainer [
                foaf:name "Spencer Jackson" ;
                foaf:homepage <http://ssj71.github.io/infamousPlugins> ;
                foaf:mbox <mailto:ssjackson71@gmail.com> ;
        ] ;
        lv2:minorVersion 0 ;
        lv2:microVersion 1 ;
        rdfs:comment "This envelope follower follows the volume envelope of an audio signal and produces a midi control signal. It can be used for things like a sidechained filter cutoff, ducking, or making any other effects volume responsive.";
        lv2:requiredFeature <http://lv2plug.in/ns/ext/urid#map> ;
        lv2:optionalFeature lv2:hardRTCapable ;
        ui:ui <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower_ui> ;

        lv2:port [
                a lv2:InputPort, lv2:AudioPort ;
                lv2:index 0 ;
                lv2:symbol "INPUT" ;
                lv2:name "Audio In" ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:AudioPort ;
                lv2:index 1 ;
                lv2:symbol "OUTPUT" ;
                lv2:name "Audio Out" ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2atom:AtomPort ;
                lv2atom:bufferType lv2atom:Sequence ;
                lv2atom:supports lv2midi:MidiEvent ;
                lv2:index 2 ;
                lv2:symbol "MIDI_OUT";
                lv2:name "MIDI Out";
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:ControlPort ;
                lv2:index 3 ;
                lv2:symbol "CTL_IN";
                lv2:name "Input Level";
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:ControlPort ;
                lv2:index 4 ;
                lv2:symbol "CTL_OUT";
                lv2:name "Control Out";
                lv2:scalePoint [ rdfs:label "Min"; rdf:value 0.0 ] ;
                lv2:scalePoint [ rdfs:label "Max"; rdf:value 1.0 ] ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
        ] ;
        lv2:port [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 5 ;
                lv2:symbol "PEAKRMS" ;
                lv2:name "Peak/RMS" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 6 ;
                lv2:symbol "THRESHOLD" ;
                lv2:name "Threshold" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 7 ;
                lv2:symbol "SATURATION" ;
                lv2:name "Saturation" ;
                lv2:default 1.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 2.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 8 ;
                lv2:symbol "ATIME" ;
                lv2:name "Attack Time" ;
                lv2:portProperty pprops:logarithmic ;
                lv2:default 0.01 ;
                lv2:minimum 0.001 ;
                lv2:maximum 15.0 ;
                units:unit units:s ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 9 ;
                lv2:symbol "DTIME" ;
                lv2:name "Decay Time" ;
                lv2:portProperty pprops:logarithmic ;
                lv2:default 1.0 ;
                lv2:minimum 0.001 ;
                lv2:maximum 30.0 ;
                units:unit units:s ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index  10 ;
                lv2:symbol "CHANNEL" ;
                lv2:name "MIDI Channel" ;
                lv2:portProperty lv2:integer ;
                lv2:default 1 ;
                lv2:minimum 1 ;
                lv2:maximum 16 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 11 ;
                lv2:symbol "CONTROL_NO" ;
                lv2:name "MIDI Control Number" ;
                lv2:portProperty lv2:integer ;
                lv2:default 0 ;
                lv2:minimum 0 ;
                lv2:maximum 127 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 12 ;
                lv2:symbol "MMINV" ;
                lv2:name "MIDI Minimum Value" ;
                lv2:portProperty lv2:integer ;
                lv2:default 0 ;
                lv2:minimum 0 ;
                lv2:maximum 126 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 13 ;
                lv2:symbol "MMAXV" ;
                lv2:name "MIDI Maximum Value" ;
                lv2:portProperty lv2:integer ;
                lv2:default 127 ;
                lv2:minimum 1 ;
                lv2:maximum 127 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 14 ;
                lv2:symbol "MDIRECTION" ;
                lv2:name "MIDI Direction" ;
                lv2:portProperty lv2:integer ;
                lv2:scalePoint [ rdfs:label "Normal"; rdf:value 0 ] ;
                lv2:scalePoint [ rdfs:label "Reverse"; rdf:value 1 ] ;
                lv2:default 0 ;
                lv2:minimum 0 ;
                lv2:maximum 1 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:midi> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 15 ;
                lv2:symbol "CMINV" ;
                lv2:name "CV Port Minimum Value" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
                lv2:portProperty pprops:notOnGUI; #deprecated
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 16 ;
                lv2:symbol "CMAXV" ;
                lv2:name "CV Port Maximum Value" ;
                lv2:default 1.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
                lv2:portProperty pprops:notOnGUI; #deprecated
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 17 ;
                lv2:symbol "CDIRECTION" ;
                lv2:name "CV Port Direction" ;
                lv2:portProperty lv2:integer ;
                lv2:scalePoint [ rdfs:label "Normal"; rdf:value 0 ] ;
                lv2:scalePoint [ rdfs:label "Reverse"; rdf:value 1 ] ;
                lv2:default 0 ;
                lv2:minimum 0 ;
                lv2:maximum 1 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
                lv2:portProperty pprops:notOnGUI; #deprecated
        ] .


<http://ssj71.github.io/infamousPlugins/plugs.html#envfollowerCV>
        a lv2:Plugin, lv2:EnvelopePlugin ;
        doap:name "the infamous envelope follower (CV)" ;
        doap:license <http://opensource.org/licenses/GPL-2.0> ;
        doap:description "Fully featured envelope follower with Control Voltage output";
        doap:maintainer [
                foaf:name "Spencer Jackson" ;
                foaf:homepage <http://ssj71.github.io/infamousPlugins> ;
                foaf:mbox <mailto:ssjackson71@gmail.com> ;
        ] ;
        lv2:minorVersion 0 ;
        lv2:microVersion 1 ;
        rdfs:comment "This envelope follower follows the volume envelope of an audio signal and produces a LV2 Control Voltage signal. It can be used for things like a sidechained filter cutoff, ducking, or making any other effects volume responsive.";
        lv2:requiredFeature <http://lv2plug.in/ns/ext/urid#map> ;
        lv2:optionalFeature lv2:hardRTCapable ;
        ui:ui <http://ssj71.github.io/infamousPlugins/plugs.html#envfollowerCV_ui> ;

        lv2:port [
                a lv2:InputPort, lv2:AudioPort ;
                lv2:index 0 ;
                lv2:symbol "INPUT" ;
                lv2:name "Audio In" ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:AudioPort ;
                lv2:index 1 ;
                lv2:symbol "OUTPUT" ;
                lv2:name "Audio Out" ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:CVPort ;
                lv2:index 2 ;
                lv2:symbol "CV_OUT";
                lv2:name "CV Out";
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:ControlPort ;
                lv2:index 3 ;
                lv2:symbol "CTL_IN";
                lv2:name "Input Level";
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
        ] ;
        lv2:port [
                a lv2:OutputPort, lv2:ControlPort ;
                lv2:index 4 ;
                lv2:symbol "CTL_OUT";
                lv2:name "Control Out";
                lv2:scalePoint [ rdfs:label "Min"; rdf:value 0.0 ] ;
                lv2:scalePoint [ rdfs:label "Max"; rdf:value 1.0 ] ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
        ] ;
        lv2:port [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 5 ;
                lv2:symbol "PEAKRMS" ;
                lv2:name "Peak/RMS" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 6 ;
                lv2:symbol "THRESHOLD" ;
                lv2:name "Threshold" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 7 ;
                lv2:symbol "SATURATION" ;
                lv2:name "Saturation" ;
                lv2:default 1.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 2.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 8 ;
                lv2:symbol "ATIME" ;
                lv2:name "Attack Time" ;
                lv2:portProperty pprops:logarithmic ;
                lv2:default 0.01 ;
                lv2:minimum 0.001 ;
                lv2:maximum 2.0 ;
                units:unit units:s ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 9 ;
                lv2:symbol "DTIME" ;
                lv2:name "Decay Time" ;
                lv2:portProperty pprops:logarithmic ;
                lv2:default 1.0 ;
                lv2:minimum 0.001 ;
                lv2:maximum 2.0 ;
                units:unit units:s ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:audio> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 10 ;
                lv2:symbol "CMINV" ;
                lv2:name "CV Port Minimum Value" ;
                lv2:default 0.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 11 ;
                lv2:symbol "CMAXV" ;
                lv2:name "CV Port Maximum Value" ;
                lv2:default 1.0 ;
                lv2:minimum 0.0 ;
                lv2:maximum 1.0 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
        ], [
                a lv2:InputPort, lv2:ControlPort ;
                lv2:index 12 ;
                lv2:symbol "CDIRECTION" ;
                lv2:name "CV Port Direction" ;
                lv2:portProperty lv2:integer ;
                lv2:scalePoint [ rdfs:label "Normal"; rdf:value 0 ] ;
                lv2:scalePoint [ rdfs:label "Reverse"; rdf:value 1 ] ;
                lv2:default 0 ;
                lv2:minimum 0 ;
                lv2:maximum 1 ;
                pg:group <http://ssj71.github.io/infamousPlugins/plugs.html#envfollower:group:ctl> ;
        ] .

