# squelch/profile.ttl
#
# GENERATED by bin/write-profile.js. Do not edit: the digests are of the
# files on disk, and editing them by hand is how a profile comes to describe
# artefacts that no longer exist. Edit profile.json and run ./build.sh.

@base <https://strandz.it/jigdaw/plugins/squelch/> .

@prefix jig:   <http://purl.org/stuff/jigdaw/> .
@prefix trn:   <http://purl.org/stuff/transmissions/> .
@prefix pu:    <http://purl.org/stuff/plugin-universe/> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix midi:  <http://lv2plug.in/ns/ext/midi#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .

<>
    a jig:WebPlugin , trn:PluginProfile ;
    rdfs:label "Squelch" ;
    rdfs:comment "A resonant lowpass filter whose cutoff an envelope follower pushes up on every note, for the acid bass sweep. Put it after a synth: each note opens the filter and Decay sets how fast it closes. Plain JavaScript, no WebAssembly module." ;
    trn:vendor "danja" ;
    doap:revision "1.0.0" ;
    doap:developer <http://danny.ayers.name> ;
    foaf:homepage <> ;
    trn:role trn:AudioEffect ;
    trn:accepts trn:Audio ;
    trn:produces trn:Audio ;
    trn:genre "Electronic" ;
    trn:caution "Resonance stops short of self-oscillation, and the output is soft clipped to keep a note on the resonant peak from being much louder than the rest." ;
    trn:caution "Declares no jig:module and so no jig:abi. A host that loads a module directly, such as the native adapter, cannot load this plugin; a JavaScript AudioWorklet host can." ;
    trn:format trn:Jig , trn:WebAudio ;
    pu:licenceId "Apache-2.0" ;

    jig:audioInputs 1 ;
    jig:inputChannels 2 ;
    jig:audioOutputs 1 ;
    jig:outputChannels 2 ;
    jig:renderQuantum 128 ;
    jig:latencyFrames 0 ;
    jig:stateless true ;

    jig:processor <#processor> ;

    lv2:port <#cutoff> , <#resonance> , <#envelope> , <#decay> .

<#processor>
    a jig:Processor ;
    jig:location <squelch-processor.js> ;
    jig:mediaType "text/javascript" ;
    jig:registeredName "squelch" ;
    jig:integrity "sha384-E9APk1rhfM+yKQCQWVmQX/n6BlDg1Q5vUMaAE5NpVLih4ANWl5tDFhDezltawYZM" .

<#cutoff>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "cutoff" ; lv2:name "Cutoff" ;
    lv2:default 600 ; lv2:minimum 40 ; lv2:maximum 12000 ;
    jig:paramIndex 0 ;
    units:unit units:hz .

<#resonance>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "resonance" ; lv2:name "Resonance" ;
    lv2:default 75 ; lv2:minimum 0 ; lv2:maximum 100 ;
    jig:paramIndex 1 ;
    units:unit units:pc .

<#envelope>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "envelope" ; lv2:name "Envelope (octaves)" ;
    lv2:default 3 ; lv2:minimum 0 ; lv2:maximum 6 ;
    jig:paramIndex 2 .

<#decay>
    a lv2:InputPort , lv2:ControlPort ;
    lv2:symbol "decay" ; lv2:name "Decay" ;
    lv2:default 180 ; lv2:minimum 10 ; lv2:maximum 2000 ;
    jig:paramIndex 3 ;
    units:unit units:ms .
