@prefix atom:  <http://lv2plug.in/ns/ext/atom#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix idpy:  <http://harrisonconsoles.com/lv2/inlinedisplay#> .
@prefix kx:    <http://kxstudio.sf.net/ns/lv2ext/external-ui#> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@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 rsz:   <http://lv2plug.in/ns/ext/resize-port#> .
@prefix ui:    <http://lv2plug.in/ns/extensions/ui#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix urid:  <http://lv2plug.in/ns/ext/urid#> .

idpy:queue_draw a lv2:Feature .
idpy:interface a lv2:ExtensionData .

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

<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/tuna>
	a doap:Project;
	doap:maintainer <http://gareus.org/rgareus#me> ;
	doap:name "x42 Instrument Tuner" .




tuna:mod
  a lv2:Plugin, doap:Project, lv2:AnalyserPlugin;
  doap:license <http://usefulinc.com/doap/licenses/gpl> ;
  doap:maintainer <http://gareus.org/rgareus#me> ;
  doap:name "x42 Instrument Tuner";
  lv2:microVersion 13 ;lv2:minorVersion 1539 ;
  
  mod:brand "x42";
  mod:label "Tuna Tuner";
  lv2:optionalFeature lv2:hardRTCapable, idpy:queue_draw ;
	lv2:extensionData idpy:interface ;
  lv2:requiredFeature urid:map ;
  
  lv2:port
  [
    a atom:AtomPort ,
      lv2:InputPort ;
    atom:bufferType atom:Sequence ;
    lv2:designation lv2:control ;
    lv2:index 0 ;
    lv2:symbol "control" ;
    lv2:name "Control" ;
    rdfs:comment "GUI to plugin communication" ;
  ] , [
    a atom:AtomPort ,
      lv2:OutputPort ;
    atom:bufferType atom:Sequence ;
		atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ;
    lv2:designation lv2:control ;
    lv2:index 1 ;
    lv2:symbol "sysex" ;
    lv2:name "MTS SysEx" ;
    # 2 * 512 * sizeof(float) + sysex + LV2-Atoms
    rsz:minimumSize 4608;
    rdfs:comment "MTS/SysEx output and Plugin to GUI communication" ;
  ] , [
    a lv2:AudioPort ,
      lv2:InputPort ;
    lv2:index 2 ;
    lv2:symbol "in" ;
    lv2:name "Audio Input" ;
  ] , [
    a lv2:AudioPort ,
      lv2:OutputPort ;
    lv2:index 3 ;
    lv2:symbol "out" ;
    lv2:name "Audio output" ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 4 ;
    lv2:symbol "mode" ;
    lv2:name "Mode" ;
    lv2:default 0 ;
    lv2:minimum -128 ;
    lv2:maximum 8000 ;
    lv2:portProperty lv2:integer;
    lv2:scalePoint [ rdfs:label "auto"; rdf:value 0 ; ] ;
    lv2:scalePoint [ rdfs:label "A2"; rdf:value 220 ; ] ;
    lv2:scalePoint [ rdfs:label "A4"; rdf:value 440 ; ] ;
    lv2:scalePoint [ rdfs:label "A5"; rdf:value 880 ; ] ;
    lv2:scalePoint [ rdfs:label "8KHz"; rdf:value 8000 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 5 ;
    lv2:symbol "tuning" ;
    lv2:name "Tuning A440" ;
    lv2:default 440.0 ;
    lv2:minimum 220.0 ;
    lv2:maximum 880.0;
    units:unit units:hz;
    lv2:scalePoint [ rdfs:label "standard"; rdf:value 440.0 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 6 ;
    lv2:symbol "rms" ;
    lv2:name "Signal Level (RMS)" ;
    lv2:minimum -100.0;
    lv2:maximum -0.0;
    units:unit units:db;
    #lv2:portProperty pprop:logarithmic;
    lv2:scalePoint [ rdfs:label "detection threshold"; rdf:value -65.0 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 7 ;
    lv2:symbol "freq_out" ;
    lv2:name "Detected Frequency" ;
    lv2:minimum 0.0;
    lv2:maximum 10000.0;
    units:unit units:hz;
    lv2:scalePoint [ rdfs:label "no signal"; rdf:value 0.0 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 8 ;
    lv2:symbol "octave" ;
    lv2:name "Detected Octave" ;
    lv2:minimum -1 ;
    lv2:maximum 10 ;
    lv2:portProperty lv2:integer;
    units:unit units:oct;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 9 ;
    lv2:symbol "note" ;
    lv2:name "Detected Note" ;
    lv2:minimum 0;
    lv2:maximum 12;
    units:unit units:semitone12TET;
    lv2:portProperty lv2:enumeration, lv2:integer;
    lv2:scalePoint [ rdfs:label "C";  rdf:value  0 ; ] ;
    lv2:scalePoint [ rdfs:label "C#"; rdf:value  1 ; ] ;
    lv2:scalePoint [ rdfs:label "D";  rdf:value  2 ; ] ;
    lv2:scalePoint [ rdfs:label "D#"; rdf:value  3 ; ] ;
    lv2:scalePoint [ rdfs:label "E";  rdf:value  4 ; ] ;
    lv2:scalePoint [ rdfs:label "F";  rdf:value  5 ; ] ;
    lv2:scalePoint [ rdfs:label "F#"; rdf:value  6 ; ] ;
    lv2:scalePoint [ rdfs:label "G";  rdf:value  7 ; ] ;
    lv2:scalePoint [ rdfs:label "G#"; rdf:value  8 ; ] ;
    lv2:scalePoint [ rdfs:label "A";  rdf:value  9 ; ] ;
    lv2:scalePoint [ rdfs:label "A#"; rdf:value 10 ; ] ;
    lv2:scalePoint [ rdfs:label "B";  rdf:value 11 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 10 ;
    lv2:symbol "cent" ;
    lv2:name "Cent" ;
    lv2:minimum -50.0;
    lv2:maximum 50.0;
    lv2:scalePoint [ rdfs:label "+-0"; rdf:value 0.0 ; ] ;
    lv2:scalePoint [ rdfs:label "-1/4 semitone"; rdf:value -25.0 ; ] ;
    lv2:scalePoint [ rdfs:label "+1/4 semitone"; rdf:value 25.0 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 11 ;
    lv2:symbol "accuracy" ;
    lv2:name "Note Stability" ;
    lv2:minimum -100.0;
    lv2:maximum 100.0;
    lv2:scalePoint [ rdfs:label "accurate"; rdf:value 0.0 ; ] ;
  ] , [
    a lv2:ControlPort ,
      lv2:OutputPort ;
    lv2:index 12 ;
    lv2:symbol "strobetoui" ;
    lv2:name "StrobeToUi" ;
    lv2:minimum 0.0;
    lv2:maximum 100.0;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 13 ;
    lv2:symbol "thresholdRMS" ;
    lv2:name "thresholdRMS" ;
    lv2:minimum -100.0;
    lv2:maximum 0.0;
    lv2:default -75.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 14 ;
    lv2:symbol "thresholdPostFilter" ;
    lv2:name "thresholdPostFilter" ;
    lv2:minimum -50.0;
    lv2:maximum 0.0;
    lv2:default -45.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 15 ;
    lv2:symbol "thresholdFFT" ;
    lv2:name "thresholdFFT" ;
    lv2:minimum -50.0;
    lv2:maximum 10.0;
    lv2:default -40.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 16 ;
    lv2:symbol "thresholdOverride" ;
    lv2:name "thresholdOverride" ;
    lv2:minimum 0.0;
    lv2:maximum 40.0;
    lv2:default 20.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 17 ;
    lv2:symbol "thresholdFundamental" ;
    lv2:name "thresholdFundamental" ;
    lv2:minimum 0.0;
    lv2:maximum 60.0;
    lv2:default 5.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 18 ;
    lv2:symbol "thresholdOctave" ;
    lv2:name "thresholdOctave" ;
    lv2:minimum -100.0;
    lv2:maximum 0.0;
    lv2:default -30.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 19 ;
    lv2:symbol "thresholdOvertones" ;
    lv2:name "thresholdvertones" ;
    lv2:minimum -100.0;
    lv2:maximum 0.0;
    lv2:default -15.0 ;
    lv2:portProperty pprop:notOnGUI ;
  ] , [
    a lv2:ControlPort ,
      lv2:InputPort ;
    lv2:index 20 ;
    lv2:symbol "enabled" ;
    lv2:name "enabled" ;
    lv2:minimum 0.0;
    lv2:maximum 1.0;
    lv2:default 0.0 ;
  ] ;
  rdfs:comment "Musical instrument tuner with strobe characteristics" ;
  .
