@prefix doap:  <http://usefulinc.com/ns/doap#>.
@prefix foaf:  <http://xmlns.com/foaf/0.1/>.
@prefix lv2:   <http://lv2plug.in/ns/lv2core#>.
@prefix mod:   <http://moddevices.com/ns/mod#>.
@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/caps/Saturate>
a lv2:DistortionPlugin, lv2:Plugin;
lv2:microVersion 26;
lv2:minorVersion 9;
lv2:optionalFeature lv2:hardRTCapable;
mod:brand "CAPS";
mod:label "Saturate";

rdfs:comment """
Please note that this plugin embodies a very basic building block of audio DSP, not an elaborate effect that will be pleasing to hear right away. To turn saturation into a musically useful effect it is usually combined with some sort of filtering and dynamics modulation.

The mode control chooses from a selection of clipping functions of varying character. Even-order harmonics can be added with the bias setting. Towards the maximum, sound will start to get scratchy and eventually starve away.

The plugin is 8x oversampled with 64-tap polyphase filters, effectively suppressing aliasing noise for most musical applications. Changes to the bias control induce short-lived energy at DC in the output. In order to reduce the computational load incurred when evaluating transcendental functions at eight times the nominal sample rate, these are approximated roughly, using Chebyshev polynomials whose coefficients depend on the amplitude's floating point representation exponent.

source: http://quitte.de/dsp/caps.html#Saturate
""";

lv2:port
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 0;
    lv2:default 1;
    lv2:maximum 11;
    lv2:minimum 0;
    lv2:name "Mode";
    lv2:symbol "mode";
    lv2:portProperty lv2:enumeration, lv2:integer;
    lv2:scalePoint
    [
        rdfs:label "bypass";
        rdf:value 0;
    ],
    [
        rdfs:label "atan";
        rdf:value 1;
    ],
    [
        rdfs:label "atan15";
        rdf:value 2;
    ],
    [
        rdfs:label "clip";
        rdf:value 3;
    ],
    [
        rdfs:label "one5";
        rdf:value 4;
    ],
    [
        rdfs:label "one53";
        rdf:value 5;
    ],
    [
        rdfs:label "clip3";
        rdf:value 6;
    ],
    [
        rdfs:label "clip9";
        rdf:value 7;
    ],
    [
        rdfs:label "sin1";
        rdf:value 8;
    ],
    [
        rdfs:label "pow7";
        rdf:value 9;
    ],
    [
        rdfs:label "tanh";
        rdf:value 10;
    ],
    [
        rdfs:label "rectify";
        rdf:value 11;
    ];
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 1;
    lv2:default 0.0;
    lv2:maximum 72.0;
    lv2:minimum -24.0;
    lv2:name "Gain";
    lv2:symbol "gain";
    units:unit units:db;
],
[
    a lv2:ControlPort, lv2:InputPort;
    lv2:index 2;
    lv2:default 0.0;
    lv2:maximum 1.0;
    lv2:minimum 0.0;
    lv2:name "Bias";
    lv2:symbol "bias";
],
[
    a lv2:AudioPort, lv2:InputPort;
    lv2:index 3;
    lv2:name "In";
    lv2:symbol "in";
],
[
    a lv2:AudioPort, lv2:OutputPort;
    lv2:index 4;
    lv2:name "Out";
    lv2:symbol "out";
];

doap:license <http://usefulinc.com/doap/licenses/gpl>;

doap:developer [
    foaf:homepage <http://quitte.de/dsp/caps.html>;
    foaf:mbox <mailto:tim@quitte.de>;
    foaf:name "Tim Goetze";
];

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

doap:name "C* Saturate".
