@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix kx:    <http://kxstudio.sf.net/ns/lv2ext/external-ui#> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix midi:  <http://lv2plug.in/ns/ext/midi#> .
@prefix mod:   <http://moddevices.com/ns/mod#> .
@prefix pprop: <http://lv2plug.in/ns/ext/port-props#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ui:    <http://lv2plug.in/ns/extensions/ui#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .

@prefix fat1: <http://gareus.org/oss/lv2/fat1#> .

<http://gareus.org/rgareus#me>
	a foaf:Person;
	foaf:name "Robin Gareus";
	foaf:mbox <mailto:robin@gareus.org>;
	foaf:homepage <http://gareus.org/> .

<http://gareus.org/oss/lv2/fat1>
	a lv2:Plugin, doap:Project, lv2:WaveshaperPlugin;
	doap:license <http://usefulinc.com/doap/licenses/gpl>;
	doap:maintainer <http://gareus.org/rgareus#me>;
	doap:name "Autotune";
	rdfs:comment "AT1 is an 'autotuner', normally used to correct the pitch of a voice singing (slightly) out of tune. The 'expected' pitch can be controlled by MIDI, or be a fixed set of notes. AT1 can probably be used on some instruments as well, but is primarily designed to cover the vocal range.";
	lv2:microVersion 0 ;lv2:minorVersion 772 ;
  ui:ui fat1:ui_gl ;
	lv2:optionalFeature lv2:hardRTCapable;
	lv2:requiredFeature urid:map;
	
	
	

	lv2:port [
		a atom:AtomPort, lv2:InputPort;
		atom:bufferType atom:Sequence;
		atom:supports midi:MidiEvent;
		lv2:index 0;
		lv2:symbol "midiin";
		lv2:name "MIDI In";
		lv2:portProperty lv2:isSideChain;
	] , [
		a lv2:AudioPort ,
			lv2:InputPort ;
		lv2:index 1 ;
		lv2:symbol "in" ;
		lv2:name "Input"
	] , [
		a lv2:AudioPort ,
			lv2:OutputPort ;
		lv2:index 2 ;
		lv2:symbol "out" ;
		lv2:name "Output"
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 3 ;
		lv2:symbol "mode" ;
		lv2:name "Mode";
		lv2:default 0 ;
		lv2:minimum 0 ;
		lv2:maximum 2 ;
		lv2:portProperty lv2:integer, lv2:enumeration;
		lv2:scalePoint [ rdfs:label  "Auto"; rdf:value 0 ; ] ;
		lv2:scalePoint [ rdfs:label  "MIDI"; rdf:value 1 ; ] ;
		lv2:scalePoint [ rdfs:label  "Manual"; rdf:value 2 ; ] ;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 4 ;
		lv2:symbol "channelf" ;
		lv2:name "Filter Channel";
		lv2:minimum 0 ;
		lv2:maximum 16 ;
		lv2:default 0;
		lv2:scalePoint [ rdfs:label "Any"; rdf:value 0 ];
		lv2:scalePoint [ rdfs:label "01" ; rdf:value 1 ];
		lv2:scalePoint [ rdfs:label "02" ; rdf:value 2 ];
		lv2:scalePoint [ rdfs:label "03" ; rdf:value 3 ];
		lv2:scalePoint [ rdfs:label "04" ; rdf:value 4 ];
		lv2:scalePoint [ rdfs:label "05" ; rdf:value 5 ];
		lv2:scalePoint [ rdfs:label "06" ; rdf:value 6 ];
		lv2:scalePoint [ rdfs:label "07" ; rdf:value 7 ];
		lv2:scalePoint [ rdfs:label "08" ; rdf:value 8 ];
		lv2:scalePoint [ rdfs:label "09" ; rdf:value 9 ];
		lv2:scalePoint [ rdfs:label "10" ; rdf:value 10 ];
		lv2:scalePoint [ rdfs:label "11" ; rdf:value 11 ];
		lv2:scalePoint [ rdfs:label "12" ; rdf:value 12 ];
		lv2:scalePoint [ rdfs:label "13" ; rdf:value 13 ];
		lv2:scalePoint [ rdfs:label "14" ; rdf:value 14 ];
		lv2:scalePoint [ rdfs:label "15" ; rdf:value 15 ];
		lv2:scalePoint [ rdfs:label "16" ; rdf:value 16 ];
		lv2:portProperty lv2:integer, lv2:enumeration;
		rdfs:comment "MIDI Channel (1..16) on which the filter is active; 0: any)." ;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 5 ;
		lv2:symbol "tuning" ;
		lv2:name "Tuning";
		lv2:default 440.0 ;
		lv2:minimum 400.0 ;
		lv2:maximum 480.0 ;
		units:unit units:hz;
		pprop:rangeSteps 400;
		rdfs:comment "This sets the frequency corresponding to 'A' pitch, in other words the required tuning. This will be the default 440 Hz in most cases.";
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 6 ;
		lv2:symbol "bias" ;
		lv2:name "Bias";
		lv2:default 0.5 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
		pprop:rangeSteps 270;
		rdfs:comment "Normally the pitch estimator will select the enabled note closest to the measured pitch. The Bias control adds some preference for the current note - this allows it to go off-tune more than would be the case otherwise.";
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 7 ;
		lv2:symbol "filter" ;
		lv2:name "Filter";
		lv2:default 0.1 ;
		lv2:minimum 0.02 ;
		lv2:maximum 0.5 ;
		lv2:scalePoint [ rdfs:label  "Slow"; rdf:value 0.5 ; ] ;
		lv2:scalePoint [ rdfs:label  "Med";  rdf:value 0.1 ; ] ;
		lv2:scalePoint [ rdfs:label  "Fast"; rdf:value 0.02 ; ] ;
		lv2:portProperty pprop:logarithmic;
		pprop:rangeSteps 200;
		rdfs:comment "This sets the amount of smoothing on the pitch correction while the current note does not change. If it does change the filter is bypassed and the correction jumps immediately to the new value.";
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 8 ;
		lv2:symbol "corr" ;
		lv2:name "Correction";
		lv2:default 1.0 ;
		lv2:minimum 0.0 ;
		lv2:maximum 1.0 ;
		pprop:rangeSteps 270;
		rdfs:comment "Determines how much of the estimated pitch error gets corrected. Full correction may remove expression or vibrato.";
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 9 ;
		lv2:symbol "offset" ;
		lv2:name "Offset";
		lv2:default 0.0 ;
		lv2:minimum -2.0 ;
		lv2:maximum  2.0 ;
		pprop:rangeSteps 400;
		units:unit units:semitone12TET;
		rdfs:comment "Adds an offset in the range of +/- two semitones to the pitch correction. With the Correction control set to zero the result is a constant pitch change.";
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 10 ;
		lv2:symbol "m00" ;
		lv2:name "C";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 11 ;
		lv2:symbol "m01" ;
		lv2:name "C#";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 12 ;
		lv2:symbol "m02" ;
		lv2:name "D";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 13 ;
		lv2:symbol "m03" ;
		lv2:name "D#";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 14 ;
		lv2:symbol "m04" ;
		lv2:name "E";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 15 ;
		lv2:symbol "m05" ;
		lv2:name "F";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 16 ;
		lv2:symbol "m06" ;
		lv2:name "F#";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 17 ;
		lv2:symbol "m07" ;
		lv2:name "G";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 18 ;
		lv2:symbol "m08" ;
		lv2:name "G#";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 19 ;
		lv2:symbol "m09" ;
		lv2:name "A";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 20 ;
		lv2:symbol "m10" ;
		lv2:name "A#";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 21 ;
		lv2:symbol "m11" ;
		lv2:name "B";
		lv2:default 1 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled;
	] , [
		a lv2:InputPort ,
			lv2:ControlPort ;
		lv2:index 22 ;
		lv2:symbol "panic" ;
		lv2:name "MIDI Panic";
		lv2:default 0 ;
		lv2:minimum 0 ;
		lv2:maximum 1 ;
		lv2:portProperty lv2:integer, lv2:toggled, pprop:trigger;
	] , [
		a lv2:OutputPort ,
			lv2:ControlPort ;
		lv2:index 23 ;
		lv2:symbol "nmask" ;
		lv2:name "Note Mask";
		lv2:minimum 0 ;
		lv2:maximum 4096 ;
		lv2:portProperty lv2:integer;
	] , [
		a lv2:OutputPort ,
			lv2:ControlPort ;
		lv2:index 24 ;
		lv2:symbol "nset" ;
		lv2:name "Note Set";
		lv2:minimum 0 ;
		lv2:maximum 4096 ;
		lv2:portProperty lv2:integer;
	] , [
		a lv2:OutputPort ,
			lv2:ControlPort ;
		lv2:index 25 ;
		lv2:symbol "error" ;
		lv2:name "Pitch Error";
		lv2:minimum -1.0 ;
		lv2:maximum  1.0 ;
	] , [
		a lv2:OutputPort ,
			lv2:ControlPort ;
		lv2:index 26 ;
		lv2:symbol "latency" ;
		lv2:name "latency";
		lv2:minimum 0 ;
		lv2:maximum 4096;
		lv2:portProperty lv2:reportsLatency, lv2:integer;
		units:unit units:frame;
	];
	.

fat1:ui_gl
	a ui:X11UI ;
	 lv2:requiredFeature ui:idleInterface; lv2:extensionData ui:idleInterface;
  .

