@prefix blop: <http://drobilla.net/plugins/blop/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@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#> .

blop:quantiser_20
	a lv2:Plugin ;
	lv2:project blop: ;
	lv2:symbol "quantiser_20" ;
	lv2:microVersion 0 ;
	lv2:minorVersion 0 ;
	lv2:optionalFeature lv2:hardRTCapable ;
	lv2:port [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 0 ;
		lv2:name "Minimum" ;
		lv2:symbol "min"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 1 ;
		lv2:name "Maximum" ;
		lv2:symbol "max"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:default 0 ;
		lv2:index 2 ;
		lv2:minimum 0 ;
		lv2:name "Match Range" ;
		lv2:symbol "range"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:default 0 ;
		lv2:index 3 ;
		lv2:maximum 2 ;
		lv2:minimum 0 ;
		lv2:name "Mode" ;
		lv2:symbol "mode" ;
		lv2:portProperty lv2:enumeration ,
			lv2:integer ;
		lv2:scalePoint [
			rdfs:label "Extend" ;
			rdf:value 0.0
		] , [
			rdfs:label "Wrap" ;
			rdf:value 1.0
		] , [
			rdfs:label "Clip" ;
			rdf:value 1.0
		]
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:default 20 ;
		lv2:index 4 ;
		lv2:maximum 20 ;
		lv2:minimum 1 ;
		lv2:name "Steps" ;
		lv2:portProperty lv2:integer ;
		lv2:symbol "steps"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 5 ;
		lv2:name "Value 0" ;
		lv2:symbol "val00"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 6 ;
		lv2:name "Value 1" ;
		lv2:symbol "val01"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 7 ;
		lv2:name "Value 2" ;
		lv2:symbol "val02"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 8 ;
		lv2:name "Value 3" ;
		lv2:symbol "val03"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 9 ;
		lv2:name "Value 4" ;
		lv2:symbol "val04"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 10 ;
		lv2:name "Value 5" ;
		lv2:symbol "val05"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 11 ;
		lv2:name "Value 6" ;
		lv2:symbol "val06"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 12 ;
		lv2:name "Value 7" ;
		lv2:symbol "val07"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 13 ;
		lv2:name "Value 8" ;
		lv2:symbol "val08"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 14 ;
		lv2:name "Value 9" ;
		lv2:symbol "val09"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 15 ;
		lv2:name "Value 10" ;
		lv2:symbol "val10"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 16 ;
		lv2:name "Value 11" ;
		lv2:symbol "val11"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 17 ;
		lv2:name "Value 12" ;
		lv2:symbol "val12"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 18 ;
		lv2:name "Value 13" ;
		lv2:symbol "val13"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 19 ;
		lv2:name "Value 14" ;
		lv2:symbol "val14"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 20 ;
		lv2:name "Value 15" ;
		lv2:symbol "val15"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 21 ;
		lv2:name "Value 16" ;
		lv2:symbol "val16"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 22 ;
		lv2:name "Value 17" ;
		lv2:symbol "val17"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 23 ;
		lv2:name "Value 18" ;
		lv2:symbol "val18"
	] , [
		a lv2:ControlPort ,
			lv2:InputPort ;
		lv2:index 24 ;
		lv2:name "Value 19" ;
		lv2:symbol "val19"
	] , [
		a lv2:CVPort ,
			lv2:InputPort ;
		lv2:index 25 ;
		lv2:name "Input" ;
		lv2:symbol "in"
	] , [
		a lv2:CVPort ,
			lv2:OutputPort ;
		lv2:index 26 ;
		lv2:name "Quantised Output" ;
		lv2:symbol "out"
	] , [
		a lv2:CVPort ,
			lv2:OutputPort ;
		lv2:index 27 ;
		lv2:name "Output Changed" ;
		lv2:symbol "changed"
	] ;
	dct:replaces <urn:ladspa:2027> ;
	doap:name "Quantiser (20 Steps)" ;
	lv2:documentation """
<p>Quantises a signal to a set of arbitrary values within a range.</p>

<p>Match Range determines the distance from the quantised value that the input
can deviate before being altered. This allows small variations in input to get
through unmolested. If it is set to 0 the input is quantised to the nearest
exact match.</p>

<p>Mode is one of Extend (0), Wrap (1) or Clip (2).</p>

<p>Steps is the number of quantisation steps to use (up to a maximum of
20).</p>

<p>For example, given the following settings:</p>
<ul>
  <li>Range Minimum = 0.0</li>
  <li>Range Maximum = 12.0</li>
  <li>Match Range = 0.0</li>
  <li>Steps = 4</li>
  <li>Quantisation Values 3, 5, 7 and 10</li>
</ul>

<p>and an input that is a line from -24 to 24, the output will be:</p>
<ul>
  <li>Extend: -26, -21, -19, -17, -14, -9, -7, -5, -2, 3, 5, 7, 10, 15, 17, 19,
  22</li>
  <li>Wrap: 10, 3, 5, 7, 10, 3, 5, 7, 10, 3, 5, 7, 10, 3, 5, 7, 10</li>
  <li>Clip: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 10, 10, 10, 10, 10</li>
</ul>

<p>The quantisation values should all be within the range minimum and maximum
for it to work!</p>
""" .
