@prefix bsize:  <http://lv2plug.in/ns/ext/buf-size#>.
@prefix doap:   <http://usefulinc.com/ns/doap#>.
@prefix epp:    <http://lv2plug.in/ns/ext/port-props/#>.
@prefix foaf:   <http://xmlns.com/foaf/0.1/>.
@prefix lv2:    <http://lv2plug.in/ns/lv2core#>.
@prefix mod:    <http://moddevices.com/ns/mod#>.
@prefix modgui: <http://moddevices.com/ns/modgui#>.
@prefix rdf:    <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#>.
@prefix units:  <http://lv2plug.in/ns/extensions/units#>.

<http://moddevices.com/plugins/mod-devel/HarmonizerCS>
a lv2:Plugin, lv2:SpectralPlugin;

lv2:requiredFeature bsize:fixedBlockLength, bsize:powerOf2BlockLength;

doap:name "HarmonizerCS";

doap:developer [
    foaf:name "Andre";
    foaf:homepage <>;
    foaf:mbox <mailto:andre_coutinho@rocketmail.com>;
];

doap:maintainer [
    foaf:name "MOD Team";
    foaf:homepage <http://moddevices.com>;
    foaf:mbox <mailto:devel@moddevices.com>;
];

mod:brand "MOD";
mod:label "HarmonizerCS";

doap:license "GPL";

rdfs:comment """
It’s a custom-scale harmonizer plugin that allows you to create your own scale by moving up and down the sliders. With the slider all the way up, the harmonizer will shift the pitch up by +12 semitones. With the slider all the way down, the harmonizer will shift the pitch down by -12 semitones. Like with nearly all harmonizers, you will have to play in the correct key (which can also be configured). 

All plugins in the MOD-pitchshifter family have an option to set the fidelity of the plugin. As you lower the fidelity, the sound will become less pristine, but the plugin will also use less processing. The opposite holds true for increasing the fidelity, this will grant you a clearer pitch-shifted signal at the cost of significantly more processing being used. 

*The Lo-Fi setting is reminiscent of bit-crushed sounds, if you are looking for those synthesizer-like basslines, or dirty octave-up sounds, this is your setting!
*The Hi-Fi setting is great if you are looking to emulate (for example) something like a 12-string guitar, be sure to mind that CPU-meter in the bottom-right of the screen though! 
*The settings in between are created to let you make the perfect trade-off between quality and performance. 

A hint for making the right decision: the more you shift the pitch up, the higher you will need to set the Fidelity to get a clear sound. 
""";

lv2:port
[
    a lv2:AudioPort, lv2:InputPort;
    lv2:index 0;
    lv2:symbol "In";
    lv2:name "In";
    lv2:shortName "In";
],
[
    a lv2:AudioPort, lv2:OutputPort;
    lv2:index 1;
    lv2:symbol "Out1";
    lv2:name "Out 1";
    lv2:shortName "Out 1";
],
[
    a lv2:AudioPort, lv2:OutputPort;
    lv2:index 2;
    lv2:symbol "Out2";
    lv2:name "Out 2";
    lv2:shortName "Out 2";
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 3;
    lv2:symbol "Tone";
    lv2:name "Tone";
    lv2:shortName "Tone";
    lv2:default 0;
    lv2:minimum 0;
    lv2:maximum 11;
    lv2:portProperty lv2:integer, lv2:enumeration;
    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:InputPort;
    lv2:index 4;
    lv2:symbol "Step_0";
    lv2:name "Tonic";
    lv2:shortName "Tonic";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 5;
    lv2:symbol "Step_1";
    lv2:name "Minor 2nd";
    lv2:shortName "Minor 2nd";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 6;
    lv2:symbol "Step_2";
    lv2:name "Major 2nd";
    lv2:shortName "Major 2nd";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 7;
    lv2:symbol "Step_3";
    lv2:name "Minor 3rd";
    lv2:shortName "Minor 3rd";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 8;
    lv2:symbol "Step_4";
    lv2:name "Major 3rd";
    lv2:shortName "Major 3rd";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 9;
    lv2:symbol "Step_5";
    lv2:name "Perfect 4th";
    lv2:shortName "Perfect 4th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 10;
    lv2:symbol "Step_6";
    lv2:name "Diminished 5th";
    lv2:shortName "Diminished 5th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 11;
    lv2:symbol "Step_7";
    lv2:name "Perfect 5th";
    lv2:shortName "Perfect 5th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 12;
    lv2:symbol "Step_8";
    lv2:name "Minor 6th";
    lv2:shortName "Minor 6th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 13;
    lv2:symbol "Step_9";
    lv2:name "Major 6th";
    lv2:shortName "Major 6th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 14;
    lv2:symbol "Step_10";
    lv2:name "Minor 7th";
    lv2:shortName "Minor 7th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 15;
    lv2:symbol "Step_11";
    lv2:name "Major 7th";
    lv2:shortName "Major 7th";
    lv2:default 0;
    lv2:minimum -12;
    lv2:maximum 12;
    lv2:portProperty lv2:integer;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 16;
    lv2:symbol "LowestNoteToChangeThePitch";
    lv2:name "Lowest note to change the pitch";
    lv2:shortName "Lowest Wet";
    lv2:default 0;
    lv2:minimum 0;
    lv2:maximum 14;
    lv2:portProperty lv2:integer, lv2:enumeration;
    lv2:scalePoint [rdfs:label "B1";  rdf:value 0];
    lv2:scalePoint [rdfs:label "C2";  rdf:value 1];
    lv2:scalePoint [rdfs:label "C#2"; rdf:value 2];
    lv2:scalePoint [rdfs:label "D2";  rdf:value 3];
    lv2:scalePoint [rdfs:label "D#2"; rdf:value 4];
    lv2:scalePoint [rdfs:label "E2";  rdf:value 5];
    lv2:scalePoint [rdfs:label "F2";  rdf:value 6];
    lv2:scalePoint [rdfs:label "F#2"; rdf:value 7];
    lv2:scalePoint [rdfs:label "G2";  rdf:value 8];
    lv2:scalePoint [rdfs:label "G#2"; rdf:value 9];
    lv2:scalePoint [rdfs:label "A2";  rdf:value 10];
    lv2:scalePoint [rdfs:label "A#2"; rdf:value 11];
    lv2:scalePoint [rdfs:label "B2";  rdf:value 12];
    lv2:scalePoint [rdfs:label "C3";  rdf:value 13];
    lv2:scalePoint [rdfs:label "C#3"; rdf:value 14];
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 17;
    lv2:symbol "Gain1";
    lv2:name "Gain 1";
    lv2:shortName "Gain 1";
    lv2:default 0.0;
    lv2:minimum -20.0;
    lv2:maximum 20.0;
    units:unit units:db;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 18;
    lv2:symbol "Gain2";
    lv2:name "Gain 2";
    lv2:shortName "Gain 2";
    lv2:default 3.0;
    lv2:minimum -20.0;
    lv2:maximum 20.0;
    units:unit units:db;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 19;
    lv2:symbol "Fidelity";
    lv2:name "Fidelity";
    lv2:shortName "Fidelity";
    lv2:default 1;
    lv2:minimum 0;
    lv2:maximum 2;
    lv2:portProperty lv2:integer, lv2:enumeration;
    lv2:scalePoint [rdfs:label "Lo-Fi"; rdf:value 0];
    lv2:scalePoint [rdfs:label "Normal"; rdf:value 1];
    lv2:scalePoint [rdfs:label "Hi-Fi"; rdf:value 2];
];

modgui:gui [
    modgui:resourcesDirectory <modgui>;
    modgui:stylesheet <modgui/icon-harmonizercs.css>;
    modgui:iconTemplate <modgui/icon-harmonizercs.html>;
    modgui:templateData <modgui/data-harmonizercs.json>;
    modgui:screenshot <modgui/screenshot-harmonizercs.png>;
    modgui:thumbnail <modgui/thumb-harmonizercs.png>;
].
