changeset 82:7ddbe4d8b23c

Versioning + abstract for key detector
author Chris Cannam
date Wed, 31 Jul 2019 10:54:05 +0100
parents f14a44513481
children 7e8238d78414
files audio_key_detection/qm-keydetector-v4/README.txt audio_key_detection/qm-keydetector-v4/qm-keydetector.sh audio_key_detection/qm-keydetector-v4/qm-keydetector.ttl audio_key_detection/qm-keydetector-v4/qm-vamp-plugins.n3 audio_key_detection/qm-keydetector-v4/qm-vamp-plugins.so audio_key_detection/qm-keydetector-v5/README.txt audio_key_detection/qm-keydetector-v5/qm-keydetector.ttl audio_key_detection/qm-keydetector/README.txt audio_key_detection/qm-keydetector/qm-keydetector.sh audio_key_detection/qm-keydetector/qm-keydetector.ttl audio_key_detection/qm-keydetector/qm-vamp-plugins.n3 audio_key_detection/qm-keydetector/qm-vamp-plugins.so vamp-plugins_abstract/qmvamp-mirex2019.tex
diffstat 13 files changed, 1213 insertions(+), 1190 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/audio_key_detection/qm-keydetector-v4/README.txt	Wed Jul 31 10:54:05 2019 +0100
@@ -0,0 +1,27 @@
+#
+# MIREX 2019 submission
+#
+# QM Key Detector
+# Plugin by Katy Noland and Christian Landone.
+# Prepared by Chris Cannam, c.cannam@qmul.ac.uk
+
+
+# Architecture
+
+- Linux 64-bit
+
+# Dependencies
+
+- Sonic Annotator v1.5
+  http://code.soundsoftware.ac.uk/projects/sonic-annotator/files
+
+- GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
+
+- Typical Unix/GNU shell commands
+
+# How to run
+
+In a terminal window run:
+
+./qm-keydetector.sh input.wav output.txt
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/audio_key_detection/qm-keydetector-v4/qm-keydetector.sh	Wed Jul 31 10:54:05 2019 +0100
@@ -0,0 +1,52 @@
+
+mydir=`dirname "$0"`
+infile="$1"
+outfile="$2"
+
+if [ t"$infile" = "t" ] || [ t"$outfile" = "t" ]; then
+    echo "Usage: $0 infile.wav outfile.txt"
+    exit 2
+fi
+
+mkdir -p "$mydir"/out || exit 1
+
+echo "Processing input WAV file $infile, writing results to $outfile..." 1>&2
+
+# We want output like
+#
+# Bb<TAB>minor
+#
+# Our Sonic Annotator output gives us something like that for each
+# detected key change (the feature label, in column 4), but we want
+# the modal key (modal in the statistical rather than the musical
+# sense!) and Sonic Annotator doesn't retain labels for summaries.  So
+# let's write to a temporary file, retrieve the modal value, then pick
+# the label (from earlier in the file) whose value corresponds to it.
+
+VAMP_PATH="$mydir" sonic-annotator \
+    -t "$mydir"/qm-keydetector.ttl \
+    -w csv --csv-separator ";" \
+    --csv-basedir "$mydir/out" \
+    --csv-force \
+    -S mode \
+    "$infile" || exit 1
+
+inbase=`basename "$infile"`
+inbase=${inbase%.*}
+tempfile="out/${inbase}_vamp_qm-vamp-plugins_qm-keydetector_key.csv"
+if [ ! -f "$tempfile" ]; then
+    echo "Key output file $tempfile not found! bailing out"; exit 1
+fi
+
+mode=`grep ';mode;' "$tempfile" | awk -F';' '{ print $4; }'`
+
+cat "$tempfile" | \
+    awk -F';' '{ print $2, $3 }' | \
+    grep "^$mode \"" | \
+    head -n 1 | \
+    sed -e 's/^[^"]*"//' -e 's/"[^"]*$//' -e 's,/ [^ ]* ,,' -e 's/ /\t/' \
+    > "$outfile"
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/audio_key_detection/qm-keydetector-v4/qm-keydetector.ttl	Wed Jul 31 10:54:05 2019 +0100
@@ -0,0 +1,18 @@
+@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
+@prefix vamp:     <http://purl.org/ontology/vamp/> .
+@prefix :         <#> .
+
+:transform a vamp:Transform ;
+    vamp:plugin <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-keydetector> ;
+    vamp:plugin_version "4" ;
+    vamp:step_size "32768"^^xsd:int ; 
+    vamp:block_size "32768"^^xsd:int ; 
+    vamp:parameter_binding [
+        vamp:parameter [ vamp:identifier "length" ] ;
+        vamp:value "10"^^xsd:float ;
+    ] ;
+    vamp:parameter_binding [
+        vamp:parameter [ vamp:identifier "tuning" ] ;
+        vamp:value "440"^^xsd:float ;
+    ] ;
+    vamp:output <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-keydetector_output_key> .
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/audio_key_detection/qm-keydetector-v4/qm-vamp-plugins.n3	Wed Jul 31 10:54:05 2019 +0100
@@ -0,0 +1,1088 @@
+@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
+@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
+@prefix vamp:     <http://purl.org/ontology/vamp/> .
+@prefix plugbase: <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#> .
+@prefix owl:      <http://www.w3.org/2002/07/owl#> .
+@prefix dc:       <http://purl.org/dc/elements/1.1/> .
+@prefix af:       <http://purl.org/ontology/af/> .
+@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
+@prefix cc:       <http://web.resource.org/cc/> .
+@prefix :         <#> .
+
+<>  a   vamp:PluginDescription ;
+    foaf:maker          <http://www.vamp-plugins.org/doap.rdf#template-generator> ;
+    foaf:primaryTopic   <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins> .
+
+:qm-vamp-plugins a  vamp:PluginLibrary ;
+    vamp:identifier "qm-vamp-plugins"  ; 
+    vamp:available_plugin plugbase:qm-adaptivespectrogram ; 
+    vamp:available_plugin plugbase:qm-barbeattracker ; 
+    vamp:available_plugin plugbase:qm-chromagram ; 
+    vamp:available_plugin plugbase:qm-constantq ; 
+    vamp:available_plugin plugbase:qm-dwt ; 
+    vamp:available_plugin plugbase:qm-keydetector ; 
+    vamp:available_plugin plugbase:qm-mfcc ; 
+    vamp:available_plugin plugbase:qm-onsetdetector ; 
+    vamp:available_plugin plugbase:qm-segmenter ; 
+    vamp:available_plugin plugbase:qm-similarity ; 
+    vamp:available_plugin plugbase:qm-tempotracker ; 
+    vamp:available_plugin plugbase:qm-tonalchange ; 
+    vamp:available_plugin plugbase:qm-transcription ; 
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html> ;
+    .
+
+plugbase:qm-adaptivespectrogram a   vamp:Plugin ;
+    dc:title              "Adaptive Spectrogram" ;
+    vamp:name             "Adaptive Spectrogram" ;
+    dc:description        """Produce an adaptive spectrogram by adaptive selection from spectrograms at multiple resolutions""" ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Wen Xue and Chris Cannam.  Copyright (c) 2009 Wen Xue and QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-adaptivespectrogram" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-adaptivespectrogram_param_n ;
+    vamp:parameter   plugbase:qm-adaptivespectrogram_param_w ;
+    vamp:parameter   plugbase:qm-adaptivespectrogram_param_coarse ;
+    vamp:parameter   plugbase:qm-adaptivespectrogram_param_threaded ;
+
+    vamp:output      plugbase:qm-adaptivespectrogram_output_output ;
+    .
+plugbase:qm-adaptivespectrogram_param_n a  vamp:QuantizedParameter ;
+    vamp:identifier     "n" ;
+    dc:title            "Number of resolutions" ;
+    dc:format           "" ;
+    vamp:min_value       2 ;
+    vamp:max_value       10 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   3 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-adaptivespectrogram_param_w a  vamp:QuantizedParameter ;
+    vamp:identifier     "w" ;
+    dc:title            "Smallest resolution" ;
+    dc:format           "" ;
+    vamp:min_value       1 ;
+    vamp:max_value       14 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   9 ;
+    vamp:value_names     ( "2" "4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384");
+    .
+plugbase:qm-adaptivespectrogram_param_coarse a  vamp:QuantizedParameter ;
+    vamp:identifier     "coarse" ;
+    dc:title            "Omit alternate resolutions" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-adaptivespectrogram_param_threaded a  vamp:QuantizedParameter ;
+    vamp:identifier     "threaded" ;
+    dc:title            "Multi-threaded processing" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-adaptivespectrogram_output_output a  vamp:DenseOutput ;
+    vamp:identifier       "output" ;
+    dc:title              "Output" ;
+    dc:description        """The output of the plugin"""  ;
+    vamp:unit             "" ;
+    vamp:computes_signal_type  af:Spectrogram ;
+    .
+plugbase:qm-barbeattracker a   vamp:Plugin ;
+    dc:title              "Bar and Beat Tracker" ;
+    vamp:name             "Bar and Beat Tracker" ;
+    dc:description        """Estimate bar and beat locations""" ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Matthew Davies, Christian Landone and Chris Cannam.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-barbeattracker" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-barbeattracker_param_bpb ;
+
+    vamp:output      plugbase:qm-barbeattracker_output_beats ;
+    vamp:output      plugbase:qm-barbeattracker_output_bars ;
+    vamp:output      plugbase:qm-barbeattracker_output_beatcounts ;
+    vamp:output      plugbase:qm-barbeattracker_output_beatsd ;
+    .
+plugbase:qm-barbeattracker_param_bpb a  vamp:QuantizedParameter ;
+    vamp:identifier     "bpb" ;
+    dc:title            "Beats per Bar" ;
+    dc:format           "" ;
+    vamp:min_value       2 ;
+    vamp:max_value       16 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   4 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-barbeattracker_output_beats a  vamp:SparseOutput ;
+    vamp:identifier       "beats" ;
+    dc:title              "Beats" ;
+    dc:description        """Beat locations labelled with metrical position"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+    vamp:computes_event_type   af:Beat ;
+    .
+plugbase:qm-barbeattracker_output_bars a  vamp:SparseOutput ;
+    vamp:identifier       "bars" ;
+    dc:title              "Bars" ;
+    dc:description        """Bar locations"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+    .
+plugbase:qm-barbeattracker_output_beatcounts a  vamp:SparseOutput ;
+    vamp:identifier       "beatcounts" ;
+    dc:title              "Beat Count" ;
+    dc:description        """Beat counter function"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+    .
+plugbase:qm-barbeattracker_output_beatsd a  vamp:SparseOutput ;
+    vamp:identifier       "beatsd" ;
+    dc:title              "Beat Spectral Difference" ;
+    dc:description        """Beat spectral difference function used for bar-line detection"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-chromagram a   vamp:Plugin ;
+    dc:title              "Chromagram" ;
+    vamp:name             "Chromagram" ;
+    dc:description        """Extract a series of tonal chroma vectors from the audio""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-chromagram> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Chris Cannam and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-chromagram" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "4" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:qm-chromagram_param_minpitch ;
+    vamp:parameter   plugbase:qm-chromagram_param_maxpitch ;
+    vamp:parameter   plugbase:qm-chromagram_param_tuning ;
+    vamp:parameter   plugbase:qm-chromagram_param_bpo ;
+    vamp:parameter   plugbase:qm-chromagram_param_normalization ;
+
+    vamp:output      plugbase:qm-chromagram_output_chromagram ;
+    vamp:output      plugbase:qm-chromagram_output_chromameans ;
+    .
+plugbase:qm-chromagram_param_minpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "minpitch" ;
+    dc:title            "Minimum Pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   36 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-chromagram_param_maxpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "maxpitch" ;
+    dc:title            "Maximum Pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   96 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-chromagram_param_tuning a  vamp:Parameter ;
+    vamp:identifier     "tuning" ;
+    dc:title            "Tuning Frequency" ;
+    dc:format           "Hz" ;
+    vamp:min_value       360 ;
+    vamp:max_value       500 ;
+    vamp:unit           "Hz"  ;
+    vamp:default_value   440 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-chromagram_param_bpo a  vamp:QuantizedParameter ;
+    vamp:identifier     "bpo" ;
+    dc:title            "Bins per Octave" ;
+    dc:format           "bins" ;
+    vamp:min_value       2 ;
+    vamp:max_value       480 ;
+    vamp:unit           "bins" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   12 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-chromagram_param_normalization a  vamp:QuantizedParameter ;
+    vamp:identifier     "normalization" ;
+    dc:title            "Normalization" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       2 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ( "None" "Unit Sum" "Unit Maximum");
+    .
+plugbase:qm-chromagram_output_chromagram a  vamp:DenseOutput ;
+    vamp:identifier       "chromagram" ;
+    dc:title              "Chromagram" ;
+    dc:description        "Output of chromagram, as a single vector per process block"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        12 ;
+    vamp:bin_names        ( "C" "C#" "D" "D#" "E" "F" "F#" "G" "G#" "A" "A#" "B");
+    vamp:computes_signal_type  af:Chromagram ;
+    .
+plugbase:qm-chromagram_output_chromameans a  vamp:DenseOutput ;
+    vamp:identifier       "chromameans" ;
+    dc:title              "Chroma Means" ;
+    dc:description        "Mean values of chromagram bins across the duration of the input audio"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        12 ;
+    vamp:bin_names        ( "C" "C#" "D" "D#" "E" "F" "F#" "G" "G#" "A" "A#" "B");
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-constantq a   vamp:Plugin ;
+    dc:title              "Constant-Q Spectrogram" ;
+    vamp:name             "Constant-Q Spectrogram" ;
+    dc:description        """Extract a spectrogram with constant ratio of centre frequency to resolution from the input audio""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-constantq> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Chris Cannam and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-constantq" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "2" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:qm-constantq_param_minpitch ;
+    vamp:parameter   plugbase:qm-constantq_param_maxpitch ;
+    vamp:parameter   plugbase:qm-constantq_param_tuning ;
+    vamp:parameter   plugbase:qm-constantq_param_bpo ;
+    vamp:parameter   plugbase:qm-constantq_param_normalized ;
+
+    vamp:output      plugbase:qm-constantq_output_constantq ;
+    .
+plugbase:qm-constantq_param_minpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "minpitch" ;
+    dc:title            "Minimum Pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   36 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-constantq_param_maxpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "maxpitch" ;
+    dc:title            "Maximum Pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   84 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-constantq_param_tuning a  vamp:Parameter ;
+    vamp:identifier     "tuning" ;
+    dc:title            "Tuning Frequency" ;
+    dc:format           "Hz" ;
+    vamp:min_value       360 ;
+    vamp:max_value       500 ;
+    vamp:unit           "Hz"  ;
+    vamp:default_value   440 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-constantq_param_bpo a  vamp:QuantizedParameter ;
+    vamp:identifier     "bpo" ;
+    dc:title            "Bins per Octave" ;
+    dc:format           "bins" ;
+    vamp:min_value       2 ;
+    vamp:max_value       480 ;
+    vamp:unit           "bins" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   12 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-constantq_param_normalized a  vamp:QuantizedParameter ;
+    vamp:identifier     "normalized" ;
+    dc:title            "Normalized" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-constantq_output_constantq a  vamp:DenseOutput ;
+    vamp:identifier       "constantq" ;
+    dc:title              "Constant-Q Spectrogram" ;
+    dc:description        "Output of constant-Q transform, as a single vector per process block"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:computes_signal_type  af:Spectrogram ;
+    .
+plugbase:qm-dwt a   vamp:Plugin ;
+    dc:title              "Discrete Wavelet Transform" ;
+    vamp:name             "Discrete Wavelet Transform" ;
+    dc:description        """Visualisation by scalogram""" ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Thomas Wilmering.  Copyright (c) 2009 Thomas Wilmering and QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-dwt" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-dwt_param_scales ;
+    vamp:parameter   plugbase:qm-dwt_param_wavelet ;
+    vamp:parameter   plugbase:qm-dwt_param_threshold ;
+    vamp:parameter   plugbase:qm-dwt_param_absolute ;
+
+    vamp:output      plugbase:qm-dwt_output_wcoeff ;
+    .
+plugbase:qm-dwt_param_scales a  vamp:QuantizedParameter ;
+    vamp:identifier     "scales" ;
+    dc:title            "Scales" ;
+    dc:format           "" ;
+    vamp:min_value       1 ;
+    vamp:max_value       16 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   10 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-dwt_param_wavelet a  vamp:QuantizedParameter ;
+    vamp:identifier     "wavelet" ;
+    dc:title            "Wavelet" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       42 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ( "Haar" "Daubechies 2" "Daubechies 3" "Daubechies 4" "Daubechies 5" "Daubechies 6" "Daubechies 7" "Daubechies 8" "Daubechies 9" "Daubechies 10" "Daubechies 20" "Daubechies 40" "Symlet 2" "Symlet 3" "Symlet 4" "Symlet 5" "Symlet 6" "Symlet 7" "Symlet 8" "Symlet 9" "Symlet 10" "Symlet 20" "Symlet 30" "Coiflet 1" "Coiflet 2" "Coiflet 3" "Coiflet 4" "Coiflet 5" "Biorthogonal 1.3" "Biorthogonal 1.5" "Biorthogonal 2.2" "Biorthogonal 2.4" "Biorthogonal 2.6" "Biorthogonal 2.8" "Biorthogonal 3.1" "Biorthogonal 3.3" "Biorthogonal 3.5" "Biorthogonal 3.7" "Biorthogonal 3.9" "Biorthogonal 4.4" "Biorthogonal 5.5" "Biorthogonal 6.8" "Meyer");
+    .
+plugbase:qm-dwt_param_threshold a  vamp:Parameter ;
+    vamp:identifier     "threshold" ;
+    dc:title            "Threshold" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       0.01 ;
+    vamp:unit           ""  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-dwt_param_absolute a  vamp:QuantizedParameter ;
+    vamp:identifier     "absolute" ;
+    dc:title            "Absolute values" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-dwt_output_wcoeff a  vamp:DenseOutput ;
+    vamp:identifier       "wcoeff" ;
+    dc:title              "Wavelet Coefficients" ;
+    dc:description        """Wavelet coefficients"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        10 ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-keydetector a   vamp:Plugin ;
+    dc:title              "Key Detector" ;
+    vamp:name             "Key Detector" ;
+    dc:description        """Estimate the key of the music""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-keydetector> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Katy Noland and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-keydetector" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "4" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-keydetector_param_tuning ;
+    vamp:parameter   plugbase:qm-keydetector_param_length ;
+
+    vamp:output      plugbase:qm-keydetector_output_tonic ;
+    vamp:output      plugbase:qm-keydetector_output_mode ;
+    vamp:output      plugbase:qm-keydetector_output_key ;
+    vamp:output      plugbase:qm-keydetector_output_keystrength ;
+    .
+plugbase:qm-keydetector_param_tuning a  vamp:Parameter ;
+    vamp:identifier     "tuning" ;
+    dc:title            "Tuning Frequency" ;
+    dc:format           "Hz" ;
+    vamp:min_value       420 ;
+    vamp:max_value       460 ;
+    vamp:unit           "Hz"  ;
+    vamp:default_value   440 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-keydetector_param_length a  vamp:QuantizedParameter ;
+    vamp:identifier     "length" ;
+    dc:title            "Window Length" ;
+    dc:format           "chroma frames" ;
+    vamp:min_value       1 ;
+    vamp:max_value       30 ;
+    vamp:unit           "chroma frames" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   10 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-keydetector_output_tonic a  vamp:SparseOutput ;
+    vamp:identifier       "tonic" ;
+    dc:title              "Tonic Pitch" ;
+    dc:description        "Tonic of the estimated key (from C = 1 to B = 12)"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    a                     vamp:QuantizedOutput ;
+    vamp:quantize_step    1  ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    1  ;
+    vamp:max_value    12  ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      1.34583 ;
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-keydetector_output_mode a  vamp:SparseOutput ;
+    vamp:identifier       "mode" ;
+    dc:title              "Key Mode" ;
+    dc:description        "Major or minor mode of the estimated key (major = 0, minor = 1)"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    a                     vamp:QuantizedOutput ;
+    vamp:quantize_step    1  ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    0  ;
+    vamp:max_value    1  ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      1.34583 ;
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-keydetector_output_key a  vamp:SparseOutput ;
+    vamp:identifier       "key" ;
+    dc:title              "Key" ;
+    dc:description        "Estimated key (from C major = 1 to B major = 12 and C minor = 13 to B minor = 24)"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    a                     vamp:QuantizedOutput ;
+    vamp:quantize_step    1  ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    1  ;
+    vamp:max_value    24  ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      1.34583 ;
+    vamp:computes_event_type   af:KeyChange ;
+    .
+plugbase:qm-keydetector_output_keystrength a  vamp:DenseOutput ;
+    vamp:identifier       "keystrength" ;
+    dc:title              "Key Strength Plot" ;
+    dc:description        "Correlation of the chroma vector with stored key profile for each major and minor key"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        25 ;
+    vamp:bin_names        ( "F# / Gb major" "B major" "E major" "A major" "D major" "G major" "C major" "F major" "Bb major" "Eb major" "Ab major" "Db major" " " "Eb / D# minor" "G# minor" "C# minor" "F# minor" "B minor" "E minor" "A minor" "D minor" "G minor" "C minor" "F minor" "Bb minor");
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-mfcc a   vamp:Plugin ;
+    dc:title              "Mel-Frequency Cepstral Coefficients" ;
+    vamp:name             "Mel-Frequency Cepstral Coefficients" ;
+    dc:description        """Calculate a series of MFCC vectors from the audio""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-mfcc> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Nicolas Chetry and Chris Cannam.  Copyright (c) 2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-mfcc" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:qm-mfcc_param_nceps ;
+    vamp:parameter   plugbase:qm-mfcc_param_logpower ;
+    vamp:parameter   plugbase:qm-mfcc_param_wantc0 ;
+
+    vamp:output      plugbase:qm-mfcc_output_coefficients ;
+    vamp:output      plugbase:qm-mfcc_output_means ;
+    .
+plugbase:qm-mfcc_param_nceps a  vamp:QuantizedParameter ;
+    vamp:identifier     "nceps" ;
+    dc:title            "Number of Coefficients" ;
+    dc:format           "" ;
+    vamp:min_value       1 ;
+    vamp:max_value       40 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   20 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-mfcc_param_logpower a  vamp:Parameter ;
+    vamp:identifier     "logpower" ;
+    dc:title            "Power for Mel Amplitude Logs" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       5 ;
+    vamp:unit           ""  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-mfcc_param_wantc0 a  vamp:QuantizedParameter ;
+    vamp:identifier     "wantc0" ;
+    dc:title            "Include C0" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-mfcc_output_coefficients a  vamp:DenseOutput ;
+    vamp:identifier       "coefficients" ;
+    dc:title              "Coefficients" ;
+    dc:description        "MFCC values"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        20 ;
+    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-mfcc_output_means a  vamp:DenseOutput ;
+    vamp:identifier       "means" ;
+    dc:title              "Means of Coefficients" ;
+    dc:description        "Mean values of MFCCs across duration of audio input"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        20 ;
+    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-onsetdetector a   vamp:Plugin ;
+    dc:title              "Note Onset Detector" ;
+    vamp:name             "Note Onset Detector" ;
+    dc:description        """Estimate individual note onset positions""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-onsetdetector> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Christian Landone, Chris Duxbury and Juan Pablo Bello.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-onsetdetector" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "2" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:qm-onsetdetector_param_dftype ;
+    vamp:parameter   plugbase:qm-onsetdetector_param_sensitivity ;
+    vamp:parameter   plugbase:qm-onsetdetector_param_whiten ;
+
+    vamp:output      plugbase:qm-onsetdetector_output_onsets ;
+    vamp:output      plugbase:qm-onsetdetector_output_detection_fn ;
+    vamp:output      plugbase:qm-onsetdetector_output_smoothed_df ;
+    .
+plugbase:qm-onsetdetector_param_dftype a  vamp:QuantizedParameter ;
+    vamp:identifier     "dftype" ;
+    dc:title            "Onset Detection Function Type" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       4 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   3 ;
+    vamp:value_names     ( "High-Frequency Content" "Spectral Difference" "Phase Deviation" "Complex Domain" "Broadband Energy Rise");
+    .
+plugbase:qm-onsetdetector_param_sensitivity a  vamp:QuantizedParameter ;
+    vamp:identifier     "sensitivity" ;
+    dc:title            "Onset Detector Sensitivity" ;
+    dc:format           "%" ;
+    vamp:min_value       0 ;
+    vamp:max_value       100 ;
+    vamp:unit           "%" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   50 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-onsetdetector_param_whiten a  vamp:QuantizedParameter ;
+    vamp:identifier     "whiten" ;
+    dc:title            "Adaptive Whitening" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-onsetdetector_output_onsets a  vamp:SparseOutput ;
+    vamp:identifier       "onsets" ;
+    dc:title              "Note Onsets" ;
+    dc:description        "Perceived note onset positions"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+    vamp:computes_event_type   af:Onset;
+    .
+plugbase:qm-onsetdetector_output_detection_fn a  vamp:DenseOutput ;
+    vamp:identifier       "detection_fn" ;
+    dc:title              "Onset Detection Function" ;
+    dc:description        "Probability function of note onset likelihood"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:computes_signal_type   af:OnsetDetectionFunction ;
+    .
+plugbase:qm-onsetdetector_output_smoothed_df a  vamp:SparseOutput ;
+    vamp:identifier       "smoothed_df" ;
+    dc:title              "Smoothed Detection Function" ;
+    dc:description        "Smoothed probability function used for peak-picking"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+    vamp:computes_signal_type   af:OnsetDetectionFunction ;
+    .
+plugbase:qm-segmenter a   vamp:Plugin ;
+    dc:title              "Segmenter" ;
+    vamp:name             "Segmenter" ;
+    dc:description        """Divide the track into a sequence of consistent segments""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-segmenter> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Mark Levy.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-segmenter" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "2" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-segmenter_param_nSegmentTypes ;
+    vamp:parameter   plugbase:qm-segmenter_param_featureType ;
+    vamp:parameter   plugbase:qm-segmenter_param_neighbourhoodLimit ;
+
+    vamp:output      plugbase:qm-segmenter_output_segmentation ;
+    .
+plugbase:qm-segmenter_param_nSegmentTypes a  vamp:QuantizedParameter ;
+    vamp:identifier     "nSegmentTypes" ;
+    dc:title            "Number of segment-types" ;
+    dc:format           "" ;
+    vamp:min_value       2 ;
+    vamp:max_value       12 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   10 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-segmenter_param_featureType a  vamp:QuantizedParameter ;
+    vamp:identifier     "featureType" ;
+    dc:title            "Feature Type" ;
+    dc:format           "" ;
+    vamp:min_value       1 ;
+    vamp:max_value       3 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ( "Hybrid (Constant-Q)" "Chromatic (Chroma)" "Timbral (MFCC)");
+    .
+plugbase:qm-segmenter_param_neighbourhoodLimit a  vamp:QuantizedParameter ;
+    vamp:identifier     "neighbourhoodLimit" ;
+    dc:title            "Minimum segment duration" ;
+    dc:format           "s" ;
+    vamp:min_value       1 ;
+    vamp:max_value       15 ;
+    vamp:unit           "s" ;
+    vamp:quantize_step   0.2  ;
+    vamp:default_value   4 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-segmenter_output_segmentation a  vamp:SparseOutput ;
+    vamp:identifier       "segmentation" ;
+    dc:title              "Segmentation" ;
+    dc:description        "Segmentation"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "segment-type" ;
+    a                     vamp:QuantizedOutput ;
+    vamp:quantize_step    1  ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    1  ;
+    vamp:max_value    10  ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      5 ;
+    vamp:computes_event_type   af:StructuralSegment ;
+    .
+plugbase:qm-similarity a   vamp:Plugin ;
+    dc:title              "Similarity" ;
+    vamp:name             "Similarity" ;
+    dc:description        """Return a distance matrix for similarity between the input audio channels""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-similarity> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Mark Levy, Kurt Jacobson and Chris Cannam.  Copyright (c) 2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-similarity" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-similarity_param_featureType ;
+
+    vamp:output      plugbase:qm-similarity_output_distancematrix ;
+    vamp:output      plugbase:qm-similarity_output_distancevector ;
+    vamp:output      plugbase:qm-similarity_output_sorteddistancevector ;
+    vamp:output      plugbase:qm-similarity_output_means ;
+    vamp:output      plugbase:qm-similarity_output_variances ;
+    vamp:output      plugbase:qm-similarity_output_beatspectrum ;
+    .
+plugbase:qm-similarity_param_featureType a  vamp:QuantizedParameter ;
+    vamp:identifier     "featureType" ;
+    dc:title            "Feature Type" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       4 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ( "Timbre" "Timbre and Rhythm" "Chroma" "Chroma and Rhythm" "Rhythm only");
+    .
+plugbase:qm-similarity_output_distancematrix a  vamp:DenseOutput ;
+    vamp:identifier       "distancematrix" ;
+    dc:title              "Distance Matrix" ;
+    dc:description        "Distance matrix for similarity metric.  Smaller = more similar.  Should be symmetrical."  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-similarity_output_distancevector a  vamp:DenseOutput ;
+    vamp:identifier       "distancevector" ;
+    dc:title              "Distance from First Channel" ;
+    dc:description        "Distance vector for similarity of each channel to the first channel.  Smaller = more similar."  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-similarity_output_sorteddistancevector a  vamp:DenseOutput ;
+    vamp:identifier       "sorteddistancevector" ;
+    dc:title              "Ordered Distances from First Channel" ;
+    dc:description        "Vector of the order of other channels in similarity to the first, followed by distance vector for similarity of each to the first.  Smaller = more similar."  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-similarity_output_means a  vamp:DenseOutput ;
+    vamp:identifier       "means" ;
+    dc:title              "Feature Means" ;
+    dc:description        "Means of the feature bins.  Feature time (sec) corresponds to input channel.  Number of bins depends on selected feature type."  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        20 ;
+    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-similarity_output_variances a  vamp:DenseOutput ;
+    vamp:identifier       "variances" ;
+    dc:title              "Feature Variances" ;
+    dc:description        "Variances of the feature bins.  Feature time (sec) corresponds to input channel.  Number of bins depends on selected feature type."  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        20 ;
+    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-similarity_output_beatspectrum a  vamp:SparseOutput ;
+    vamp:identifier       "beatspectrum" ;
+    dc:title              "Beat Spectra" ;
+    dc:description        "Rhythmic self-similarity vectors (beat spectra) for the input channels.  Feature time (sec) corresponds to input channel.  Not returned if rhythm weighting is zero."  ;
+    vamp:fixed_bin_count  "false" ;
+    vamp:unit             "" ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      1 ;
+#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
+#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
+#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
+    .
+plugbase:qm-tempotracker a   vamp:Plugin ;
+    dc:title              "Tempo and Beat Tracker" ;
+    vamp:name             "Tempo and Beat Tracker" ;
+    dc:description        """Estimate beat locations and tempo""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-tempotracker> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Christian Landone and Matthew Davies.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-tempotracker" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "4" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:qm-tempotracker_param_method ;
+    vamp:parameter   plugbase:qm-tempotracker_param_dftype ;
+    vamp:parameter   plugbase:qm-tempotracker_param_whiten ;
+
+    vamp:output      plugbase:qm-tempotracker_output_beats ;
+    vamp:output      plugbase:qm-tempotracker_output_detection_fn ;
+    vamp:output      plugbase:qm-tempotracker_output_tempo ;
+    .
+plugbase:qm-tempotracker_param_method a  vamp:QuantizedParameter ;
+    vamp:identifier     "method" ;
+    dc:title            "Beat Tracking Method" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ( "Old" "New");
+    .
+plugbase:qm-tempotracker_param_dftype a  vamp:QuantizedParameter ;
+    vamp:identifier     "dftype" ;
+    dc:title            "Onset Detection Function Type" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       4 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   3 ;
+    vamp:value_names     ( "High-Frequency Content" "Spectral Difference" "Phase Deviation" "Complex Domain" "Broadband Energy Rise");
+    .
+plugbase:qm-tempotracker_param_whiten a  vamp:QuantizedParameter ;
+    vamp:identifier     "whiten" ;
+    dc:title            "Adaptive Whitening" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-tempotracker_output_beats a  vamp:SparseOutput ;
+    vamp:identifier       "beats" ;
+    dc:title              "Beats" ;
+    dc:description        "Estimated metrical beat locations"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+    vamp:computes_event_type   af:Beat;
+    .
+plugbase:qm-tempotracker_output_detection_fn a  vamp:DenseOutput ;
+    vamp:identifier       "detection_fn" ;
+    dc:title              "Onset Detection Function" ;
+    dc:description        "Probability function of note onset likelihood"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:computes_signal_type   af:OnsetDetectionFunction;
+    .
+plugbase:qm-tempotracker_output_tempo a  vamp:SparseOutput ;
+    vamp:identifier       "tempo" ;
+    dc:title              "Tempo" ;
+    dc:description        "Locked tempo estimates"  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "bpm" ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      86.1326 ;
+    vamp:computes_event_type   af:Tempo ;
+    .
+plugbase:qm-tonalchange a   vamp:Plugin ;
+    dc:title              "Tonal Change" ;
+    vamp:name             "Tonal Change" ;
+    dc:description        """Detect and return the positions of harmonic changes such as chord boundaries""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-tonalchange> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Martin Gasser and Christopher Harte.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-tonalchange" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+
+    vamp:parameter   plugbase:qm-tonalchange_param_smoothingwidth ;
+    vamp:parameter   plugbase:qm-tonalchange_param_minpitch ;
+    vamp:parameter   plugbase:qm-tonalchange_param_maxpitch ;
+    vamp:parameter   plugbase:qm-tonalchange_param_tuning ;
+
+    vamp:output      plugbase:qm-tonalchange_output_tcstransform ;
+    vamp:output      plugbase:qm-tonalchange_output_tcfunction ;
+    vamp:output      plugbase:qm-tonalchange_output_changepositions ;
+    .
+plugbase:qm-tonalchange_param_smoothingwidth a  vamp:QuantizedParameter ;
+    vamp:identifier     "smoothingwidth" ;
+    dc:title            "Gaussian smoothing" ;
+    dc:format           "frames" ;
+    vamp:min_value       0 ;
+    vamp:max_value       20 ;
+    vamp:unit           "frames" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   5 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-tonalchange_param_minpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "minpitch" ;
+    dc:title            "Chromagram minimum pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   32 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-tonalchange_param_maxpitch a  vamp:QuantizedParameter ;
+    vamp:identifier     "maxpitch" ;
+    dc:title            "Chromagram maximum pitch" ;
+    dc:format           "MIDI units" ;
+    vamp:min_value       0 ;
+    vamp:max_value       127 ;
+    vamp:unit           "MIDI units" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   108 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-tonalchange_param_tuning a  vamp:Parameter ;
+    vamp:identifier     "tuning" ;
+    dc:title            "Chromagram tuning frequency" ;
+    dc:format           "Hz" ;
+    vamp:min_value       420 ;
+    vamp:max_value       460 ;
+    vamp:unit           "Hz"  ;
+    vamp:default_value   440 ;
+    vamp:value_names     ();
+    .
+plugbase:qm-tonalchange_output_tcstransform a  vamp:DenseOutput ;
+    vamp:identifier       "tcstransform" ;
+    dc:title              "Transform to 6D Tonal Content Space" ;
+    dc:description        ""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    -1  ;
+    vamp:max_value    1  ;
+    vamp:bin_count        6 ;
+    vamp:bin_names        ( "" "" "" "" "" "");
+    vamp:computes_signal_type  af:TonalContentSpace;
+    .
+plugbase:qm-tonalchange_output_tcfunction a  vamp:SparseOutput ;
+    vamp:identifier       "tcfunction" ;
+    dc:title              "Tonal Change Detection Function" ;
+    dc:description        ""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        1 ;
+    vamp:bin_names        ( "");
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      21.5332 ;
+    vamp:computes_signal_type  af:TonalChangeDetectionFunction;
+    .
+plugbase:qm-tonalchange_output_changepositions a  vamp:SparseOutput ;
+    vamp:identifier       "changepositions" ;
+    dc:title              "Tonal Change Positions" ;
+    dc:description        ""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:bin_names        ();
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      21.5332 ;
+    vamp:computes_event_type   af:TonalOnset;
+    .
+plugbase:qm-transcription a   vamp:Plugin ;
+    dc:title              "Polyphonic Transcription" ;
+    vamp:name             "Polyphonic Transcription" ;
+    dc:description        """Transcribe the input audio to estimated notes""" ;
+    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-transcription> ;
+    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """Plugin by Dr. Ruohua Zhou.  Copyright (c) 2008-2009 QMUL - All Rights Reserved""" ;
+    vamp:identifier       "qm-transcription" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:TimeDomain ;
+    vamp:output      plugbase:qm-transcription_output_transcription ;
+    .
+plugbase:qm-transcription_output_transcription a  vamp:SparseOutput ;
+    vamp:identifier       "transcription" ;
+    dc:title              "Transcription" ;
+    dc:description        """Estimated note pitch (MIDI note number from 0 to 127)"""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "MIDI units" ;
+    a                     vamp:QuantizedOutput ;
+    vamp:quantize_step    1  ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    0  ;
+    vamp:max_value    127  ;
+    vamp:bin_count        1 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:computes_event_type   af:Note ;
+    .
+
+
Binary file audio_key_detection/qm-keydetector-v4/qm-vamp-plugins.so has changed
--- a/audio_key_detection/qm-keydetector-v5/README.txt	Tue Jul 30 15:45:53 2019 +0100
+++ b/audio_key_detection/qm-keydetector-v5/README.txt	Wed Jul 31 10:54:05 2019 +0100
@@ -1,7 +1,7 @@
 #
 # MIREX 2019 submission
 #
-# QM Key Detector
+# QM Key Detector v5
 # Plugin by Katy Noland and Christian Landone.
 # Prepared by Chris Cannam, c.cannam@qmul.ac.uk
 
--- a/audio_key_detection/qm-keydetector-v5/qm-keydetector.ttl	Tue Jul 30 15:45:53 2019 +0100
+++ b/audio_key_detection/qm-keydetector-v5/qm-keydetector.ttl	Wed Jul 31 10:54:05 2019 +0100
@@ -4,8 +4,9 @@
 
 :transform a vamp:Transform ;
     vamp:plugin <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-keydetector> ;
+    vamp:plugin_version "5" ;
     vamp:step_size "32768"^^xsd:int ; 
-    vamp:block_size "32768"^^xsd:int ; 
+    vamp:block_size "32768"^^xsd:int ;
     vamp:parameter_binding [
         vamp:parameter [ vamp:identifier "length" ] ;
         vamp:value "10"^^xsd:float ;
--- a/audio_key_detection/qm-keydetector/README.txt	Tue Jul 30 15:45:53 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-#
-# MIREX 2019 submission
-#
-# QM Key Detector
-# Plugin by Katy Noland and Christian Landone.
-# Prepared by Chris Cannam, c.cannam@qmul.ac.uk
-
-
-# Architecture
-
-- Linux 64-bit
-
-# Dependencies
-
-- Sonic Annotator v1.5
-  http://code.soundsoftware.ac.uk/projects/sonic-annotator/files
-
-- GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
-
-- Typical Unix/GNU shell commands
-
-# How to run
-
-In a terminal window run:
-
-./qm-keydetector.sh input.wav output.txt
-
--- a/audio_key_detection/qm-keydetector/qm-keydetector.sh	Tue Jul 30 15:45:53 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-
-mydir=`dirname "$0"`
-infile="$1"
-outfile="$2"
-
-if [ t"$infile" = "t" ] || [ t"$outfile" = "t" ]; then
-    echo "Usage: $0 infile.wav outfile.txt"
-    exit 2
-fi
-
-mkdir -p "$mydir"/out || exit 1
-
-echo "Processing input WAV file $infile, writing results to $outfile..." 1>&2
-
-# We want output like
-#
-# Bb<TAB>minor
-#
-# Our Sonic Annotator output gives us something like that for each
-# detected key change (the feature label, in column 4), but we want
-# the modal key (modal in the statistical rather than the musical
-# sense!) and Sonic Annotator doesn't retain labels for summaries.  So
-# let's write to a temporary file, retrieve the modal value, then pick
-# the label (from earlier in the file) whose value corresponds to it.
-
-VAMP_PATH="$mydir" sonic-annotator \
-    -t "$mydir"/qm-keydetector.ttl \
-    -w csv --csv-separator ";" \
-    --csv-basedir "$mydir/out" \
-    --csv-force \
-    -S mode \
-    "$infile" || exit 1
-
-inbase=`basename "$infile"`
-inbase=${inbase%.*}
-tempfile="out/${inbase}_vamp_qm-vamp-plugins_qm-keydetector_key.csv"
-if [ ! -f "$tempfile" ]; then
-    echo "Key output file $tempfile not found! bailing out"; exit 1
-fi
-
-mode=`grep ';mode;' "$tempfile" | awk -F';' '{ print $4; }'`
-
-cat "$tempfile" | \
-    awk -F';' '{ print $2, $3 }' | \
-    grep "^$mode \"" | \
-    head -n 1 | \
-    sed -e 's/^[^"]*"//' -e 's/"[^"]*$//' -e 's,/ [^ ]* ,,' -e 's/ /\t/' \
-    > "$outfile"
-
-
-
-
--- a/audio_key_detection/qm-keydetector/qm-keydetector.ttl	Tue Jul 30 15:45:53 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
-@prefix vamp:     <http://purl.org/ontology/vamp/> .
-@prefix :         <#> .
-
-:transform a vamp:Transform ;
-    vamp:plugin <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-keydetector> ;
-    vamp:step_size "32768"^^xsd:int ; 
-    vamp:block_size "32768"^^xsd:int ; 
-    vamp:parameter_binding [
-        vamp:parameter [ vamp:identifier "length" ] ;
-        vamp:value "10"^^xsd:float ;
-    ] ;
-    vamp:parameter_binding [
-        vamp:parameter [ vamp:identifier "tuning" ] ;
-        vamp:value "440"^^xsd:float ;
-    ] ;
-    vamp:output <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-keydetector_output_key> .
--- a/audio_key_detection/qm-keydetector/qm-vamp-plugins.n3	Tue Jul 30 15:45:53 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1088 +0,0 @@
-@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
-@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
-@prefix vamp:     <http://purl.org/ontology/vamp/> .
-@prefix plugbase: <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#> .
-@prefix owl:      <http://www.w3.org/2002/07/owl#> .
-@prefix dc:       <http://purl.org/dc/elements/1.1/> .
-@prefix af:       <http://purl.org/ontology/af/> .
-@prefix foaf:     <http://xmlns.com/foaf/0.1/> .
-@prefix cc:       <http://web.resource.org/cc/> .
-@prefix :         <#> .
-
-<>  a   vamp:PluginDescription ;
-    foaf:maker          <http://www.vamp-plugins.org/doap.rdf#template-generator> ;
-    foaf:primaryTopic   <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins> .
-
-:qm-vamp-plugins a  vamp:PluginLibrary ;
-    vamp:identifier "qm-vamp-plugins"  ; 
-    vamp:available_plugin plugbase:qm-adaptivespectrogram ; 
-    vamp:available_plugin plugbase:qm-barbeattracker ; 
-    vamp:available_plugin plugbase:qm-chromagram ; 
-    vamp:available_plugin plugbase:qm-constantq ; 
-    vamp:available_plugin plugbase:qm-dwt ; 
-    vamp:available_plugin plugbase:qm-keydetector ; 
-    vamp:available_plugin plugbase:qm-mfcc ; 
-    vamp:available_plugin plugbase:qm-onsetdetector ; 
-    vamp:available_plugin plugbase:qm-segmenter ; 
-    vamp:available_plugin plugbase:qm-similarity ; 
-    vamp:available_plugin plugbase:qm-tempotracker ; 
-    vamp:available_plugin plugbase:qm-tonalchange ; 
-    vamp:available_plugin plugbase:qm-transcription ; 
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html> ;
-    .
-
-plugbase:qm-adaptivespectrogram a   vamp:Plugin ;
-    dc:title              "Adaptive Spectrogram" ;
-    vamp:name             "Adaptive Spectrogram" ;
-    dc:description        """Produce an adaptive spectrogram by adaptive selection from spectrograms at multiple resolutions""" ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Wen Xue and Chris Cannam.  Copyright (c) 2009 Wen Xue and QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-adaptivespectrogram" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-adaptivespectrogram_param_n ;
-    vamp:parameter   plugbase:qm-adaptivespectrogram_param_w ;
-    vamp:parameter   plugbase:qm-adaptivespectrogram_param_coarse ;
-    vamp:parameter   plugbase:qm-adaptivespectrogram_param_threaded ;
-
-    vamp:output      plugbase:qm-adaptivespectrogram_output_output ;
-    .
-plugbase:qm-adaptivespectrogram_param_n a  vamp:QuantizedParameter ;
-    vamp:identifier     "n" ;
-    dc:title            "Number of resolutions" ;
-    dc:format           "" ;
-    vamp:min_value       2 ;
-    vamp:max_value       10 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   3 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-adaptivespectrogram_param_w a  vamp:QuantizedParameter ;
-    vamp:identifier     "w" ;
-    dc:title            "Smallest resolution" ;
-    dc:format           "" ;
-    vamp:min_value       1 ;
-    vamp:max_value       14 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   9 ;
-    vamp:value_names     ( "2" "4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384");
-    .
-plugbase:qm-adaptivespectrogram_param_coarse a  vamp:QuantizedParameter ;
-    vamp:identifier     "coarse" ;
-    dc:title            "Omit alternate resolutions" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-adaptivespectrogram_param_threaded a  vamp:QuantizedParameter ;
-    vamp:identifier     "threaded" ;
-    dc:title            "Multi-threaded processing" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-adaptivespectrogram_output_output a  vamp:DenseOutput ;
-    vamp:identifier       "output" ;
-    dc:title              "Output" ;
-    dc:description        """The output of the plugin"""  ;
-    vamp:unit             "" ;
-    vamp:computes_signal_type  af:Spectrogram ;
-    .
-plugbase:qm-barbeattracker a   vamp:Plugin ;
-    dc:title              "Bar and Beat Tracker" ;
-    vamp:name             "Bar and Beat Tracker" ;
-    dc:description        """Estimate bar and beat locations""" ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Matthew Davies, Christian Landone and Chris Cannam.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-barbeattracker" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-barbeattracker_param_bpb ;
-
-    vamp:output      plugbase:qm-barbeattracker_output_beats ;
-    vamp:output      plugbase:qm-barbeattracker_output_bars ;
-    vamp:output      plugbase:qm-barbeattracker_output_beatcounts ;
-    vamp:output      plugbase:qm-barbeattracker_output_beatsd ;
-    .
-plugbase:qm-barbeattracker_param_bpb a  vamp:QuantizedParameter ;
-    vamp:identifier     "bpb" ;
-    dc:title            "Beats per Bar" ;
-    dc:format           "" ;
-    vamp:min_value       2 ;
-    vamp:max_value       16 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   4 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-barbeattracker_output_beats a  vamp:SparseOutput ;
-    vamp:identifier       "beats" ;
-    dc:title              "Beats" ;
-    dc:description        """Beat locations labelled with metrical position"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-    vamp:computes_event_type   af:Beat ;
-    .
-plugbase:qm-barbeattracker_output_bars a  vamp:SparseOutput ;
-    vamp:identifier       "bars" ;
-    dc:title              "Bars" ;
-    dc:description        """Bar locations"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-    .
-plugbase:qm-barbeattracker_output_beatcounts a  vamp:SparseOutput ;
-    vamp:identifier       "beatcounts" ;
-    dc:title              "Beat Count" ;
-    dc:description        """Beat counter function"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-    .
-plugbase:qm-barbeattracker_output_beatsd a  vamp:SparseOutput ;
-    vamp:identifier       "beatsd" ;
-    dc:title              "Beat Spectral Difference" ;
-    dc:description        """Beat spectral difference function used for bar-line detection"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-chromagram a   vamp:Plugin ;
-    dc:title              "Chromagram" ;
-    vamp:name             "Chromagram" ;
-    dc:description        """Extract a series of tonal chroma vectors from the audio""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-chromagram> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Chris Cannam and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-chromagram" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "4" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:qm-chromagram_param_minpitch ;
-    vamp:parameter   plugbase:qm-chromagram_param_maxpitch ;
-    vamp:parameter   plugbase:qm-chromagram_param_tuning ;
-    vamp:parameter   plugbase:qm-chromagram_param_bpo ;
-    vamp:parameter   plugbase:qm-chromagram_param_normalization ;
-
-    vamp:output      plugbase:qm-chromagram_output_chromagram ;
-    vamp:output      plugbase:qm-chromagram_output_chromameans ;
-    .
-plugbase:qm-chromagram_param_minpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "minpitch" ;
-    dc:title            "Minimum Pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   36 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-chromagram_param_maxpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "maxpitch" ;
-    dc:title            "Maximum Pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   96 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-chromagram_param_tuning a  vamp:Parameter ;
-    vamp:identifier     "tuning" ;
-    dc:title            "Tuning Frequency" ;
-    dc:format           "Hz" ;
-    vamp:min_value       360 ;
-    vamp:max_value       500 ;
-    vamp:unit           "Hz"  ;
-    vamp:default_value   440 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-chromagram_param_bpo a  vamp:QuantizedParameter ;
-    vamp:identifier     "bpo" ;
-    dc:title            "Bins per Octave" ;
-    dc:format           "bins" ;
-    vamp:min_value       2 ;
-    vamp:max_value       480 ;
-    vamp:unit           "bins" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   12 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-chromagram_param_normalization a  vamp:QuantizedParameter ;
-    vamp:identifier     "normalization" ;
-    dc:title            "Normalization" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       2 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "None" "Unit Sum" "Unit Maximum");
-    .
-plugbase:qm-chromagram_output_chromagram a  vamp:DenseOutput ;
-    vamp:identifier       "chromagram" ;
-    dc:title              "Chromagram" ;
-    dc:description        "Output of chromagram, as a single vector per process block"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        12 ;
-    vamp:bin_names        ( "C" "C#" "D" "D#" "E" "F" "F#" "G" "G#" "A" "A#" "B");
-    vamp:computes_signal_type  af:Chromagram ;
-    .
-plugbase:qm-chromagram_output_chromameans a  vamp:DenseOutput ;
-    vamp:identifier       "chromameans" ;
-    dc:title              "Chroma Means" ;
-    dc:description        "Mean values of chromagram bins across the duration of the input audio"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        12 ;
-    vamp:bin_names        ( "C" "C#" "D" "D#" "E" "F" "F#" "G" "G#" "A" "A#" "B");
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-constantq a   vamp:Plugin ;
-    dc:title              "Constant-Q Spectrogram" ;
-    vamp:name             "Constant-Q Spectrogram" ;
-    dc:description        """Extract a spectrogram with constant ratio of centre frequency to resolution from the input audio""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-constantq> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Chris Cannam and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-constantq" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "2" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:qm-constantq_param_minpitch ;
-    vamp:parameter   plugbase:qm-constantq_param_maxpitch ;
-    vamp:parameter   plugbase:qm-constantq_param_tuning ;
-    vamp:parameter   plugbase:qm-constantq_param_bpo ;
-    vamp:parameter   plugbase:qm-constantq_param_normalized ;
-
-    vamp:output      plugbase:qm-constantq_output_constantq ;
-    .
-plugbase:qm-constantq_param_minpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "minpitch" ;
-    dc:title            "Minimum Pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   36 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-constantq_param_maxpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "maxpitch" ;
-    dc:title            "Maximum Pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   84 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-constantq_param_tuning a  vamp:Parameter ;
-    vamp:identifier     "tuning" ;
-    dc:title            "Tuning Frequency" ;
-    dc:format           "Hz" ;
-    vamp:min_value       360 ;
-    vamp:max_value       500 ;
-    vamp:unit           "Hz"  ;
-    vamp:default_value   440 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-constantq_param_bpo a  vamp:QuantizedParameter ;
-    vamp:identifier     "bpo" ;
-    dc:title            "Bins per Octave" ;
-    dc:format           "bins" ;
-    vamp:min_value       2 ;
-    vamp:max_value       480 ;
-    vamp:unit           "bins" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   12 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-constantq_param_normalized a  vamp:QuantizedParameter ;
-    vamp:identifier     "normalized" ;
-    dc:title            "Normalized" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-constantq_output_constantq a  vamp:DenseOutput ;
-    vamp:identifier       "constantq" ;
-    dc:title              "Constant-Q Spectrogram" ;
-    dc:description        "Output of constant-Q transform, as a single vector per process block"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:computes_signal_type  af:Spectrogram ;
-    .
-plugbase:qm-dwt a   vamp:Plugin ;
-    dc:title              "Discrete Wavelet Transform" ;
-    vamp:name             "Discrete Wavelet Transform" ;
-    dc:description        """Visualisation by scalogram""" ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Thomas Wilmering.  Copyright (c) 2009 Thomas Wilmering and QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-dwt" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-dwt_param_scales ;
-    vamp:parameter   plugbase:qm-dwt_param_wavelet ;
-    vamp:parameter   plugbase:qm-dwt_param_threshold ;
-    vamp:parameter   plugbase:qm-dwt_param_absolute ;
-
-    vamp:output      plugbase:qm-dwt_output_wcoeff ;
-    .
-plugbase:qm-dwt_param_scales a  vamp:QuantizedParameter ;
-    vamp:identifier     "scales" ;
-    dc:title            "Scales" ;
-    dc:format           "" ;
-    vamp:min_value       1 ;
-    vamp:max_value       16 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   10 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-dwt_param_wavelet a  vamp:QuantizedParameter ;
-    vamp:identifier     "wavelet" ;
-    dc:title            "Wavelet" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       42 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "Haar" "Daubechies 2" "Daubechies 3" "Daubechies 4" "Daubechies 5" "Daubechies 6" "Daubechies 7" "Daubechies 8" "Daubechies 9" "Daubechies 10" "Daubechies 20" "Daubechies 40" "Symlet 2" "Symlet 3" "Symlet 4" "Symlet 5" "Symlet 6" "Symlet 7" "Symlet 8" "Symlet 9" "Symlet 10" "Symlet 20" "Symlet 30" "Coiflet 1" "Coiflet 2" "Coiflet 3" "Coiflet 4" "Coiflet 5" "Biorthogonal 1.3" "Biorthogonal 1.5" "Biorthogonal 2.2" "Biorthogonal 2.4" "Biorthogonal 2.6" "Biorthogonal 2.8" "Biorthogonal 3.1" "Biorthogonal 3.3" "Biorthogonal 3.5" "Biorthogonal 3.7" "Biorthogonal 3.9" "Biorthogonal 4.4" "Biorthogonal 5.5" "Biorthogonal 6.8" "Meyer");
-    .
-plugbase:qm-dwt_param_threshold a  vamp:Parameter ;
-    vamp:identifier     "threshold" ;
-    dc:title            "Threshold" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       0.01 ;
-    vamp:unit           ""  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-dwt_param_absolute a  vamp:QuantizedParameter ;
-    vamp:identifier     "absolute" ;
-    dc:title            "Absolute values" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-dwt_output_wcoeff a  vamp:DenseOutput ;
-    vamp:identifier       "wcoeff" ;
-    dc:title              "Wavelet Coefficients" ;
-    dc:description        """Wavelet coefficients"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        10 ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-keydetector a   vamp:Plugin ;
-    dc:title              "Key Detector" ;
-    vamp:name             "Key Detector" ;
-    dc:description        """Estimate the key of the music""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-keydetector> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Katy Noland and Christian Landone.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-keydetector" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "4" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-keydetector_param_tuning ;
-    vamp:parameter   plugbase:qm-keydetector_param_length ;
-
-    vamp:output      plugbase:qm-keydetector_output_tonic ;
-    vamp:output      plugbase:qm-keydetector_output_mode ;
-    vamp:output      plugbase:qm-keydetector_output_key ;
-    vamp:output      plugbase:qm-keydetector_output_keystrength ;
-    .
-plugbase:qm-keydetector_param_tuning a  vamp:Parameter ;
-    vamp:identifier     "tuning" ;
-    dc:title            "Tuning Frequency" ;
-    dc:format           "Hz" ;
-    vamp:min_value       420 ;
-    vamp:max_value       460 ;
-    vamp:unit           "Hz"  ;
-    vamp:default_value   440 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-keydetector_param_length a  vamp:QuantizedParameter ;
-    vamp:identifier     "length" ;
-    dc:title            "Window Length" ;
-    dc:format           "chroma frames" ;
-    vamp:min_value       1 ;
-    vamp:max_value       30 ;
-    vamp:unit           "chroma frames" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   10 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-keydetector_output_tonic a  vamp:SparseOutput ;
-    vamp:identifier       "tonic" ;
-    dc:title              "Tonic Pitch" ;
-    dc:description        "Tonic of the estimated key (from C = 1 to B = 12)"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    a                     vamp:QuantizedOutput ;
-    vamp:quantize_step    1  ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    1  ;
-    vamp:max_value    12  ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      1.34583 ;
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-keydetector_output_mode a  vamp:SparseOutput ;
-    vamp:identifier       "mode" ;
-    dc:title              "Key Mode" ;
-    dc:description        "Major or minor mode of the estimated key (major = 0, minor = 1)"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    a                     vamp:QuantizedOutput ;
-    vamp:quantize_step    1  ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    0  ;
-    vamp:max_value    1  ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      1.34583 ;
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-keydetector_output_key a  vamp:SparseOutput ;
-    vamp:identifier       "key" ;
-    dc:title              "Key" ;
-    dc:description        "Estimated key (from C major = 1 to B major = 12 and C minor = 13 to B minor = 24)"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    a                     vamp:QuantizedOutput ;
-    vamp:quantize_step    1  ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    1  ;
-    vamp:max_value    24  ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      1.34583 ;
-    vamp:computes_event_type   af:KeyChange ;
-    .
-plugbase:qm-keydetector_output_keystrength a  vamp:DenseOutput ;
-    vamp:identifier       "keystrength" ;
-    dc:title              "Key Strength Plot" ;
-    dc:description        "Correlation of the chroma vector with stored key profile for each major and minor key"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        25 ;
-    vamp:bin_names        ( "F# / Gb major" "B major" "E major" "A major" "D major" "G major" "C major" "F major" "Bb major" "Eb major" "Ab major" "Db major" " " "Eb / D# minor" "G# minor" "C# minor" "F# minor" "B minor" "E minor" "A minor" "D minor" "G minor" "C minor" "F minor" "Bb minor");
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-mfcc a   vamp:Plugin ;
-    dc:title              "Mel-Frequency Cepstral Coefficients" ;
-    vamp:name             "Mel-Frequency Cepstral Coefficients" ;
-    dc:description        """Calculate a series of MFCC vectors from the audio""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-mfcc> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Nicolas Chetry and Chris Cannam.  Copyright (c) 2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-mfcc" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:qm-mfcc_param_nceps ;
-    vamp:parameter   plugbase:qm-mfcc_param_logpower ;
-    vamp:parameter   plugbase:qm-mfcc_param_wantc0 ;
-
-    vamp:output      plugbase:qm-mfcc_output_coefficients ;
-    vamp:output      plugbase:qm-mfcc_output_means ;
-    .
-plugbase:qm-mfcc_param_nceps a  vamp:QuantizedParameter ;
-    vamp:identifier     "nceps" ;
-    dc:title            "Number of Coefficients" ;
-    dc:format           "" ;
-    vamp:min_value       1 ;
-    vamp:max_value       40 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   20 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-mfcc_param_logpower a  vamp:Parameter ;
-    vamp:identifier     "logpower" ;
-    dc:title            "Power for Mel Amplitude Logs" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       5 ;
-    vamp:unit           ""  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-mfcc_param_wantc0 a  vamp:QuantizedParameter ;
-    vamp:identifier     "wantc0" ;
-    dc:title            "Include C0" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-mfcc_output_coefficients a  vamp:DenseOutput ;
-    vamp:identifier       "coefficients" ;
-    dc:title              "Coefficients" ;
-    dc:description        "MFCC values"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        20 ;
-    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-mfcc_output_means a  vamp:DenseOutput ;
-    vamp:identifier       "means" ;
-    dc:title              "Means of Coefficients" ;
-    dc:description        "Mean values of MFCCs across duration of audio input"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        20 ;
-    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-onsetdetector a   vamp:Plugin ;
-    dc:title              "Note Onset Detector" ;
-    vamp:name             "Note Onset Detector" ;
-    dc:description        """Estimate individual note onset positions""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-onsetdetector> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Christian Landone, Chris Duxbury and Juan Pablo Bello.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-onsetdetector" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "2" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:qm-onsetdetector_param_dftype ;
-    vamp:parameter   plugbase:qm-onsetdetector_param_sensitivity ;
-    vamp:parameter   plugbase:qm-onsetdetector_param_whiten ;
-
-    vamp:output      plugbase:qm-onsetdetector_output_onsets ;
-    vamp:output      plugbase:qm-onsetdetector_output_detection_fn ;
-    vamp:output      plugbase:qm-onsetdetector_output_smoothed_df ;
-    .
-plugbase:qm-onsetdetector_param_dftype a  vamp:QuantizedParameter ;
-    vamp:identifier     "dftype" ;
-    dc:title            "Onset Detection Function Type" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       4 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   3 ;
-    vamp:value_names     ( "High-Frequency Content" "Spectral Difference" "Phase Deviation" "Complex Domain" "Broadband Energy Rise");
-    .
-plugbase:qm-onsetdetector_param_sensitivity a  vamp:QuantizedParameter ;
-    vamp:identifier     "sensitivity" ;
-    dc:title            "Onset Detector Sensitivity" ;
-    dc:format           "%" ;
-    vamp:min_value       0 ;
-    vamp:max_value       100 ;
-    vamp:unit           "%" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   50 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-onsetdetector_param_whiten a  vamp:QuantizedParameter ;
-    vamp:identifier     "whiten" ;
-    dc:title            "Adaptive Whitening" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-onsetdetector_output_onsets a  vamp:SparseOutput ;
-    vamp:identifier       "onsets" ;
-    dc:title              "Note Onsets" ;
-    dc:description        "Perceived note onset positions"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-    vamp:computes_event_type   af:Onset;
-    .
-plugbase:qm-onsetdetector_output_detection_fn a  vamp:DenseOutput ;
-    vamp:identifier       "detection_fn" ;
-    dc:title              "Onset Detection Function" ;
-    dc:description        "Probability function of note onset likelihood"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:computes_signal_type   af:OnsetDetectionFunction ;
-    .
-plugbase:qm-onsetdetector_output_smoothed_df a  vamp:SparseOutput ;
-    vamp:identifier       "smoothed_df" ;
-    dc:title              "Smoothed Detection Function" ;
-    dc:description        "Smoothed probability function used for peak-picking"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-    vamp:computes_signal_type   af:OnsetDetectionFunction ;
-    .
-plugbase:qm-segmenter a   vamp:Plugin ;
-    dc:title              "Segmenter" ;
-    vamp:name             "Segmenter" ;
-    dc:description        """Divide the track into a sequence of consistent segments""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-segmenter> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Mark Levy.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-segmenter" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "2" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-segmenter_param_nSegmentTypes ;
-    vamp:parameter   plugbase:qm-segmenter_param_featureType ;
-    vamp:parameter   plugbase:qm-segmenter_param_neighbourhoodLimit ;
-
-    vamp:output      plugbase:qm-segmenter_output_segmentation ;
-    .
-plugbase:qm-segmenter_param_nSegmentTypes a  vamp:QuantizedParameter ;
-    vamp:identifier     "nSegmentTypes" ;
-    dc:title            "Number of segment-types" ;
-    dc:format           "" ;
-    vamp:min_value       2 ;
-    vamp:max_value       12 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   10 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-segmenter_param_featureType a  vamp:QuantizedParameter ;
-    vamp:identifier     "featureType" ;
-    dc:title            "Feature Type" ;
-    dc:format           "" ;
-    vamp:min_value       1 ;
-    vamp:max_value       3 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ( "Hybrid (Constant-Q)" "Chromatic (Chroma)" "Timbral (MFCC)");
-    .
-plugbase:qm-segmenter_param_neighbourhoodLimit a  vamp:QuantizedParameter ;
-    vamp:identifier     "neighbourhoodLimit" ;
-    dc:title            "Minimum segment duration" ;
-    dc:format           "s" ;
-    vamp:min_value       1 ;
-    vamp:max_value       15 ;
-    vamp:unit           "s" ;
-    vamp:quantize_step   0.2  ;
-    vamp:default_value   4 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-segmenter_output_segmentation a  vamp:SparseOutput ;
-    vamp:identifier       "segmentation" ;
-    dc:title              "Segmentation" ;
-    dc:description        "Segmentation"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "segment-type" ;
-    a                     vamp:QuantizedOutput ;
-    vamp:quantize_step    1  ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    1  ;
-    vamp:max_value    10  ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      5 ;
-    vamp:computes_event_type   af:StructuralSegment ;
-    .
-plugbase:qm-similarity a   vamp:Plugin ;
-    dc:title              "Similarity" ;
-    vamp:name             "Similarity" ;
-    dc:description        """Return a distance matrix for similarity between the input audio channels""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-similarity> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Mark Levy, Kurt Jacobson and Chris Cannam.  Copyright (c) 2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-similarity" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-similarity_param_featureType ;
-
-    vamp:output      plugbase:qm-similarity_output_distancematrix ;
-    vamp:output      plugbase:qm-similarity_output_distancevector ;
-    vamp:output      plugbase:qm-similarity_output_sorteddistancevector ;
-    vamp:output      plugbase:qm-similarity_output_means ;
-    vamp:output      plugbase:qm-similarity_output_variances ;
-    vamp:output      plugbase:qm-similarity_output_beatspectrum ;
-    .
-plugbase:qm-similarity_param_featureType a  vamp:QuantizedParameter ;
-    vamp:identifier     "featureType" ;
-    dc:title            "Feature Type" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       4 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ( "Timbre" "Timbre and Rhythm" "Chroma" "Chroma and Rhythm" "Rhythm only");
-    .
-plugbase:qm-similarity_output_distancematrix a  vamp:DenseOutput ;
-    vamp:identifier       "distancematrix" ;
-    dc:title              "Distance Matrix" ;
-    dc:description        "Distance matrix for similarity metric.  Smaller = more similar.  Should be symmetrical."  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-similarity_output_distancevector a  vamp:DenseOutput ;
-    vamp:identifier       "distancevector" ;
-    dc:title              "Distance from First Channel" ;
-    dc:description        "Distance vector for similarity of each channel to the first channel.  Smaller = more similar."  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-similarity_output_sorteddistancevector a  vamp:DenseOutput ;
-    vamp:identifier       "sorteddistancevector" ;
-    dc:title              "Ordered Distances from First Channel" ;
-    dc:description        "Vector of the order of other channels in similarity to the first, followed by distance vector for similarity of each to the first.  Smaller = more similar."  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-similarity_output_means a  vamp:DenseOutput ;
-    vamp:identifier       "means" ;
-    dc:title              "Feature Means" ;
-    dc:description        "Means of the feature bins.  Feature time (sec) corresponds to input channel.  Number of bins depends on selected feature type."  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        20 ;
-    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-similarity_output_variances a  vamp:DenseOutput ;
-    vamp:identifier       "variances" ;
-    dc:title              "Feature Variances" ;
-    dc:description        "Variances of the feature bins.  Feature time (sec) corresponds to input channel.  Number of bins depends on selected feature type."  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        20 ;
-    vamp:bin_names        ( "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "");
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-similarity_output_beatspectrum a  vamp:SparseOutput ;
-    vamp:identifier       "beatspectrum" ;
-    dc:title              "Beat Spectra" ;
-    dc:description        "Rhythmic self-similarity vectors (beat spectra) for the input channels.  Feature time (sec) corresponds to input channel.  Not returned if rhythm weighting is zero."  ;
-    vamp:fixed_bin_count  "false" ;
-    vamp:unit             "" ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      1 ;
-#   vamp:computes_event_type   <Place event type URI here and uncomment> ;
-#   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
-#   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
-    .
-plugbase:qm-tempotracker a   vamp:Plugin ;
-    dc:title              "Tempo and Beat Tracker" ;
-    vamp:name             "Tempo and Beat Tracker" ;
-    dc:description        """Estimate beat locations and tempo""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-tempotracker> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Christian Landone and Matthew Davies.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-tempotracker" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "4" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:qm-tempotracker_param_method ;
-    vamp:parameter   plugbase:qm-tempotracker_param_dftype ;
-    vamp:parameter   plugbase:qm-tempotracker_param_whiten ;
-
-    vamp:output      plugbase:qm-tempotracker_output_beats ;
-    vamp:output      plugbase:qm-tempotracker_output_detection_fn ;
-    vamp:output      plugbase:qm-tempotracker_output_tempo ;
-    .
-plugbase:qm-tempotracker_param_method a  vamp:QuantizedParameter ;
-    vamp:identifier     "method" ;
-    dc:title            "Beat Tracking Method" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   1 ;
-    vamp:value_names     ( "Old" "New");
-    .
-plugbase:qm-tempotracker_param_dftype a  vamp:QuantizedParameter ;
-    vamp:identifier     "dftype" ;
-    dc:title            "Onset Detection Function Type" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       4 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   3 ;
-    vamp:value_names     ( "High-Frequency Content" "Spectral Difference" "Phase Deviation" "Complex Domain" "Broadband Energy Rise");
-    .
-plugbase:qm-tempotracker_param_whiten a  vamp:QuantizedParameter ;
-    vamp:identifier     "whiten" ;
-    dc:title            "Adaptive Whitening" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-tempotracker_output_beats a  vamp:SparseOutput ;
-    vamp:identifier       "beats" ;
-    dc:title              "Beats" ;
-    dc:description        "Estimated metrical beat locations"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-    vamp:computes_event_type   af:Beat;
-    .
-plugbase:qm-tempotracker_output_detection_fn a  vamp:DenseOutput ;
-    vamp:identifier       "detection_fn" ;
-    dc:title              "Onset Detection Function" ;
-    dc:description        "Probability function of note onset likelihood"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:computes_signal_type   af:OnsetDetectionFunction;
-    .
-plugbase:qm-tempotracker_output_tempo a  vamp:SparseOutput ;
-    vamp:identifier       "tempo" ;
-    dc:title              "Tempo" ;
-    dc:description        "Locked tempo estimates"  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "bpm" ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      86.1326 ;
-    vamp:computes_event_type   af:Tempo ;
-    .
-plugbase:qm-tonalchange a   vamp:Plugin ;
-    dc:title              "Tonal Change" ;
-    vamp:name             "Tonal Change" ;
-    dc:description        """Detect and return the positions of harmonic changes such as chord boundaries""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-tonalchange> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Martin Gasser and Christopher Harte.  Copyright (c) 2006-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-tonalchange" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-
-    vamp:parameter   plugbase:qm-tonalchange_param_smoothingwidth ;
-    vamp:parameter   plugbase:qm-tonalchange_param_minpitch ;
-    vamp:parameter   plugbase:qm-tonalchange_param_maxpitch ;
-    vamp:parameter   plugbase:qm-tonalchange_param_tuning ;
-
-    vamp:output      plugbase:qm-tonalchange_output_tcstransform ;
-    vamp:output      plugbase:qm-tonalchange_output_tcfunction ;
-    vamp:output      plugbase:qm-tonalchange_output_changepositions ;
-    .
-plugbase:qm-tonalchange_param_smoothingwidth a  vamp:QuantizedParameter ;
-    vamp:identifier     "smoothingwidth" ;
-    dc:title            "Gaussian smoothing" ;
-    dc:format           "frames" ;
-    vamp:min_value       0 ;
-    vamp:max_value       20 ;
-    vamp:unit           "frames" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   5 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-tonalchange_param_minpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "minpitch" ;
-    dc:title            "Chromagram minimum pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   32 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-tonalchange_param_maxpitch a  vamp:QuantizedParameter ;
-    vamp:identifier     "maxpitch" ;
-    dc:title            "Chromagram maximum pitch" ;
-    dc:format           "MIDI units" ;
-    vamp:min_value       0 ;
-    vamp:max_value       127 ;
-    vamp:unit           "MIDI units" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   108 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-tonalchange_param_tuning a  vamp:Parameter ;
-    vamp:identifier     "tuning" ;
-    dc:title            "Chromagram tuning frequency" ;
-    dc:format           "Hz" ;
-    vamp:min_value       420 ;
-    vamp:max_value       460 ;
-    vamp:unit           "Hz"  ;
-    vamp:default_value   440 ;
-    vamp:value_names     ();
-    .
-plugbase:qm-tonalchange_output_tcstransform a  vamp:DenseOutput ;
-    vamp:identifier       "tcstransform" ;
-    dc:title              "Transform to 6D Tonal Content Space" ;
-    dc:description        ""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    -1  ;
-    vamp:max_value    1  ;
-    vamp:bin_count        6 ;
-    vamp:bin_names        ( "" "" "" "" "" "");
-    vamp:computes_signal_type  af:TonalContentSpace;
-    .
-plugbase:qm-tonalchange_output_tcfunction a  vamp:SparseOutput ;
-    vamp:identifier       "tcfunction" ;
-    dc:title              "Tonal Change Detection Function" ;
-    dc:description        ""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        1 ;
-    vamp:bin_names        ( "");
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      21.5332 ;
-    vamp:computes_signal_type  af:TonalChangeDetectionFunction;
-    .
-plugbase:qm-tonalchange_output_changepositions a  vamp:SparseOutput ;
-    vamp:identifier       "changepositions" ;
-    dc:title              "Tonal Change Positions" ;
-    dc:description        ""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:bin_names        ();
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      21.5332 ;
-    vamp:computes_event_type   af:TonalOnset;
-    .
-plugbase:qm-transcription a   vamp:Plugin ;
-    dc:title              "Polyphonic Transcription" ;
-    vamp:name             "Polyphonic Transcription" ;
-    dc:description        """Transcribe the input audio to estimated notes""" ;
-    foaf:page <http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html#qm-transcription> ;
-    foaf:maker            [ foaf:name "Queen Mary, University of London" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """Plugin by Dr. Ruohua Zhou.  Copyright (c) 2008-2009 QMUL - All Rights Reserved""" ;
-    vamp:identifier       "qm-transcription" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:TimeDomain ;
-    vamp:output      plugbase:qm-transcription_output_transcription ;
-    .
-plugbase:qm-transcription_output_transcription a  vamp:SparseOutput ;
-    vamp:identifier       "transcription" ;
-    dc:title              "Transcription" ;
-    dc:description        """Estimated note pitch (MIDI note number from 0 to 127)"""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "MIDI units" ;
-    a                     vamp:QuantizedOutput ;
-    vamp:quantize_step    1  ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    0  ;
-    vamp:max_value    127  ;
-    vamp:bin_count        1 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:computes_event_type   af:Note ;
-    .
-
-
Binary file audio_key_detection/qm-keydetector/qm-vamp-plugins.so has changed
--- a/vamp-plugins_abstract/qmvamp-mirex2019.tex	Tue Jul 30 15:45:53 2019 +0100
+++ b/vamp-plugins_abstract/qmvamp-mirex2019.tex	Wed Jul 31 10:54:05 2019 +0100
@@ -29,9 +29,9 @@
 extraction plugins in Vamp format.
 
 Most of these plugins were also submitted to the 2013, 2014, 2015,
-2016, 2017, and 2018 editions of MIREX. Mostq of the submitted plugins
-are unchanged since 2016 and may offer a useful baseline for
-comparison across years.
+2016, 2017, and 2018 editions of MIREX; most of them are also
+unchanged since 2016, and may offer a useful baseline for comparison
+across years.
 
 The methods implemented in this set of plugins are described in the
 literature and are referenced throughout this paper. All of the
@@ -136,7 +136,7 @@
 
 \subsection{Audio Key Detection}
 
-\subsubsection{QM Key Detector}
+\subsubsection{QM Key Detector v4}
 
 The QM Key Detector Vamp plugin continuously estimates the key of the
 music by comparing the degree to which a block-by-block chromagram
@@ -147,6 +147,27 @@
 analysis of Book I of the Well Tempered Klavier by J S Bach, recorded
 at A=440 equal temperament, as described in~\cite{noland2007signal}.
 
+The v4 version of the QM Key Detector plugin is identical to that
+submitted in 2018 and earlier years.
+
+The QM Key Detector plugin was written by Katy Noland and
+Christian Landone.
+
+\subsubsection{QM Key Detector v5}
+
+The QM Key Detector Vamp plugin continuously estimates the key of the
+music by comparing the degree to which a block-by-block chromagram
+correlates to stored key profiles for each major and minor key.
+
+This plugin uses the correlation method described in~\cite{krumhansl1990} and~\cite{gomez2006}, but using different tone
+profiles. The key profiles used in this implementation are drawn from
+analysis of Book I of the Well Tempered Klavier by J S Bach, recorded
+at A=440 equal temperament, as described in~\cite{noland2007signal}.
+
+The v5 version of the QM Key Detector plugin has some internal fixes
+to chromagram handling, thanks to Daniel Schürmann. It is expected to
+perform slightly better than the v4 submission.
+
 The QM Key Detector plugin was written by Katy Noland and
 Christian Landone.