# A plugin profile — machine-readable facts about Quefrency.
#
# Host this next to your plugin as profile.ttl and it can be read by this
# catalogue and by anything else that speaks RDF. It is yours: edit it, version
# it with the plugin, and it stays correct because you control it.
#
# The subject below is the plugin's homepage, which is what identifies it here.
# If you would rather use your own namespace, change that one IRI and keep the
# foaf:homepage line, so the two can still be joined up.
#
# Terms: https://plugin-universe.com/ns   Guide: https://plugin-universe.com/about/profiles

@prefix trn:  <http://purl.org/stuff/transmissions/> .
@prefix pu:   <http://purl.org/stuff/plugin-universe/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix schema: <https://schema.org/> .

<https://strandz.it/jigdaw/plugins/quefrency/>
    a trn:PluginProfile ;
    rdfs:label "Quefrency" ;
    rdfs:comment "Separates its input through the cepstrum into a formant envelope and a harmonic structure, shifts and reshapes each independently, and multiplies them back together." ;
    trn:vendor "danja" ;
    foaf:homepage <https://strandz.it/jigdaw/plugins/quefrency/> ;
    trn:format trn:Jig ;
    trn:role trn:AudioEffect ;
    trn:accepts trn:Audio, trn:ControlMidi ;
    trn:produces trn:Audio ;
    trn:requires trn:MidiEvents ;
    pu:category <http://purl.org/stuff/plugin-universe/category/effect> ;
    pu:licenceId "Apache-2.0" ;
    trn:caution "Latency is 2047 frames at 50 kHz and below, and 4095 above. The processor reports the figure for the actual rate; the module ABI carries no latency, so a native host is not told it and will not compensate. The formant envelope of a chord is the envelope of the whole mixture. Pitch shift moves every spectral peak, so chords stay chords, but it cannot act on one note of a chord alone. Transients smear when pitch or frequency shift is set, as with any phase vocoder. Lifter must sit below the shortest pitch period in the input, or harmonics leak into the formant envelope and move with it. MIDI control changes drive the parameters, one controller per port as the profile's midi:binding declarations say, on any channel. Value 64 is each parameter's default where the default lies inside its range, so a centred controller changes nothing; 64 and above selects the true envelope. A controller's value is not shown on the panel and is not saved with the project. It holds until the host's own value for that parameter next changes, and then the host's value wins." .
