Mercurial > hg > mirex2013
changeset 76:3b9882204565
Merge
author | Chris Cannam |
---|---|
date | Wed, 06 Jul 2016 18:37:19 +0100 |
parents | abad8a09a4d2 (current diff) 176a0f04a499 (diff) |
children | 96ae0dd9c50d |
files | |
diffstat | 19 files changed, 1694 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/audio_beat_tracking/beatroot-vamp/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_beat_tracking/beatroot-vamp/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # Audio Beat Tracking # BeatRoot Vamp plugin by Simon Dixon and Chris Cannam @@ -12,7 +12,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/audio_beat_tracking/qm-tempotracker/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_beat_tracking/qm-tempotracker/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # Audio Beat Tracking # Chris Cannam, c.cannam@qmul.ac.uk @@ -11,7 +11,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/audio_chord_estimation/chordino/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_chord_estimation/chordino/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # Audio Chord Estimation # Contact: Chris Cannam, c.cannam@qmul.ac.uk @@ -10,7 +10,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/audio_chord_estimation/chordino/chordino.sh Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_chord_estimation/chordino/chordino.sh Wed Jul 06 18:37:19 2016 +0100 @@ -27,7 +27,8 @@ # certainly be an N rather than a chord but this will surely be a # problem sometimes. What to do about it? -VAMP_PATH="$mydir" sonic-annotator \ +#VAMP_PATH="$mydir" +VAMP_PATH="/home/cannam/code/nnls-chroma" sonic-annotator \ -t "$mydir"/chordino.ttl \ -w csv --csv-stdout --csv-separator ";" \ "$infile" \
--- a/audio_chord_estimation/chordino/chordino.ttl Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_chord_estimation/chordino/chordino.ttl Wed Jul 06 18:37:19 2016 +0100 @@ -5,33 +5,10 @@ :transform a vamp:Transform ; vamp:plugin <http://vamp-plugins.org/rdf/plugins/nnls-chroma#chordino> ; vamp:step_size "2048"^^xsd:int ; - vamp:block_size "16384"^^xsd:int ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "boostn" ] ; - vamp:value "0.1"^^xsd:float ; - ] ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "rollon" ] ; - vamp:value "0"^^xsd:float ; - ] ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "spectralshape" ] ; - vamp:value "0"^^xsd:float ; - ] ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "tuningmode" ] ; - vamp:value "0"^^xsd:float ; - ] ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "useNNLS" ] ; - vamp:value "1"^^xsd:float ; - ] ; + vamp:block_size "16384"^^xsd:int ; + vamp:plugin_version "5"^^xsd:int ; vamp:parameter_binding [ vamp:parameter [ vamp:identifier "usehartesyntax" ] ; vamp:value "1"^^xsd:float ; ] ; - vamp:parameter_binding [ - vamp:parameter [ vamp:identifier "whitening" ] ; - vamp:value "1"^^xsd:float ; - ] ; vamp:output <http://vamp-plugins.org/rdf/plugins/nnls-chroma#chordino_output_simplechord> .
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_downbeat_estimation/qm-barbeattracker/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -0,0 +1,26 @@ +# +# MIREX 2016 submission +# +# Audio Downbeat Estimation +# Chris Cannam, c.cannam@qmul.ac.uk + + +# Architecture + +- Linux 64-bit + +# Dependencies + +- Sonic Annotator v1.0 or newer + 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-barbeattracker.sh input.wav output.txt +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_downbeat_estimation/qm-barbeattracker/qm-barbeattracker.sh Wed Jul 06 18:37:19 2016 +0100 @@ -0,0 +1,22 @@ +# runs sonic annotator using the specified transform file (-t) +# input file: $1 +# output file: $2 + +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 + +echo "Processing input WAV file $infile, writing results to $outfile..." 1>&2 + +VAMP_PATH="$mydir" sonic-annotator \ + -t "$mydir"/qm-barbeattracker.ttl \ + -w csv --csv-stdout --csv-separator ';' \ + "$infile" \ + | cut -d';' -f2 \ + > "$outfile" +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_downbeat_estimation/qm-barbeattracker/qm-barbeattracker.ttl Wed Jul 06 18:37:19 2016 +0100 @@ -0,0 +1,10 @@ +@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-barbeattracker> ; + vamp:step_size "512"^^xsd:int ; + vamp:block_size "1024"^^xsd:int ; + vamp:output <http://vamp-plugins.org/rdf/plugins/qm-vamp-plugins#qm-barbeattracker_output_bars> + .
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/audio_downbeat_estimation/qm-barbeattracker/qm-vamp-plugins.n3 Wed Jul 06 18:37:19 2016 +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 ; + . + +
--- a/audio_key_detection/qm-keydetector/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_key_detection/qm-keydetector/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # QM Key Detector # Plugin by Katy Noland and Christian Landone. @@ -12,7 +12,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/audio_onset_detection/onsetsds/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_onset_detection/onsetsds/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # Audio Onset Detection # Vamp plugin version of OnsetsDS by Dan Stowell @@ -12,7 +12,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/audio_onset_detection/qm-onsetdetector/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/audio_onset_detection/qm-onsetdetector/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ # -# MIREX 2015 submission +# MIREX 2016 submission # # Audio Onset Detection # Prepared by Chris Cannam, c.cannam@qmul.ac.uk @@ -11,7 +11,7 @@ # Dependencies -- Sonic Annotator v1.0 +- Sonic Annotator v1.0 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/multiple_f0_estimation/silvet-live/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/multiple_f0_estimation/silvet-live/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ -# MIREX 2015 submission +# MIREX 2016 submission # # Multiple Fundamental Frequency Estimation & Tracking # @@ -43,7 +43,7 @@ # Dependencies -- Sonic Annotator v1.1 +- Sonic Annotator v1.1 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/multiple_f0_estimation/silvet/README.txt Fri Jul 01 21:21:29 2016 +0100 +++ b/multiple_f0_estimation/silvet/README.txt Wed Jul 06 18:37:19 2016 +0100 @@ -1,5 +1,5 @@ -# MIREX 2015 submission +# MIREX 2016 submission # # Multiple Fundamental Frequency Estimation & Tracking # @@ -39,7 +39,7 @@ # Dependencies -- Sonic Annotator v1.1 +- Sonic Annotator v1.1 or newer http://code.soundsoftware.ac.uk/projects/sonic-annotator/files - GNU libc 2.15 or newer, GNU libstdc++ 3.4.15 or newer
--- a/vamp-plugins_abstract/Makefile Fri Jul 01 21:21:29 2016 +0100 +++ b/vamp-plugins_abstract/Makefile Wed Jul 06 18:37:19 2016 +0100 @@ -1,4 +1,4 @@ -all: qmvamp-mirex2013.pdf qmvamp-mirex2014.pdf qmvamp-mirex2015.pdf +all: qmvamp-mirex2013.pdf qmvamp-mirex2014.pdf qmvamp-mirex2015.pdf qmvamp-mirex2016.pdf qmvamp-mirex2013.pdf: qmvamp-mirex2013.tex qmvamp-mirex2013.bib ( echo q | xelatex qmvamp-mirex2013 ) && bibtex qmvamp-mirex2013 && xelatex qmvamp-mirex2013 && xelatex qmvamp-mirex2013 @@ -9,7 +9,11 @@ qmvamp-mirex2015.pdf: qmvamp-mirex2015.tex qmvamp-mirex2014.bib ( echo q | xelatex qmvamp-mirex2015 ) && bibtex qmvamp-mirex2015 && xelatex qmvamp-mirex2015 && xelatex qmvamp-mirex2015 +qmvamp-mirex2016.pdf: qmvamp-mirex2016.tex qmvamp-mirex2016.bib + ( echo q | xelatex qmvamp-mirex2016 ) && bibtex qmvamp-mirex2016 && xelatex qmvamp-mirex2016 && xelatex qmvamp-mirex2016 + clean: rm -f qmvamp-mirex2013.bbl qmvamp-mirex2013.aux qmvamp-mirex2013.blg qmvamp-mirex2013.log rm -f qmvamp-mirex2014.bbl qmvamp-mirex2014.aux qmvamp-mirex2014.blg qmvamp-mirex2014.log rm -f qmvamp-mirex2015.bbl qmvamp-mirex2015.aux qmvamp-mirex2015.blg qmvamp-mirex2015.log + rm -f qmvamp-mirex2016.bbl qmvamp-mirex2016.aux qmvamp-mirex2016.blg qmvamp-mirex2016.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vamp-plugins_abstract/qmvamp-mirex2016.bib Wed Jul 06 18:37:19 2016 +0100 @@ -0,0 +1,157 @@ + @article{matthew2007a, + author = {Matthew E. P. Davies and Mark D. Plumbley}, + title = {Context-Dependent Beat Tracking of Musical Audio}, + journal = {IEEE Transactions on Audio, Speech and Language Processing}, + number = {3}, + pages = {1009-1020}, + volume = {15}, + year = {2007} +} + +@article{ellis2007, + author = {D. P. W. Ellis}, + title = {Beat Tracking by Dynamic Programming}, + journal = {Journal of New Music Research}, + volume = {37}, + number = {1}, + pages = {51-60}, + year = {2007} +} + +@inproceedings{matthew2006, + author = {Matthew E. P. Davies and Mark D. Plumbley}, + title = {A spectral difference approach to extracting downbeats in musical audio}, + booktitle = {Proceedings of the 14th European Signal Processing Conference (EUSIPCO)}, + year = {2006} +} + +@inproceedings{dan2007a, + author = {Dan Stowell and Mark D. Plumbley}, + title = {Adaptive whitening for improved real-time audio onset detection}, + booktitle = {Proceedings of the International Computer Music Conference (ICMC'07)}, + year = {2007} +} + +@inproceedings{chris2003a, + author = {Chris Duxbury and Juan Pablo Bello and Mike Davies and Mark Sandler}, + title = {Complex Domain Onset Detection for Musical Signals}, + booktitle = {Proceedings of the 6th Int. Conference on Digital Audio Effects (DAFx-03) }, + year = {2003} +} + +@inproceedings{dan2005a, + author = {Dan Barry and Derry Fitzgerald and Eugene Coyle and Bob Lawlor}, + title = {Drum Source Separation using Percussive Feature Detection and Spectral Modulation}, + booktitle = {ISSC 2005}, + year = {2005} +} + + @article{mark2008a, + author = {Mark Levy and Mark Sandler}, + title = {Structural Segmentation of Musical Audio by Constrained Clustering}, + journal = {IEEE Transactions on Audio, Speech, and Language Processing}, + month = {February}, + number = {2}, + pages = {318-326}, + volume = {16}, + year = {2008} +} + +@conference{noland2007signal, + title={Signal Processing Parameters for Tonality Estimation}, + author={Noland, Katy and Sandler, Mark}, + booktitle={Audio Engineering Society Convention 122}, + month={May}, + year={2007} +} + + @inproceedings{sonicvisualise2010, + author = {Chris Cannam and Christian Landone and Mark Sandler}, + title = {Sonic Visualiser: An Open Source Application for Viewing, Analysing, and Annotating Music Audio Files}, + booktitle = {Proceedings of the ACM Multimedia 2010 International Conference}, + year = {2010} +} + +@BOOK{krumhansl1990, + AUTHOR = {C. L. Krumhansl}, + TITLE = {Cognitive Foundations of Musical Pitch}, + PUBLISHER = {Oxford University Press}, + YEAR = {1990} +} + +@article {gomez2006, + title = {Tonal description of polyphonic audio for music content processing}, + journal = {{INFORMS} Journal on Computing, Special Cluster on Computation in Music}, + volume = {18}, + year = {2006}, + author = {Emilia G{\'o}mez} +} + +@incollection{mauch:md1:2010, + Author = {Matthias Mauch and Simon Dixon}, + Title = {{MIREX} 2010: Chord Detection Using a Dynamic Bayesian Network}, + booktitle = {Music Information Retrieval Evaluation Exchange (MIREX)}, + Year = {2010} +} + + @inproceedings{matthias2010a, + author = {Matthias Mauch and Simon Dixon}, + title = {Approximate Note Transcription for the Improved Identification of Difficult Chords}, + booktitle = {Proceedings of the 11th International Society for Music Information Retrieval Conference (ISMIR 2010)}, + year = {2010} +} + + @inproceedings{matthias2009a, + author = {Matthias Mauch and Katy C. Noland and Dixon, Simon}, + title = {Using Musical Structure to Enhance Automatic Chord Transcription}, + booktitle = {Proceedings of the 10th International Conference on Music Information Retrieval (ISMIR 2009)}, + pages = {231-236}, + year = {2009} +} + + @phdthesis{matthiasphd, + author = {Matthias Mauch}, + title = {Automatic Chord Transcription from Audio Using Computational Models of Musical Context}, + school = {Queen Mary, University of London}, + year = {2010} +} + +@misc{chris2012a, + author = {Chris Cannam}, + title = {Unit testing: An audio research example}, + howpublished = {Handout}, + note = {One of the single-page handouts made available at DAFx and ISMIR 2012 tutorials. See http://www.soundsoftware.ac.uk/handouts-guides for more information.}, + year = {2012} +} + + @inproceedings{simon2006a, + author = {Simon Dixon}, + title = {{MIREX} 2006 Audio Beat Tracking Evaluation: BeatRoot}, + booktitle = {Music Information Retrieval Evaluation Exchange (MIREX)}, + year = {2006} +} + + @inproceedings{simon2001a, + author = {Simon Dixon}, + title = {An Interactive Beat Tracking and Visualisation System}, + booktitle = {Proceedings of the 2001 International Computer Music Conference (ICMC'2001)}, + year = {2001} +} + + @article{emmanouil2012a, + author = {Emmanouil Benetos and Dixon, Simon}, + title = {A Shift-Invariant Latent Variable Model for Automatic Music Transcription}, + journal = {Computer Music Journal}, + number = {4}, + pages = {81-94}, + volume = {36}, + year = {2012} +} + + @inproceedings{emmanouil2012b, + author = {Emmanouil Benetos and Simon Dixon}, + title = {Multiple-{F0} Estimation and Note Tracking for {MIREX} 2012 using a Shift-Invariant Latent Variable Model}, + booktitle = {Music Information Retrieval Evaluation Exchange (MIREX)}, + year = {2012} +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vamp-plugins_abstract/qmvamp-mirex2016.tex Wed Jul 06 18:37:19 2016 +0100 @@ -0,0 +1,366 @@ +% ----------------------------------------------- +% Template for MIREX 2010 +% (based on ISMIR 2010 template) +% ----------------------------------------------- + +\documentclass{article} +\usepackage{mirex2010,amsmath,cite} +\usepackage{graphicx} + +% Title. +% ------ +\title{MIREX 2016:\\Vamp Plugins from the Centre for Digital Music} + +% Single address +% To use with only one author or several with the same address +% --------------- +\oneauthor +{Chris Cannam, Emmanouil Benetos, Matthias Mauch, Matthew E. P. Davies,} +{Simon Dixon, Christian Landone, Katy Noland, and Dan Stowell} +{Queen Mary, University of London \\ {\em chris.cannam@eecs.qmul.ac.uk}} + +\begin{document} +% +\maketitle +% +\begin{abstract} + +In this submission we offer for evaluation several audio feature +extraction plugins in Vamp format. + +Most of these plugins were also submitted to the 2013, 2014, and 2015 +editions of MIREX. The majority are unchanged here and may offer a +useful baseline for comparison across years. One category (Audio +Downbeat Estimation) sees a new submission, although it is not a new +plugin. One plugin (Chordino) has been corrected after the +side-effects of an earlier bug fix made it perform unexpectedly badly +last year. The rest are unchanged from 2015. + +Some of these plugins represent efficient implementations based on +modern work, while others are no longer state-of-the-art and were +developed a few years ago. The methods implemented in this set of +plugins are described in the literature and are referenced throughout +this paper. All of the plugins are written in C++ and have been +published under open source licences, in most cases the GPL. + +\end{abstract} +% +\section{Introduction}\label{sec:introduction} + +The Vamp plugin format\footnote{http://vamp-plugins.org/} was +developed at the Centre for Digital Music (C4DM) at Queen Mary, +University of London, during 2005-2006 in response to a desire to +publish work in a form that would be immediately useful to people +outside this research field. The Vamp plugin format was published with +an open source SDK, alongside the Sonic +Visualiser~\cite{sonicvisualise2010} audio analysis application which +provided a useful host for Vamp plugins. + +In subsequent years the Vamp format has become a moderately popular +means of distributing methods from the Centre and other research +groups. Some dozens of Vamp plugins are now available from groups such +as the Music Technology Group at UPF in Barcelona, the Sound and Music +Computing group at INESC in Porto, the BBC, and others, as well as +from the Centre for Digital Music. + +The plugins submitted for this evaluation are provided as a set of +dynamic library files. Those with names starting ``QM'' are all +provided in a single library file, the QM Vamp Plugins set, made +available in binary form for Windows, OS/X, and Linux from the Centre +for Digital Music's download +page.\footnote{http://vamp-plugins.org/plugin-doc/qm-vamp-plugins.html} These +plugins come from a number of authors who are credited in this +abstract and in the plugins' accompanying documentation. + +In addition to the QM Vamp Plugins set, this submission contains a +number of separate plugins: the Chordino and Segmentino plugins from +Matthias Mauch; the BeatRoot Vamp Plugin from Simon Dixon; OnsetsDS +from Dan Stowell; and the Silvet note transcription plugin from +Emmanouil Benetos and Chris Cannam. + +The plugins are all provided as 64-bit Linux shared objects depending +on GNU libc 2.15 or newer and GNU libstdc++ 3.4.15 or newer. Sonic +Annotator v1.1 is also +required\footnote{http://code.soundsoftware.ac.uk/projects/sonic-annotator/} +in order to run the task scripts. + +For an overview of this submission across all of the tasks and plugins +it covers, please see the relevant repository at the SoundSoftware +site.\footnote{http://code.soundsoftware.ac.uk/projects/mirex2013/} + +\section{Submissions by MIREX Task} + +\subsection{Audio Beat Tracking} + +\subsubsection{QM Tempo and Beat Tracker} +\label{tempo_and_beat_tracker} + +The QM Tempo and Beat Tracker\cite{matthew2007a} Vamp plugin analyses +a single channel of audio and estimates the positions of metrical +beats within the music. + +This plugin uses the complex-domain onset detection method from~\cite{chris2003a} with a hybrid of the two-state beat tracking model +proposed in~\cite{matthew2007a} and a dynamic programming method based +on~\cite{ellis2007}. + +To identify the tempo, the onset detection function is partitioned +into 6-second frames with a 1.5-second increment. The autocorrelation +function of each 6-second onset detection function is found and this +is then passed through a perceptually weighted comb +filterbank\cite{matthew2007a}. The successive comb filterbank output +signals are grouped together into a matrix of observations of +periodicity through time. The best path of periodicity through these +observations is found using the Viterbi algorithm, where the +transition matrix is defined as a diagonal Gaussian. + +Given the estimates of periodicity, the beat locations are recovered +by applying the dynamic programming algorithm\cite{ellis2007}. This +process involves the calculation of a recursive cumulative score +function and backtrace signal. The cumulative score indicates the +likelihood of a beat existing at each sample of the onset detection +function input, and the backtrace gives the location of the best +previous beat given this point in time. Once the cumulative score and +backtrace have been calculated for the whole input signal, the best +path through beat locations is found by recursively sampling the +backtrace signal from the end of the input signal back to the +beginning. + +The QM Tempo and Beat Tracker plugin was written by Matthew +Davies and Christian Landone. + +\subsubsection{BeatRoot} + +The BeatRoot Vamp plugin\footnote{http://code.soundsoftware.ac.uk/projects/beatroot-vamp/} is an open source Vamp plugin library that +implements the BeatRoot beat-tracking method of Simon +Dixon\cite{simon2001a}. The BeatRoot algorithm has been submitted to +MIREX evaluation in earlier years\cite{simon2006a}; this plugin +consists of the most recent BeatRoot code release, converted from Java +to C++ and modified for plugin format. + +The BeatRoot plugin was written by Simon Dixon and Chris Cannam. + +\subsection{Audio Key Detection} + +\subsubsection{QM Key Detector} + +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 QM Key Detector plugin was written by Katy Noland and +Christian Landone. + +\subsection{Audio Chord Estimation} + +\subsubsection{Chordino} + +The Chordino plugin\footnote{http://isophonics.net/nnls-chroma} was developed following Mauch's 2010 work on chord +extraction, submitted to MIREX in that +year\cite{mauch:md1:2010}. While that submission used a C++ chroma +implementation with a MATLAB dynamic Bayesian network as a chord +extraction front-end\cite{matthias2010a}, Chordino is an entirely C++ +implementation that was developed specifically to be made freely +available as an open-source plugin for general use. + +The method for the Chordino plugin has two parts: + +{\bf NNLS Chroma} --- NNLS Chroma analyses a single channel of audio +using frame-wise spectral input from the Vamp host. The spectrum is +transformed to a log-frequency spectrum (constant-Q) with three bins +per semitone. On this representation, two processing steps are +performed: tuning, after which each centre bin (i.e. bin 2, 5, 8, …) +corresponds to a semitone, even if the tuning of the piece deviates +from 440 Hz standard pitch; and running standardisation: subtraction +of the running mean, division by the running standard deviation. This +has a spectral whitening effect. + +The processed log-frequency spectrum is then used as an input for NNLS +approximate transcription using a dictionary of harmonic notes with +geometrically decaying harmonics magnitudes. The output of the NNLS +approximate transcription is semitone-spaced. To get the chroma, this +semitone spectrum is multiplied (element-wise) with the desired +profile (chroma or bass chroma) and then mapped to 12 bins. + +{\bf Chord transcription} --- A fixed dictionary of chord profiles is +used to calculate frame-wise chord similarities. A standard +HMM/Viterbi approach is used to smooth these to provide a chord +transcription. + +Chordino was written by Matthias Mauch. + +\subsection{Audio Onset Detection} + +\subsubsection{QM Note Onset Detector} + +The QM Note Onset Detector Vamp plugin estimates the onset times of +notes within the music. It calculates an onset likelihood function for +each spectral frame, and picks peaks in a smoothed version of this +function. + +Several onset detection functions are available in this plugin; this +submission uses the complex-domain method described +in~\cite{chris2003a}. + +The QM Note Onset Detector plugin was written by Chris Duxbury, Juan +Pablo Bello and Christian Landone. + +\subsubsection{OnsetsDS} + +OnsetsDS\footnote{http://code.soundsoftware.ac.uk/projects/vamp-onsetsds-plugin/} is an onset detector plugin wrapping Dan Stowell's OnsetsDS +library\footnote{http://onsetsds.sourceforge.net/}, described +in~\cite{dan2007a}. + +OnsetsDS was designed to provide an FFT-based onset detection that +works very efficiently in real-time, with a fast reaction time. It is +not tailored for non-real-time use or for any particular type of +signal. + +The OnsetsDS plugin was written by Dan Stowell and Chris Cannam. + +\subsection{Multiple Fundamental Frequency Estimation and Tracking} + +\subsubsection{Silvet} + +Silvet (for Shift-Invariant Latent Variable +Transcription)\footnote{http://code.soundsoftware.ac.uk/projects/silvet/} +is a Vamp plugin for automatic music transcription, using a method +based on that of~\cite{emmanouil2012a}. It produces a note +transcription as output, and we have included a script to transform +this into a framewise output as well, in order to make it available +for framewise evaluation as well as note-tracking evaluation. + +Silvet uses a probablistic latent-variable estimation method to +decompose a Constant-Q time-frequency matrix into note activations +using a set of spectral templates learned from recordings of solo +instruments. The method is thought to perform quite well for clear +recordings that contain only instruments with a good correspondence to +the known templates. Silvet does not contain any vocal templates, or +templates for typical rock or electronic instruments. + +The method implemented in Silvet is very similar to that submitted to +MIREX in 2012 as the BD1, BD2 and BD3 submissions in the Multiple F0 +Tracking task of that year~\cite{emmanouil2012b}. In common with that +submission, and unlike the paper cited at~\cite{emmanouil2012a}, +Silvet uses a simple thresholding method instead of an HMM for note +identification. However, Silvet follows~\cite{emmanouil2012a} +rather than~\cite{emmanouil2012b} in including a 5-bin-per-semitone +pitch shifting parameter. + +The Silvet plugin was written by Chris Cannam and Emmanouil Benetos. + +\subsubsection{Silvet Live} + +The Silvet Live submission uses the Silvet plugin in its ``Live'' +mode. This has somewhat lower latency than the default mode, and is +much faster to run. This is mainly a result of using a reduced 12-bin +chromagram and corresponding instrument templates, making this +conceptually a very simple method. Results are expected to be +substantially poorer than those for the default Silvet parameters. + +The Silvet plugin was written by Chris Cannam and Emmanouil Benetos. + +\subsection{Structural Segmentation} + +\subsubsection{QM Segmenter} + +The QM Segmenter Vamp plugin divides a single channel of music up into +structurally consistent segments. + +The method, described in~\cite{mark2008a}, relies upon timbral or +pitch similarity to obtain the high-level song structure. This is +based on the assumption that the distributions of timbre features are +similar over corresponding structural elements of the music. + +The input feature is a frequency-domain representation of the audio +signal, in this case using a Constant-Q transform for the underlying +features (though the plugin supports other timbral and pitch +features). The extracted features are normalised in accordance with +the MPEG-7 standard (NASE descriptor), and the value of this envelope +is stored for each processing block of audio. This is followed by the +extraction of 20 principal components per block using PCA, yielding a +sequence of 21 dimensional feature vectors where the last element in +each vector corresponds to the energy envelope. + +A 40-state Hidden Markov Model is then trained on the whole sequence +of features, with each state corresponding to a specific timbre +type. This partitions the timbre-space of a given track into 40 +possible types. After training and decoding the HMM, the song is +assigned a sequence of timbre-features according to specific +timbre-type distributions for each possible structural segment. + +The segmentation itself is computed by clustering timbre-type +histograms. A series of histograms are created over a sliding window +which are grouped into M clusters by an adapted soft k-means +algorithm. Reference histograms, iteratively updated during +clustering, describe the timbre distribution for each segment. The +segmentation arises from the final cluster assignments. + +The QM Segmenter plugin was written by Mark Levy. + +\subsubsection{Segmentino} + +The Segmentino plugin is a C++ implementation of a segmentation method +described in Matthias Mauch's paper on using musical structure to +enhance chord transcription\cite{matthias2009a} and expanded on in +Mauch's PhD thesis\cite{matthiasphd}. + +A beat-quantised chroma representation is used to calculate pair-wise +similarities between beats (really: beat ``shingles'', i.e.\ multi-beat +vectors). Based on this first similarity calculation, an exhaustive +comparison of all possible segments of reasonable length in beats is +executed, and segments are added to form segment families if they are +sufficiently similar to another ``family member''. Having accumulated a +lot of families, the families are rated, and the one with the highest +score is used as the first segmentation group that gets +annotated. This last step is repeated until no more families fit the +remaining ``holes'' in the song that haven't already been assigned to a +segment. + +This method was developed for ``classic rock'' music, and therefore +assumes a few characteristics that are not necessarily found in other +music: repetition of harmonic sequences in the music that coincide +with structural segments in a song; a steady beat; segments of a +certain length; corresponding segments have the same length in +beats. + +Segmentino plugin was written by Matthias Mauch and Massimiliano +Zanoni. + +\subsection{Audio Tempo Estimation} + +\subsubsection{QM Tempo and Beat Tracker} + +For this task we submit the same plugin as that used in the Audio Beat +Tracking task in section~\ref{tempo_and_beat_tracker}. + +\subsection{Audio Downbeat Estimation} + +\subsubsection{QM Bar and Beat Tracker} + +The QM Bar and Beat Tracker\cite{matthew2006} Vamp plugin estimates +the positions of bar lines and metrical beat positions. + +The plugin first uses the method of the QM Tempo and Beat Tracker (see +section~\ref{tempo_and_beat_tracker}) to estimate beat locations. Once +these have been identified, the plugin makes a second pass over the +input audio signal, partitioning it into beat synchronous frames. The +audio within each beat frame is down-sampled to give a new sampling +frequency of 2.8kHz. A beat-synchronous spectral representation is +then calculated within each frame, from which a measure of beat +spectral difference is calculated using Jensen-Shannon divergence. The +bar boundaries are identified as those beat transitions leading to +most consistent spectral change given the specified number of beats +per bar. + +The plugin expects the number of beats per bar as a parameter rather +than attempt to estimate this from the music. For the purposes of this +submission the number of beats per bar is fixed to 4. + +\bibliography{qmvamp-mirex2016} + +\end{document}