# LV2 CV Port Extension
# Copyright 2011 David Robillard <http://drobilla.net>
#
# 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 cv:   <http://lv2plug.in/ns/ext/cv-port#> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

<http://lv2plug.in/ns/ext/cv-port>
	a lv2:Specification ;
	doap:license <http://opensource.org/licenses/isc-license> ;
	doap:name "LV2 CV Port" ;
	doap:shortdesc "Control Voltage ports for LV2 plugins." ;
	doap:maintainer [
		a foaf:Person ;
		foaf:name "David Robillard" ;
		foaf:homepage <http://drobilla.net/> ;
		rdfs:seeAlso <http://drobilla.net/drobilla.rdf>
	] ;
	lv2:documentation """
<p>This extension defines Control Voltage (CV) ports, which are audio-rate
control ports like those used on classical voltage-controlled synthesizers.
These ports serve as control ports like <a
href="http://lv2plug.in/ns/lv2core#ControlPort">lv2:ControlPort</a> but can
also be used for audio-rate modulation of control signals.  This enables many
types of processing and synthesis which are not possible with a lower control
rate.</p>
""" .

cv:CVPort
	a rdfs:Class ;
	rdfs:label "CV Port" ;
	rdfs:subClassOf lv2:Port ;
	lv2:documentation """

<p>Ports of this type have identical semantics to <a
href="http://lv2plug.in/ns/lv2core#AudioPort">lv2:AudioPort</a> in terms of
buffer format and connection/input/output logistics.  However, rather than the
buffer representing audio, the buffer represents audio-rate control data.  A
CVPort SHOULD have the same properties a <a
href="http://lv2plug.in/ns/lv2core#ControlPort">lv2:ControlPort</a> typically
has to describe appropriate control values (e.g.  <a
href="http://lv2plug.in/ns/lv2core#minimum">lv2:minimum</a>, <a
href="http://lv2plug.in/ns/lv2core#maximum">lv2:maximum</a>, <a
href="http://lv2plug.in/ns/lv2core#default">lv2:default</a>)</p>

<p>Hosts SHOULD take care to prevent data from a CVPort port from being used as
audio except in cases where this is known to be safe.</p>

<p>Example:</p>
<pre class="turtle-code">
&lt;http://example.org/some-plugin&gt;
    lv2:port [
        a cv:CVPort, lv2:InputPort ;
        lv2:index 0 ;
        lv2:minimum -1.0 ;
        lv2:maximum 1.0 ;
        lv2:default 0.0 ;
        lv2:symbol "modulation" ;
        lv2:name "Modulation" ;
    ] .
</pre>
""" .