# LV2 Parameters Extension
# Copyright 2011-2012 David Robillard <d@drobilla.net>
# Copyright 2009 Krzysztof Foltman
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

@prefix doap:  <http://usefulinc.com/ns/doap#> .
@prefix foaf:  <http://xmlns.com/foaf/0.1/> .
@prefix lv2:   <http://lv2plug.in/ns/lv2core#> .
@prefix param: <http://lv2plug.in/ns/ext/parameters#> .
@prefix pg:    <http://lv2plug.in/ns/ext/port-groups#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .

<http://lv2plug.in/ns/ext/parameters>
	a lv2:Specification ;
	rdfs:seeAlso <../../people/people.ttl> ;
	doap:name "LV2 Parameters" ;
	doap:release [
		doap:revision "0.2" ;
		doap:created "2012-03-23" ;
	] ;
	doap:created "2009-01-01" ;
	doap:shortdesc "Common parameters for audio processing." ;
	doap:maintainer <http://drobilla.net/drobilla#me> ;
	doap:developer <http://lv2plug.in/ns/people#larsl> ;
	lv2:documentation """
<p>This extension defines parameters common in audio processing software.  A
<q>parameter</q> is purely a metadata concept, unrelated to any particular code
mechanism.  Parameters are used to assign meaning to controls so they can be
used more intelligently or presented to the user more efficiently.</p>
""" .

param:ControlGroup
	a rdfs:Class ;
	rdfs:subClassOf pg:Group ;
	rdfs:comment """
A group representing a set of associated controls.
""" .

param:amplitude
	a lv2:Parameter ;
	rdfs:label "Amplitude" .

param:attack
	a lv2:Parameter ;
	rdfs:label "Attack" ;
	rdfs:comment "The duration of an envelope's attack stage." .

param:cutoffFrequency
	a lv2:Parameter ;
	rdfs:label "Cutoff Frequency" .

param:decay
	a lv2:Parameter ;
	rdfs:label "Decay" ;
	rdfs:comment "The duration of an envelope's decay stage." .

param:delay
	a lv2:Parameter ;
	rdfs:label "Delay" ;
	rdfs:comment "The duration of an envelope's delay stage." .

param:frequency
	a lv2:Parameter ;
	rdfs:label "Frequency" .

param:hold
	a lv2:Parameter ;
	rdfs:label "Hold" ;
	rdfs:comment "The duration of an envelope's hold stage." .

param:pulseWidth
	a lv2:Parameter ;
	rdfs:label "Pulse Width" ;
	rdfs:comment "The width of a pulse of a rectangular waveform." .

param:ratio
	a lv2:Parameter ;
	rdfs:label "Ratio" ;
	rdfs:comment "Compression ration." .

param:release
	a lv2:Parameter ;
	rdfs:label "Release" ;
	rdfs:comment "The duration of an envelope's release stage." .

param:resonance
	a lv2:Parameter ;
	rdfs:label "Resonance" ;
	rdfs:comment "The resonance of a filter." .

param:sustain
	a lv2:Parameter ;
	rdfs:label "Sustain" ;
	rdfs:comment "The level (not duration) of an envelope's sustain stage." .

param:threshold
	a lv2:Parameter ;
	rdfs:label "Threshold" ;
	rdfs:comment "Compression threshold." .

param:waveform
	a lv2:Parameter ;
	rdfs:label "Waveform" .

param:EnvelopeControls
	a rdfs:Class ;
	rdfs:subClassOf param:ControlGroup ;
	rdfs:label "Controls for a DAHDSR envelope." ;
	pg:element [
		lv2:index 0 ;
		lv2:designation param:delay ;
	] , [
		lv2:index 1 ;
		lv2:designation param:attack ;
	] , [
		lv2:index 2 ;
		lv2:designation param:hold ;
	] , [
		lv2:index 3 ;
		lv2:designation param:decay ;
	] , [
		lv2:index 4 ;
		lv2:designation param:sustain ;
	] , [
		lv2:index 5 ;
		lv2:designation param:release ;
	] .

param:OscillatorControls
	a rdfs:Class ;
	rdfs:subClassOf param:ControlGroup ;
	rdfs:label "Controls for an oscillator." ;
	pg:element [
		lv2:designation param:frequency ;
	] , [
		lv2:designation param:amplitude ;
	] , [
		lv2:designation param:waveform ;
	] , [
		lv2:designation param:pulseWidth ;
	] .

param:FilterControls
	a rdfs:Class ;
	rdfs:subClassOf param:ControlGroup ;
	rdfs:label "Controls for a filter." ;
	pg:element [
		lv2:designation param:cutoffFrequency ;
	] , [
		lv2:designation param:resonance ;
	] .

param:CompressorControls
	a rdfs:Class ;
	rdfs:subClassOf param:ControlGroup ;
	rdfs:label "Controls for a compressor." ;
	pg:element [
		lv2:designation param:threshold ;
	] , [
		lv2:designation param:ratio ;
	] .