@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 units: <http://lv2plug.in/ns/extensions/units#> .
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
@prefix pprops: <http://lv2plug.in/ns/ext/port-props#> .
@prefix pset: <http://lv2plug.in/ns/ext/presets#> .
@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .  
@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .
@prefix worker:  <http://lv2plug.in/ns/ext/worker#> .
@prefix state:  <http://lv2plug.in/ns/ext/state#> .
@prefix mediatype: <https://tools.ietf.org/html/rfc2046> .
@prefix mime:   <http://www.iana.org/assignments/media-types/media-types.xhtml#> .


@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix ui:   <http://lv2plug.in/ns/extensions/ui#> .

# <https://github.com/Stazed/rakarrack-plus#Echotron_ui>
# 	a ui:X11UI ;
# 	ui:binary <rakarrack-plus_ui.so> ;
# 	lv2:extensionData ui:idleInterface;
# 	.


<https://github.com/Stazed/rakarrack-plus#Echotron:dlyfile>
    a lv2:Parameter ;
    rdfs:label "dly file" ;
    rdfs:range atom:Path ;
    mediatype: mime:text ;
    .

<https://github.com/Stazed/rakarrack-plus#Echotron>
    a lv2:Plugin, lv2:DelayPlugin ;
    doap:name "RKRP Echotron" ;
    doap:description "Extremely Configurable Delay" ;
    lv2:project <https://github.com/Stazed/rakarrack-plus>;
    lv2:minorVersion 3 ;
    lv2:microVersion 1 ;
    rdfs:comment "An extremely-configurable delay that allows up to 127 taps. Individual tap timing can be customized and loaded through text files. You can also have a custom filter on each tap. Several example files included." ;
    lv2:requiredFeature urid:map, worker:schedule ;
    lv2:optionalFeature lv2:hardRTCapable, state:loadDefaultState ;
    lv2:extensionData worker:interface, state:interface ;
#    ui:ui  <https://github.com/Stazed/rakarrack-plus#Echotron_ui> ;
    patch:writable <https://github.com/Stazed/rakarrack-plus#Echotron:dlyfile> ;

    lv2:port [
            a lv2:InputPort, lv2:AudioPort ;
            lv2:index 0 ;
            lv2:symbol "INPUT_L" ;
            lv2:name "Audio In L" ;
    ] ;
    lv2:port [
            a lv2:InputPort, lv2:AudioPort ;
            lv2:index 1 ;
            lv2:symbol "INPUT_R" ;
            lv2:name "Audio In R" ;
    ] ;
    lv2:port [
            a lv2:OutputPort, lv2:AudioPort ;
            lv2:index 2 ;
            lv2:symbol "OUTPUT_L" ;
            lv2:name "Audio Out L" ;
    ] ;
    lv2:port [
            a lv2:OutputPort, lv2:AudioPort ;
            lv2:index 3 ;
            lv2:symbol "OUTPUT_R" ;
            lv2:name "Audio Out R" ;
    ] ;
    lv2:port [
            a lv2:InputPort, atom:AtomPort ;
            lv2:index 4 ;
            lv2:symbol "CONTROL" ;
            lv2:name "Control" ;
            atom:bufferType atom:Sequence ;
            atom:supports patch:Message ;
            lv2:designation lv2:control ;
    ] ;
    lv2:port [
            a lv2:OutputPort, atom:AtomPort ;
            lv2:index 5 ;
            lv2:symbol "NOTIFY" ;
            lv2:name "Notify" ;
            atom:bufferType atom:Sequence ;
            atom:supports patch:Message ;
            lv2:designation lv2:control ;
    ] ;
    lv2:port [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 6 ;
            lv2:symbol "BYPASS" ;
            lv2:name "Bypass" ;
            lv2:default 0 ;
            lv2:minimum 0 ;
            lv2:maximum 1 ;
            lv2:portProperty lv2:integer ;
            lv2:portProperty lv2:toggled ;
        ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 7 ;
            lv2:symbol "DRYWET" ;
            lv2:name "Dry/Wet" ;
            lv2:default 63 ;
            lv2:minimum 0 ;
            lv2:maximum 127 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 8 ;
            lv2:symbol "DEPTH" ;
            lv2:name "Filter Depth" ;
            lv2:default -19 ;
            lv2:minimum -64 ;
            lv2:maximum 64 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 9 ;
            lv2:symbol "WIDTH" ;
            lv2:name "LFO Width" ;
            lv2:default 34 ;
            lv2:minimum 0 ;
            lv2:maximum 127 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 10 ;
            lv2:symbol "LENGTH" ;
            lv2:name "Number of Taps" ;
            lv2:default 4 ;
            lv2:minimum 1 ;
            lv2:maximum 127 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 11 ;
            lv2:symbol "TEMPO" ;
            lv2:name "Tempo" ;
            lv2:default 76 ;
            lv2:minimum 1 ;
            lv2:maximum 600 ;
            lv2:portProperty lv2:integer ;
            units:unit units:bpm ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 12 ;
            lv2:symbol "DAMP" ;
            lv2:name "Dampening" ;
            lv2:default 3 ;
            lv2:minimum 0 ;
            lv2:maximum 127 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 13 ;
            lv2:symbol "LRC" ;
            lv2:name "Left/Right Crossover" ;
            lv2:default -23 ;
            lv2:minimum -64 ;
            lv2:maximum 64 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 14 ;
            lv2:symbol "STDF" ;
            lv2:name "LFO L/R Delay" ;
            lv2:default 96 ;
            lv2:minimum 0 ;
            lv2:maximum 127 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 15 ;
            lv2:symbol "FB" ;
            lv2:name "Feedback" ;
            lv2:default -13 ;
            lv2:minimum -64 ;
            lv2:maximum 64 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 16 ;
            lv2:symbol "PAN" ;
            lv2:name "Pan" ;
            lv2:default 0 ;
            lv2:minimum -64 ;
            lv2:maximum 63 ;
            lv2:portProperty lv2:integer ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 17 ;
            lv2:symbol "MD" ;
            lv2:name "Modulate Delays" ;
            lv2:default 1 ;
            lv2:minimum 0 ;
            lv2:maximum 1 ;
            lv2:portProperty lv2:integer ;
            lv2:portProperty lv2:toggled ; 
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 18 ;
            lv2:symbol "MF" ;
            lv2:name "Modulate Filters" ;
            lv2:default 1 ;
            lv2:minimum 0 ;
            lv2:maximum 1 ;
            lv2:portProperty lv2:integer ;
            lv2:portProperty lv2:toggled ; 
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 19 ;
            lv2:symbol "LFOTYPE" ;
            lv2:name "LFO Type" ;
            lv2:default 1 ;
            lv2:minimum 0 ;
            lv2:maximum 12 ;
            lv2:portProperty lv2:integer ;
            lv2:portProperty lv2:enumeration;
            lv2:scalePoint [ rdfs:label "Sine"; rdf:value 0 ] ;
            lv2:scalePoint [ rdfs:label "Triangle"; rdf:value 1 ] ;
            lv2:scalePoint [ rdfs:label "Ramp Up"; rdf:value 2 ] ;
            lv2:scalePoint [ rdfs:label "Ramp Down"; rdf:value 3 ] ;
            lv2:scalePoint [ rdfs:label "ZigZag"; rdf:value 4 ] ;
            lv2:scalePoint [ rdfs:label "Modulated Square"; rdf:value 5 ] ;
            lv2:scalePoint [ rdfs:label "Modulated Saw"; rdf:value 6 ] ;
            lv2:scalePoint [ rdfs:label "Lorenz Fractal"; rdf:value 7 ] ;
            lv2:scalePoint [ rdfs:label "Lorenz Fractal XY"; rdf:value 8 ] ;
            lv2:scalePoint [ rdfs:label "Random Sample and Hold"; rdf:value 9 ] ;
            lv2:scalePoint [ rdfs:label "Triangle Topped Sine"; rdf:value 10 ] ;
            lv2:scalePoint [ rdfs:label "Triangle Bottomed Sine"; rdf:value 11 ] ;
            lv2:scalePoint [ rdfs:label "Static"; rdf:value 12 ] ;
    ], [
            a lv2:InputPort, lv2:ControlPort ;
            lv2:index 20 ;
            lv2:symbol "AF" ;
            lv2:name "Activate Filters" ;
            lv2:default 1 ;
            lv2:minimum 0 ;
            lv2:maximum 1 ;
            lv2:portProperty lv2:integer ;
            lv2:portProperty lv2:toggled ; 
    ] ;
    state:state [
		<https://github.com/Stazed/rakarrack-plus#Echotron:dlyfile> <SwingPong.dly>
	] 
	.

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:summer>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:ambience>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:arranjer>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:suction>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:suctionflange>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .

<https://github.com/Stazed/rakarrack-plus#Echotron:preset:soft>
        a pset:Preset ;
        lv2:appliesTo <https://github.com/Stazed/rakarrack-plus#Echotron> ;
        rdfs:seeAlso <echotron_presets.ttl> .
