Files
op-pedal/lv2/aarch64/ToobAmp.lv2/ToobLooperStereo.ttl
T

727 lines
21 KiB
Turtle

@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
@prefix epp: <http://lv2plug.in/ns/ext/port-props#> .
@prefix uiext: <http://lv2plug.in/ns/extensions/ui#> .
@prefix idpy: <http://harrisonconsoles.com/lv2/inlinedisplay#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix mod: <http://moddevices.com/ns/mod#> .
@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
@prefix work: <http://lv2plug.in/ns/ext/worker#> .
@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
@prefix state: <http://lv2plug.in/ns/ext/state#> .
@prefix urid: <http://lv2plug.in/ns/ext/urid#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix ui: <http://lv2plug.in/ns/extensions/ui#> .
@prefix pprop: <http://lv2plug.in/ns/ext/port-props#> .
@prefix pipedal_ui: <http://github.com/rerdavies/pipedal/ui#> .
@prefix looperPrefix: <http://two-play.com/plugins/toob-looper#> .
@prefix myprefix: <http://two-play.com/plugins/toob-looper-stereo#> .
myprefix:stereoInGroup
a pg:StereoGroup, pg:InputGroup ;
rdfs:label "Stereo Input" ;
lv2:symbol "in_g" .
myprefix:steroOutGroup a pg:Group ;
a pg:StereoGroup, pg:OuputGroup ;
rdfs:label "Stereo Output" ;
lv2:symbol "out_g" .
myprefix:syncGroup
a pg:ControlGroup ;
lv2:name "Clock" ;
lv2:symbol "sync_g" .
myprefix:loop_main_group
a pg:ControlGroup ;
lv2:name "Main Loop" ;
lv2:symbol "loop_main_group" .
myprefix:loop2_group
a pg:ControlGroup ;
lv2:name "Loop 2" ;
lv2:symbol "loop2_group" .
myprefix:loop3_group
a pg:ControlGroup ;
lv2:name "Loop 3" ;
lv2:symbol "loop3_group" .
myprefix:loop4_group
a pg:ControlGroup ;
lv2:name "Loop 4" ;
lv2:symbol "loop4_group" .
myprefix:options_group
a pg:ControlGroup ;
lv2:name "Options" ;
lv2:symbol "options_group" .
myprefix:output_group
a pg:ControlGroup ;
lv2:name "Output" ;
lv2:symbol "output_group" .
<http://two-play.com/rerdavies#me>
a foaf:Person ;
foaf:name "Robin Davies" ;
foaf:mbox <mailto:rerdavies@gmail.com> ;
foaf:homepage <https://github.com/sponsors/rerdavies> .
<http://two-play.com/plugins/toob-looper-stereo>
a lv2:Plugin ,
lv2:UtilityPlugin ;
doap:name "TooB 4Looper (stereo)"
;
doap:license <https://opensource.org/license/mit/> ;
doap:maintainer <http://two-play.com/rerdavies#me> ;
lv2:minorVersion 1 ;
lv2:microVersion 57 ;
ui:ui <http://two-play.com/plugins/toob-looper-stereo-ui>;
patch:readable
looperPrefix:audioFile;
patch:writable
looperPrefix:audioFile;
lv2:extensionData state:interface ;
rdfs:comment """
A Stereo Looper.
- A single tap on the bound midi controller will start recording.
- A second tap with mark the end of the loop, and start playback.
- Subsequent taps will toggle overdub mode. When overdubbing, new audio input will be blended with the existing loop.
- A touble tap will stop playback.
- To erase an overdub, long press the MIDI controller. The loop will return to the state that it was in before the overdub was made.
""" ;
mod:brand "TooB";
mod:label "4Looper";
lv2:optionalFeature lv2:hardRTCapable;
lv2:port
################# MAIN Loop
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 0;
lv2:symbol "stop1" ;
lv2:name "⏹";
rdfs:comment "Reset loop 1.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop_main_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 1;
lv2:symbol "record1" ;
lv2:name "⏺";
rdfs:comment "Record/Overdub loop 1";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop_main_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 2;
lv2:symbol "record_led1" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:loop_main_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 3;
lv2:symbol "play1" ;
lv2:name "⏵";
rdfs:comment "Play Loop 1. Click again to stop.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop_main_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 4;
lv2:symbol "play_led1" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "green";
pg:group myprefix:loop_main_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 5;
lv2:symbol "position1" ;
rdfs:comment "Time";
lv2:name "\u00A0\u00A0\u00A0\u00A0";
units:unit units:pc ;
lv2:default 0.0 ;
lv2:minimum 0.0 ;
lv2:maximum 100.0 ;
pg:group myprefix:loop_main_group ;
],
################# Loop2
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 6;
lv2:symbol "stop2" ;
lv2:name "⏹";
rdfs:comment "Reset loop 2.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop2_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 7;
lv2:symbol "record2" ;
lv2:name "⏺";
rdfs:comment "Record/Overdub loop 2";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop2_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 8;
lv2:symbol "record_led2" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:loop2_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 9;
lv2:symbol "play2" ;
lv2:name "⏵";
rdfs:comment "Play Loop 2. Click again to stop.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop2_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 10;
lv2:symbol "play_led2" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "green";
pg:group myprefix:loop2_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 11;
lv2:symbol "position2" ;
rdfs:comment "Time";
lv2:name "\u00A0\u00A0\u00A0\u00A0";
units:unit units:pc ;
lv2:default 0.0 ;
lv2:minimum 0.0 ;
lv2:maximum 100.0 ;
pg:group myprefix:loop2_group ;
],
################# Loop3
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 12;
lv2:symbol "stop3" ;
lv2:name "⏹";
rdfs:comment "Reset loop 3.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop3_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 13;
lv2:symbol "record3" ;
lv2:name "⏺";
rdfs:comment "Record/Overdub loop 3";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop3_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 14;
lv2:symbol "record_led3" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:loop3_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 15;
lv2:symbol "play3" ;
lv2:name "⏵";
rdfs:comment "Play Loop 3. Click again to stop.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop3_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 16;
lv2:symbol "play_led3" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "green";
pg:group myprefix:loop3_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 17;
lv2:symbol "position3" ;
rdfs:comment "Time";
lv2:name "\u00A0\u00A0\u00A0\u00A0";
units:unit units:pc ;
lv2:default 0.0 ;
lv2:minimum 0.0 ;
lv2:maximum 100.0 ;
pg:group myprefix:loop3_group ;
],
################# Loop4
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 18;
lv2:symbol "stop4" ;
lv2:name "⏹";
rdfs:comment "Reset loop 4.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop4_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 19;
lv2:symbol "record4" ;
lv2:name "⏺";
rdfs:comment "Record/Overdub loop 4";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop4_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 20;
lv2:symbol "record_led4" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:loop4_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 21;
lv2:symbol "play4" ;
lv2:name "⏵";
rdfs:comment "Play Loop 4. Click again to stop.";
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled,pprop:trigger;
pg:group myprefix:loop4_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 22;
lv2:symbol "play_led4" ;
lv2:name "";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "green";
pg:group myprefix:loop4_group ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 23;
lv2:symbol "position4" ;
rdfs:comment "Time";
lv2:name "\u00A0\u00A0\u00A0\u00A0";
units:unit units:pc ;
lv2:default 0.0 ;
lv2:minimum 0.0 ;
lv2:maximum 100.0 ;
pg:group myprefix:loop4_group ;
],
###### Sync
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 24;
lv2:symbol "bar_led" ;
lv2:name "\u00A0\u00A0Bar\u00A0\u00A0";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:syncGroup ;
],
[
a lv2:OutputPort ,
lv2:ControlPort ;
lv2:index 25;
lv2:symbol "beat_led" ;
lv2:name "\u00A0Beat\u00A0";
lv2:portProperty lv2:toggled ;
lv2:default 0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
pipedal_ui:ledColor "red";
pg:group myprefix:syncGroup ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 26;
lv2:symbol "tempo" ;
lv2:name "Tempo";
lv2:default 120.0 ;
lv2:minimum 40.0;
lv2:maximum 240.0;
units:unit units:bpm;
rdfs:comment "Tempo in quarter-notes per minute"
; pg:group myprefix:syncGroup
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 27;
lv2:symbol "timesig" ;
rdfs:comment "Time Signature";
lv2:name "TimeSig";
lv2:default 2 ;
lv2:minimum 0;
lv2:maximum 5;
lv2:portProperty lv2:enumeration ;
lv2:scalePoint [
rdfs:label "2/2" ;
rdf:value 0
] , [
rdfs:label "3/4" ;
rdf:value 1
] , [
rdfs:label "4/4" ;
rdf:value 2
] ,
[
rdfs:label "5/4" ;
rdf:value 3
] ,
[
rdfs:label "6/8" ;
rdf:value 4
] ,
[
rdfs:label "7/4" ;
rdf:value 5
];
pg:group myprefix:syncGroup
],
########## Options
[
lv2:name "Count In" ;
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 28;
lv2:symbol "rec_count_in" ;
lv2:default 1.0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled;
rdfs:comment "Whether to count in when starting the main loop.";
pg:group myprefix:options_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 29;
lv2:symbol "bars" ;
lv2:name "Bars";
lv2:default 0 ;
lv2:minimum 0;
lv2:maximum 32;
units:unit units:bar ;
lv2:portProperty lv2:integer;
rdfs:comment "Loop length in bars. Set to minimum for arbitrary length loops.";
pg:group myprefix:options_group ;
lv2:scalePoint [
rdfs:label "Free" ;
rdf:value 0.0
]
],
[
lv2:name "Rec Sync" ;
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 30;
lv2:symbol "rec_sync_option" ;
lv2:default 1.0 ;
lv2:minimum 0.0;
lv2:maximum 1.0;
lv2:portProperty lv2:toggled;
rdfs:comment "Whether to sync the start of the loop with the main loop when recording secondary loops.";
pg:group myprefix:options_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 31;
lv2:symbol "loop_end_option" ;
lv2:name "On Rec End";
lv2:default 1.0 ;
lv2:minimum 1.0;
lv2:maximum 2.0;
lv2:portProperty lv2:enumeration;
rdfs:comment "(One-control MIDI operation only) Whether to go to OVERDUB or PLAY state when recording of the main loop ends.";
lv2:scalePoint [
rdfs:label "REC->PLAY" ;
rdf:value 1.0
] , [
rdfs:label "REC->DUB" ;
rdf:value 2.0
] ;
pg:group myprefix:options_group ;
],
[
a lv2:InputPort ,
lv2:ControlPort ;
lv2:index 32;
lv2:symbol "level" ;
lv2:name "Level";
lv2:name "Level";
pg:group myprefix:output_group ;
lv2:default 0 ;
lv2:minimum -60.0;
lv2:maximum 30.0;
lv2:scalePoint [
rdfs:label "-INF" ;
rdf:value -60.0
];
units:unit units:db
],
################# Audio/Control Busses
[
a lv2:AudioPort ,
lv2:InputPort ;
lv2:index 33 ;
lv2:symbol "in" ;
lv2:name "In";
pg:group myprefix:stereoInGroup ;
lv2:designation pg:left
],
[
a lv2:AudioPort ,
lv2:OutputPort ;
lv2:index 34 ;
lv2:symbol "out" ;
lv2:name "Out" ;
pg:group myprefix:stereoOutGroup ;
lv2:designation pg:left
],
[
a atom:AtomPort ,
lv2:InputPort ;
lv2:index 35 ;
lv2:symbol "controlIn" ;
lv2:name "ControlIn"
],
[
a atom:AtomPort ,
lv2:OutputPort ;
lv2:index 36 ;
lv2:symbol "controlOut" ;
lv2:name "ControlOut"
],
[
a lv2:AudioPort ,
lv2:InputPort ;
lv2:index 37;
lv2:symbol "inR" ;
lv2:name "InR" ;
pg:group myprefix:stereoInGroup ;
lv2:designation pg:right
],
[
a lv2:AudioPort ,
lv2:OutputPort ;
lv2:index 38 ;
lv2:symbol "outR" ;
lv2:name "OutR" ;
pg:group myprefix:stereoOutGroup ;
lv2:designation pg:right
]
;
.
<http://two-play.com/plugins/toob-record-stereo-ui>
a ui:X11UI ;
lv2:binary <.so>;
lv2:extensionData ui:resize ;
lv2:extensionData ui:idleInterface ;
lv2:requiredFeature ui:idleInterface ;
.