tibia/templates/lv2/data/manifest.ttl.in

180 lines
4.7 KiB
Turtle

{{~it.tibia.lv2.prefixes :p}}
@prefix {{=p.id}}: <{{=p.uri}}> .
{{~}}
{{=it.tibia.lv2.ttlURI(it.lv2.uri)}}
a lv2:Plugin ;
{{~it.lv2.types :t}}
a {{=it.tibia.lv2.ttlURI(t)}} ;
{{~}}
{{?it.lv2.project}}
lv2:project {{=it.tibia.lv2.ttlURI(it.lv2.project)}} ;
{{?}}
lv2:binary <{{=it.product.bundleName}}@DLL_SUFFIX@> ;
doap:name "{{=it.product.name}}" ;
doap:maintainer [
a foaf:Organization ;
foaf:name "{{=it.company.name}}" ;
foaf:mbox <mailto:{{=it.company.email}}> ;
rdfs:seeAlso {{=it.tibia.lv2.ttlURI(it.company.url)}}
] ;
lv2:minorVersion {{=/^([0-9]+)\./.exec(it.lv2.version)[1]}} ;
lv2:microVersion {{=/^[0-9]+\.([0-9]+)/.exec(it.lv2.version)[1]}} ;
{{?(it.tibia.lv2.ports.find(p => p.type == "midi" && !p.optional))}}
lv2:requiredFeature urid:map ;
{{??}}
lv2:optionalFeature urid:map ;
{{?}}
lv2:optionalFeature log:log ;
lv2:optionalFeature lv2:hardRTCapable ;
{{?(it.product.state && it.product.state.dspCustom)}}
lv2:optionalFeature state:threadSafeRestore ;
{{?}}
{{?it.product.ui}}
ui:ui plugin:ui ;
{{?}}
{{?(it.product.state && it.product.state.dspCustom)}}
lv2:extensionData state:interface ;
{{?}}
{{~it.tibia.lv2.parameters:p:i}}
patch:writable plugin:{{=p.id}};
{{~}}
lv2:port [
{{~it.tibia.lv2.ports :p:i}}
{{?p.isBypass}}
a lv2:ControlPort ,
lv2:InputPort ;
lv2:designation lv2:enabled ;
lv2:name "Enabled" ;
lv2:shortName "Enabled" ;
lv2:symbol "enabled" ;
lv2:default 1 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
lv2:portProperty lv2:toggled ;
lv2:portProperty lv2:connectionOptional ;
lv2:portProperty lv2:integer ;
lv2:scalePoint [
rdfs:label "Off" ;
rdf:value 0
] , [
rdfs:label "On" ;
rdf:value 1
] ;
{{??p.isLatency}}
a lv2:ControlPort ,
lv2:OutputPort ;
lv2:designation lv2:latency ;
lv2:name "Latency" ;
lv2:shortName "Latency" ;
lv2:symbol "{{=p.id}}" ;
lv2:portProperty lv2:connectionOptional ;
lv2:portProperty lv2:integer ;
lv2:portProperty lv2:reportsLatency ;
{{??p.isInputParameterMessage}}
a lv2:InputPort ,
atom:AtomPort ;
atom:bufferType atom:Sequence ;
atom:supports patch:Message ;
lv2:designation lv2:control ;
lv2:symbol "InputParameterMessage" ;
lv2:name "InputParameterMessage" ;
{{??p.isOutputParameterMessage}}
a lv2:OutputPort ,
atom:AtomPort ;
atom:bufferType atom:Sequence ;
atom:supports patch:Message ;
lv2:designation lv2:control ;
lv2:symbol "OutputParameterMessage" ;
lv2:name "OutputParameterMessage" ;
{{??}}
a {{?p.type == "control"}}lv2:ControlPort{{??p.type == "midi"}}atom:AtomPort{{??}}{{?p.cv}}lv2:CVPort{{??}}lv2:AudioPort{{?}}{{?}} ,
{{?p.direction == "input"}}lv2:InputPort{{??}}lv2:OutputPort{{?}} ;
lv2:name "{{=p.name}}" ;
{{?"shortName" in p}}
lv2:shortName "{{=p.shortName.substring(0, 16)}}" ;
{{?}}
lv2:symbol "{{=p.id}}" ;
{{?p.type == "control"}}
lv2:minimum {{=p.minimum.toExponential()}} ;
lv2:maximum {{=p.maximum.toExponential()}} ;
lv2:default {{=p.defaultValue.toExponential()}} ;
{{??p.type == "midi"}}
atom:bufferType atom:Sequence ;
atom:supports midi:MidiEvent ;
{{?}}
{{?p.sidechain}}
lv2:portProperty lv2:isSideChain ;
{{?}}
{{?p.control}}
lv2:designation lv2:control ;
{{?}}
{{?p.toggled}}
lv2:portProperty lv2:toggled ;
{{?}}
{{?p.optional}}
lv2:portProperty lv2:connectionOptional ;
{{?}}
{{?p.integer}}
lv2:portProperty lv2:integer ;
{{?}}
{{?p.map == "logarithmic"}}
lv2:portProperty pprops:logarithmic ;
{{?}}
{{?p.scalePoints}}
lv2:scalePoint [
{{~Object.entries(p.scalePoints) :sp:j}}
rdfs:label "{{=sp[0]}}" ;
rdf:value {{=sp[1].toExponential()}}
{{?j < Object.entries(p.scalePoints).length - 1}}
] , [
{{??}}
] ;
{{?}}
{{~}}
{{?}}
{{?p.list}}
lv2:portProperty lv2:enumeration ;
{{?}}
{{?p.unit && p.unit in it.tibia.lv2.units}}
units:unit {{=it.tibia.lv2.ttlURI(it.tibia.lv2.units[p.unit])}} ;
{{?}}
{{?}}
lv2:index {{=i}}
{{?i < it.tibia.lv2.ports.length - 1}}
] , [
{{??}}
] .
{{?}}
{{~}}
{{~it.tibia.lv2.parameters:p:i}}
plugin:{{=p.id}}
a lv2:Parameter ;
rdfs:label "{{=p.name}}" ;
rdfs:range {{?p.toggled}}atom:Bool{{??p.integer}}atom:Int{{??}}atom:Float{{?}} ;
{{?p.unit && p.unit in it.tibia.lv2.units}}
units:unit {{=it.tibia.lv2.ttlURI(it.tibia.lv2.units[p.unit])}} ;
{{?}}
lv2:minimum {{=p.minimum.toExponential()}} ;
lv2:maximum {{=p.maximum.toExponential()}} ;
lv2:default {{=p.defaultValue.toExponential()}} .
{{~}}
{{?it.product.ui}}
plugin:ui
a ui:@UI_TYPE@ ;
ui:binary <{{=it.product.bundleName}}@DLL_SUFFIX@> ;
{{?!it.product.ui.userResizable}}
lv2:optionalFeature ui:noUserResize ; # doesn't work as lv2:requiredFeature, don't ask me why
{{?!it.product.ui.selfResizable}}
lv2:optionalFeature ui:fixedSize ;
{{?}}
{{?}}
lv2:requiredFeature ui:idleInterface ;
lv2:extensionData ui:idleInterface .
{{?}}