@prefix doap:      <http://usefulinc.com/ns/doap#> .
@prefix dc:        <http://purl.org/dc/terms/> .
@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 lv2ext:    <http://lv2plug.in/ns/ext/> .
@prefix pp:        <http://lv2plug.in/ns/ext/port-props#> .
@prefix pg:        <http://lv2plug.in/ns/ext/port-groups#> .
@prefix ui:        <http://lv2plug.in/ns/extensions/ui#> .
@prefix units:     <http://lv2plug.in/ns/extensions/units#> .
@prefix atom:      <http://lv2plug.in/ns/ext/atom#> .
@prefix urid:      <http://lv2plug.in/ns/ext/urid#> .
@prefix opts:      <http://lv2plug.in/ns/ext/options#> .
@prefix rsz:       <http://lv2plug.in/ns/ext/resize-port#> .
@prefix time:      <http://lv2plug.in/ns/ext/time#> .
@prefix hcid:      <http://harrisonconsoles.com/lv2/inlinedisplay#> .
@prefix lsp:       <http://lsp-plug.in/plugins/lv2/> .
@prefix lsp_pg:    <http://lsp-plug.in/plugins/lv2/oscillator_mono/port_groups#> .
@prefix lsp_ui:    <http://lsp-plug.in/ui/lv2/> .
@prefix lsp_dev:   <http://lsp-plug.in/developers/> .


lsp_dev:s_tronci
	a foaf:Person ;
	foaf:name "Stefano Tronci" ;
	foaf:nick "CrocoDuck" ;
	foaf:mbox <mailto:crocoduck.oducks@gmail.com> ;
	foaf:homepage <https://thecrocoduckspond.wordpress.com/#s_tronci>
	.

lsp_dev:lsp
	a foaf:Person ;
	foaf:name "LSP LV2" ;
	foaf:homepage <http://lsp-plug.in/#lsp>
	.

lsp_pg:mono_in
	a pg:MonoGroup, pg:InputGroup ;
	lv2:symbol "mono_in";
	rdfs:label "Mono Input"
	.

lsp_pg:mono_out
	a pg:MonoGroup, pg:OutputGroup ;
	lv2:symbol "mono_out";
	rdfs:label "Mono Output"
	.

lsp:oscillator_mono
	a lv2:Plugin, doap:Project, lv2:OscillatorPlugin ;
	doap:name "LSP Oscillator Mono", "LSP Oszillator Mono"@de ;
	lv2:minorVersion 0 ;
	lv2:microVersion 0 ;
	doap:developer lsp_dev:s_tronci ;
	doap:maintainer lsp_dev:lsp ;
	doap:license "LSP (Linux Studio Plugins)" ;
	lv2:binary <lsp-plugins-lv2.so> ;
	ui:ui lsp_ui:oscillator_mono ;

	lv2:requiredFeature urid:map ;
	lv2:optionalFeature lv2:hardRTCapable, hcid:queue_draw ;
	lv2:extensionData hcid:interface ;
	opts:supportedOption ui:updateRate ;
	dc:replaces <urn:ladspa:5002132> ;

	lv2:port [
		a lv2:InputPort, lv2:AudioPort ;
		lv2:index 0 ;
		lv2:symbol "in" ;
		lv2:name "Input" ;
		pg:group lsp_pg:mono_in ;
		lv2:designation pg:center ;
	] , [
		a lv2:OutputPort, lv2:AudioPort ;
		lv2:index 1 ;
		lv2:symbol "out" ;
		lv2:name "Output" ;
		pg:group lsp_pg:mono_out ;
		lv2:designation pg:center ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 2 ;
		lv2:symbol "bypass" ;
		lv2:name "Bypass" ;
		lv2:portProperty lv2:toggled ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 3 ;
		lv2:symbol "freq" ;
		lv2:name "Frequency" ;
		units:unit units:hz ;
		lv2:portProperty pp:logarithmic, pp:hasStrictBounds ;
		lv2:minimum 20.000000 ;
		lv2:maximum 20000.000000 ;
		lv2:default 440.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 4 ;
		lv2:symbol "gain" ;
		lv2:name "Output gain" ;
		units:unit [
			a units:Unit ;
			rdfs:label "gain" ;
			units:symbol "G" ;
			units:render "%f G" ;
		] ;
		lv2:portProperty pp:logarithmic, pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 10.000000 ;
		lv2:default 1.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 5 ;
		lv2:symbol "dcoff" ;
		lv2:name "DC Offset" ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum -1.000000 ;
		lv2:maximum 1.000000 ;
		lv2:default 0.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 6 ;
		lv2:symbol "scr" ;
		lv2:name "DC Reference" ;
		lv2:portProperty lv2:integer, lv2:enumeration, pp:hasStrictBounds ;
		lv2:scalePoint
			[ rdfs:label "Wave DC"; rdf:value 0 ] ,
			[ rdfs:label "Zero DC"; rdf:value 1 ] ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 7 ;
		lv2:symbol "iniph" ;
		lv2:name "Initial Phase" ;
		units:unit units:degree ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 360.000000 ;
		lv2:default 0.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 8 ;
		lv2:symbol "scm" ;
		lv2:name "Operation Mode" ;
		lv2:portProperty lv2:integer, lv2:enumeration, pp:hasStrictBounds ;
		lv2:scalePoint
			[ rdfs:label "Add"; rdf:value 0 ] ,
			[ rdfs:label "Multiply"; rdf:value 1 ] ,
			[ rdfs:label "Replace"; rdf:value 2 ] ;
		lv2:minimum 0 ;
		lv2:maximum 2 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 9 ;
		lv2:symbol "scom" ;
		lv2:name "Oversampler Mode" ;
		lv2:portProperty lv2:integer, lv2:enumeration, pp:hasStrictBounds ;
		lv2:scalePoint
			[ rdfs:label "None"; rdf:value 0 ] ,
			[ rdfs:label "x2"; rdf:value 1 ] ,
			[ rdfs:label "x3"; rdf:value 2 ] ,
			[ rdfs:label "x4"; rdf:value 3 ] ,
			[ rdfs:label "x6"; rdf:value 4 ] ,
			[ rdfs:label "x8"; rdf:value 5 ] ;
		lv2:minimum 0 ;
		lv2:maximum 5 ;
		lv2:default 5 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 10 ;
		lv2:symbol "scf" ;
		lv2:name "Function" ;
		lv2:portProperty lv2:integer, lv2:enumeration, pp:hasStrictBounds ;
		lv2:scalePoint
			[ rdfs:label "Sine"; rdf:value 0 ] ,
			[ rdfs:label "Cosine"; rdf:value 1 ] ,
			[ rdfs:label "Squared Sine"; rdf:value 2 ] ,
			[ rdfs:label "Squared Cosine"; rdf:value 3 ] ,
			[ rdfs:label "Rectangular"; rdf:value 4 ] ,
			[ rdfs:label "Sawtooth"; rdf:value 5 ] ,
			[ rdfs:label "Trapezoid"; rdf:value 6 ] ,
			[ rdfs:label "Pulsetrain"; rdf:value 7 ] ,
			[ rdfs:label "Parabolic"; rdf:value 8 ] ,
			[ rdfs:label "Band Limited Rectangular"; rdf:value 9 ] ,
			[ rdfs:label "Band Limited Sawtooth"; rdf:value 10 ] ,
			[ rdfs:label "Band Limited Trapezoid"; rdf:value 11 ] ,
			[ rdfs:label "Band Limited Pulsetrain"; rdf:value 12 ] ,
			[ rdfs:label "Band Limited Parabolic"; rdf:value 13 ] ;
		lv2:minimum 0 ;
		lv2:maximum 13 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 11 ;
		lv2:symbol "invss" ;
		lv2:name "Invert Squared Sinusoids" ;
		lv2:portProperty lv2:toggled ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 12 ;
		lv2:symbol "invps" ;
		lv2:name "Invert Parabolic Signal" ;
		lv2:portProperty lv2:toggled ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:default 0 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 13 ;
		lv2:symbol "rdtrt" ;
		lv2:name "Duty Ratio" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 50.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 14 ;
		lv2:symbol "swdth" ;
		lv2:name "Width" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 50.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 15 ;
		lv2:symbol "trsrt" ;
		lv2:name "Raise Ratio" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 25.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 16 ;
		lv2:symbol "tflrt" ;
		lv2:name "Fall Ratio" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 25.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 17 ;
		lv2:symbol "tpwrt" ;
		lv2:name "Positive Width" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 25.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 18 ;
		lv2:symbol "tnwrt" ;
		lv2:name "Negative Width" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 25.000000 ;
	] , [
		a lv2:InputPort, lv2:ControlPort ;
		lv2:index 19 ;
		lv2:symbol "pwdth" ;
		lv2:name "Width" ;
		units:unit units:pc ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:minimum 0.000000 ;
		lv2:maximum 100.000000 ;
		lv2:default 100.000000 ;
	] , [
		a lv2:InputPort, atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports atom:Sequence, time:Position ;
		lv2:designation lv2:control ;
		lv2:index 20 ;
		lv2:symbol "in_ui" ;
		lv2:name "UI Input" ;
		rdfs:comment "UI -> DSP communication" ;
		rsz:minimumSize 5120 ;
	] , [
		a lv2:OutputPort, atom:AtomPort ;
		atom:bufferType atom:Sequence ;
		atom:supports atom:Sequence, time:Position ;
		lv2:designation lv2:control ;
		lv2:index 21 ;
		lv2:symbol "out_ui" ;
		lv2:name "UI Output" ;
		rdfs:comment "DSP -> UI communication" ;
		rsz:minimumSize 12288 ;
	] , [
		a lv2:OutputPort, lv2:ControlPort ;
		lv2:index 22 ;
		lv2:symbol "out_latency" ;
		lv2:name "Latency OUT" ;
		rdfs:comment "DSP -> Host latency report" ;
		lv2:portProperty pp:hasStrictBounds ;
		lv2:portProperty lv2:integer ;
		lv2:portProperty lv2:reportsLatency ;
		lv2:minimum 0 ;
		lv2:maximum 192000 ;
		lv2:default 0 ;
	]
	.

lsp_ui:oscillator_mono
	a ui:X11UI ;
	lv2:minorVersion 0 ;
	lv2:microVersion 0 ;
	lv2:requiredFeature urid:map, ui:idleInterface ;
	lv2:optionalFeature ui:parent, ui:resize, ui:noUserResize, lv2ext:instance-access ;
	lv2:extensionData ui:idleInterface ;
	ui:binary <lsp-plugins-lv2.so> ;

	ui:portNotification [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 2 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 3 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 4 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 5 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 6 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 7 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 8 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 9 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 10 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 11 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 12 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 13 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 14 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 15 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 16 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 17 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 18 ;
		ui:protocol ui:floatProtocol ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 19 ;
		ui:protocol ui:floatProtocol ;
	]  , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 20 ;
		ui:protocol atom:eventTransfer ;
		ui:notifyType atom:Sequence ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 21 ;
		ui:protocol atom:eventTransfer ;
		ui:notifyType atom:Sequence ;
	] , [
		ui:plugin lsp:oscillator_mono ;
		ui:portIndex 22 ;
		ui:protocol ui:floatProtocol ;
	]
	.

