changeset 58:01bc078f5f61 matthiasm-plugin

updated plugin and some parameter and output descriptions. adjusted the n3 file (only skeleton so far).
author matthiasm
date Mon, 25 Oct 2010 22:57:47 +0900
parents 58a390dfba70
children 1ccb883b585f
files Chordino.cpp NNLSBase.cpp NNLSChroma.cpp README Tuning.cpp nnls-chroma.n3
diffstat 6 files changed, 197 insertions(+), 186 deletions(-) [+]
line wrap: on
line diff
--- a/Chordino.cpp	Mon Oct 25 21:52:11 2010 +0900
+++ b/Chordino.cpp	Mon Oct 25 22:57:47 2010 +0900
@@ -60,7 +60,7 @@
 Chordino::getDescription() const
 {
     if (debug_on) cerr << "--> getDescription" << endl;
-    return "This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.";
+    return "Chordino provides a simple chord transcription based on NNLS Chroma (as in the NNLS Chroma plugin). Chord profiles given by the user in the file chord.dict are used to calculate frame-wise chord similarities. Two simple (non-state-of-the-art!) algorithms are available that smooth these to provide a chord transcription: a simple chord change method, and a standard HMM/Viterbi approach.";
 }
 
 Chordino::ParameterList
@@ -96,7 +96,7 @@
     ParameterDescriptor d0;
     d0.identifier = "rollon";
     d0.name = "spectral roll-on";
-    d0.description = "The bins below the spectral roll-on quantile will be set to 0.";
+    d0.description = "Consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.";
     d0.unit = "";
     d0.minValue = 0;
     d0.maxValue = 0.05;
@@ -172,7 +172,7 @@
     OutputDescriptor d7;
     d7.identifier = "simplechord";
     d7.name = "Chord Estimate";
-    d7.description = "A simple chord estimate based on the inner product of chord templates with the smoothed chroma.";
+    d7.description = "Estimated chord times and labels. Two simple (non-state-of-the-art!) algorithms are available that smooth these to provide a chord transcription: a simple chord change method, and a standard HMM/Viterbi approach.";
     d7.unit = "";
     d7.hasFixedBinCount = true;
     d7.binCount = 0;
@@ -185,9 +185,9 @@
     m_outputChords = index++;
     
     OutputDescriptor d8;
-    d8.identifier = "harmonicchange";
+    d8.identifier = "";
     d8.name = "Harmonic Change Value";
-    d8.description = "Harmonic change.";
+    d8.description = "An indication of the likelihood of harmonic change. Depends on the chord dictionary. Calculation is different depending on whether the Viterbi algorithm is used for chord estimation, or the simple chord estimate.";
     d8.unit = "";
     d8.hasFixedBinCount = true;
     d8.binCount = 1;
--- a/NNLSBase.cpp	Mon Oct 25 21:52:11 2010 +0900
+++ b/NNLSBase.cpp	Mon Oct 25 22:57:47 2010 +0900
@@ -162,7 +162,7 @@
     ParameterDescriptor d0;
     d0.identifier = "rollon";
     d0.name = "spectral roll-on";
-    d0.description = "The bins below the spectral roll-on quantile will be set to 0.";
+    d0.description = "Consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.";
     d0.unit = "";
     d0.minValue = 0;
     d0.maxValue = 0.05;
--- a/NNLSChroma.cpp	Mon Oct 25 21:52:11 2010 +0900
+++ b/NNLSChroma.cpp	Mon Oct 25 22:57:47 2010 +0900
@@ -59,7 +59,7 @@
 NNLSChroma::getDescription() const
 {
     if (debug_on) cerr << "--> getDescription" << endl;
-    return "This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.";
+    return "This plugin provides a number of features derived from a DFT-based log-frequency amplitude spectrum: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; and based on this semitone spectrum, different chroma features.";
 }
 
 NNLSChroma::OutputList
@@ -128,7 +128,7 @@
     OutputDescriptor d4;
     d4.identifier = "chroma";
     d4.name = "Chromagram";
-    d4.description = "Tuning-adjusted chromagram from NNLS soft transcription, with an emphasis on the medium note range.";
+    d4.description = "Tuning-adjusted chromagram from NNLS approximate transcription, with an emphasis on the medium note range.";
     d4.unit = "";
     d4.hasFixedBinCount = true;
     d4.binCount = 12;
@@ -144,7 +144,7 @@
     OutputDescriptor d5;
     d5.identifier = "basschroma";
     d5.name = "Bass Chromagram";
-    d5.description = "Tuning-adjusted bass chromagram from NNLS soft transcription, with an emphasis on the bass note range.";
+    d5.description = "Tuning-adjusted bass chromagram from NNLS approximate transcription, with an emphasis on the bass note range.";
     d5.unit = "";
     d5.hasFixedBinCount = true;
     d5.binCount = 12;
@@ -160,7 +160,7 @@
     OutputDescriptor d6;
     d6.identifier = "bothchroma";
     d6.name = "Chromagram and Bass Chromagram";
-    d6.description = "Tuning-adjusted chromagram and bass chromagram (stacked on top of each other) from NNLS soft transcription.";
+    d6.description = "Tuning-adjusted chromagram and bass chromagram (stacked on top of each other) from NNLS approximate transcription.";
     d6.unit = "";
     d6.hasFixedBinCount = true;
     d6.binCount = 24;
--- a/README	Mon Oct 25 21:52:11 2010 +0900
+++ b/README	Mon Oct 25 22:57:47 2010 +0900
@@ -16,8 +16,8 @@
 The default settings (in brackets, below) are those used for Matthias Mauch's 2010 MIREX submissions.
 
 * use approximate transcription (NNLS) (on or off; default: on): toggle between NNLS approximate transcription and linear spectral mapping.
-* spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
-* tuning mode (global or local; default: global): local uses a local average for tuning, global uses ... exactly.
+* spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
+* tuning mode (global or local; default: global): local uses a local average for tuning, global uses all audio frames. Local tuning is only advisable when the tuning is likely to change over the audio, for example in podcasts, or in a cappella singing.
 * spectral whitening (0.0 -- 1.0; default: 1.0): determines how much the log-frequency spectrum is whitened. A value of 0.0 means no whitening. For values other than 0.0 the log-freq spectral bins are divided by  [standard deviation of their neighbours]^[spectral whitening], where "^" means "to the power of".
 * spectral shape (0.5 -- 0.9; default: 0.7): the shape of the notes in the NNLS dictionary. Their harmonic amplitude follows a geometrically decreasing pattern, in which the i-th harmonic has an amplitude of [spectral shape]^[i-1], where "^" means "to the power of".
 * chroma normalisation (none, maximum norm, L1 norm, L2 norm; default: none): determines whether or how the chromagrams are normalised. If the setting is not 'none', then each chroma frame separately is divided by the chosen vector norm. Note that normalisation implies that the joint 24-dim. "Chroma and Bass Chromagram" output will be different from the individual 12-dim. "Chromagram" and "Bass Chromagram" outputs.
@@ -46,8 +46,8 @@
 
 * use approximate transcription (NNLS) (on or off; default: on): toggle between NNLS approximate transcription and linear spectral mapping.
 * HMM (Viterbi decoding) (on or off; default: on): uses HMM/Viterbi smoothing. Otherwise: heuristic chord change smoothing.
-* spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
-* tuning mode (global or local; default: global): local uses a local average for tuning, global uses ... exactly.
+* * spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
+* tuning mode (global or local; default: global): local uses a local average for tuning. Local tuning is only advisable when the tuning is likely to change over the audio, for example in podcasts, or in a cappella singing.
 * spectral whitening (0.0 -- 1.0; default: 1.0): determines how much the log-frequency spectrum is whitened. A value of 0.0 means no whitening. For values other than 0.0 the log-freq spectral bins are divided by  [standard deviation of their neighbours]^[spectral whitening], where "^" means "to the power of".
 * spectral shape (0.5 -- 0.9; default: 0.7): the shape of the notes in the NNLS dictionary. Their harmonic amplitude follows a geometrically decreasing pattern, in which the i-th harmonic has an amplitude of [spectral shape]^[i-1], where "^" means "to the power of".
 * chroma normalisation (none, maximum norm, L1 norm, L2 norm; default: none): determines whether or how the chromagrams are normalised. If the setting is not 'none', then each chroma frame separately is divided by the chosen vector norm. Note that normalisation implies that the joint 24-dim. "Chroma and Bass Chromagram" output will be different from the individual 12-dim. "Chromagram" and "Bass Chromagram" outputs.
@@ -55,7 +55,7 @@
 ### Outputs ###
 
 * Chord Estimate: estimated chord times and labels.
-* Harmonic Change Value: an indication of the likelihood harmonic change. Depends on the chord dictionary. Calculation is different depending on whether the Viterbi algorithm is used for chord estimation, or the simple chord estimate.
+* Harmonic Change Value: an indication of the likelihood of harmonic change. Depends on the chord dictionary. Calculation is different depending on whether the Viterbi algorithm is used for chord estimation, or the simple chord estimate.
 
 ## Tuning ##
 
@@ -68,12 +68,12 @@
 
 ### Parameter ###
 
-* spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
+* spectral roll on (0.00 -- 0.05; default: 0.0): consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.
 
 ### Outputs ###
 
-* Tuning: returns a single label at time 0 seconds containing the tuning information in Hz.
-* Local Tuning: returns a tuning estimate at every analysis frame, an average of the (recent) previous frame-wise tuning estimates.
+* Tuning: returns a single label (at time 0 seconds) containing an estimate of the concert pitch in Hz.
+* Local Tuning: returns a tuning estimate at every analysis frame, an average of the (recent) previous frame-wise estimates of the concert pitch in Hz.
 
 ## References and Credits ##
 
--- a/Tuning.cpp	Mon Oct 25 21:52:11 2010 +0900
+++ b/Tuning.cpp	Mon Oct 25 22:57:47 2010 +0900
@@ -67,7 +67,7 @@
 {
     // Return something helpful here!
     if (debug_on) cerr << "--> getDescription" << endl;
-    return "This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.";
+    return "The tuning plugin can estimate the local and global tuning of piece. The same tuning method is used for the NNLS Chroma and Chordino plugins.";
 }
 
 Tuning::ParameterList
@@ -79,7 +79,7 @@
     ParameterDescriptor d0;
     d0.identifier = "rollon";
     d0.name = "spectral roll-on";
-    d0.description = "The bins below the spectral roll-on quantile will be set to 0.";
+    d0.description = "Consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [spectral roll on] x [total energy] will be set to 0. A value of 0 means that no bins will be changed.";
     d0.unit = "";
     d0.minValue = 0;
     d0.maxValue = 0.05;
@@ -103,7 +103,7 @@
     OutputDescriptor d0;
     d0.identifier = "tuning";
     d0.name = "Tuning";
-    d0.description = "The concert pitch.";
+    d0.description = "Returns a single label (at time 0 seconds) containing an estimate of the concert pitch in Hz.";
     d0.unit = "Hz";
     d0.hasFixedBinCount = true;
     d0.binCount = 0;
@@ -119,7 +119,7 @@
     OutputDescriptor d10;
     d10.identifier = "localtuning";
     d10.name = "Local Tuning";
-    d10.description = "Tuning based on the history up to this timestamp.";
+    d10.description = "Returns a tuning estimate at every analysis frame, an average of the (recent) previous frame-wise estimates of the concert pitch in Hz.";
     d10.unit = "Hz";
     d10.hasFixedBinCount = true;
     d10.binCount = 1;
--- a/nnls-chroma.n3	Mon Oct 25 21:52:11 2010 +0900
+++ b/nnls-chroma.n3	Mon Oct 25 22:57:47 2010 +0900
@@ -16,7 +16,7 @@
 :nnls-chroma a  vamp:PluginLibrary ;
     vamp:identifier "nnls-chroma"  ; 
     vamp:available_plugin plugbase:chordino ; 
-    vamp:available_plugin plugbase:nnls_chroma ; 
+    vamp:available_plugin plugbase:nnls-chroma ; 
     vamp:available_plugin plugbase:tuning ; 
 #   foaf:page <Place more-information HTML page URL here and uncomment> ;
     .
@@ -24,7 +24,7 @@
 plugbase:chordino a   vamp:Plugin ;
     dc:title              "Chordino" ;
     vamp:name             "Chordino" ;
-    dc:description        """This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.""" ;
+    dc:description        """Chordino provides a simple chord transcription based on NNLS Chroma (as in the NNLS Chroma plugin). Chord profiles given by the user in the file chord.dict are used to calculate frame-wise chord similarities. Two simple (non-state-of-the-art!) algorithms are available that smooth these to provide a chord transcription: a simple chord change method, and a standard HMM/Viterbi approach.""" ;
     foaf:maker            [ foaf:name "Matthias Mauch" ] ; # FIXME could give plugin author's URI here
     dc:rights             """GPL""" ;
 #   cc:license            <Place plugin license URI here and uncomment> ; 
@@ -34,32 +34,46 @@
     vamp:input_domain     vamp:FrequencyDomain ;
 
 
-    vamp:parameter   plugbase:chordino_param_preset ;
+    vamp:parameter   plugbase:chordino_param_useNNLS ;
+    vamp:parameter   plugbase:chordino_param_useHMM ;
     vamp:parameter   plugbase:chordino_param_rollon ;
     vamp:parameter   plugbase:chordino_param_tuningmode ;
-    vamp:parameter   plugbase:chordino_param_chromanormalize ;
+    vamp:parameter   plugbase:chordino_param_whitening ;
+    vamp:parameter   plugbase:chordino_param_s ;
 
     vamp:output      plugbase:chordino_output_simplechord ;
-    vamp:output      plugbase:chordino_output_harmonicchange ;
+    vamp:output      plugbase:chordino_output_ ;
     .
-plugbase:chordino_param_preset a  vamp:QuantizedParameter ;
-    vamp:identifier     "preset" ;
-    dc:title            "preset" ;
+plugbase:chordino_param_useNNLS a  vamp:QuantizedParameter ;
+    vamp:identifier     "useNNLS" ;
+    dc:title            "use approximate transcription (NNLS)" ;
     dc:format           "" ;
     vamp:min_value       0 ;
-    vamp:max_value       3 ;
+    vamp:max_value       1 ;
     vamp:unit           "" ;
     vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "polyphonic pop" "polyphonic pop (fast)" "solo keyboard" "manual");
+    vamp:default_value   1 ;
+    vamp:value_names     ();
     .
-plugbase:chordino_param_rollon a  vamp:Parameter ;
+plugbase:chordino_param_useHMM a  vamp:QuantizedParameter ;
+    vamp:identifier     "useHMM" ;
+    dc:title            "HMM (Viterbi decoding)" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:chordino_param_rollon a  vamp:QuantizedParameter ;
     vamp:identifier     "rollon" ;
     dc:title            "spectral roll-on" ;
     dc:format           "" ;
     vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           ""  ;
+    vamp:max_value       0.05 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   0.005  ;
     vamp:default_value   0 ;
     vamp:value_names     ();
     .
@@ -74,7 +88,134 @@
     vamp:default_value   0 ;
     vamp:value_names     ( "global tuning" "local tuning");
     .
-plugbase:chordino_param_chromanormalize a  vamp:QuantizedParameter ;
+plugbase:chordino_param_whitening a  vamp:Parameter ;
+    vamp:identifier     "whitening" ;
+    dc:title            "spectral whitening" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           ""  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:chordino_param_s a  vamp:Parameter ;
+    vamp:identifier     "s" ;
+    dc:title            "spectral shape" ;
+    dc:format           "" ;
+    vamp:min_value       0.5 ;
+    vamp:max_value       0.9 ;
+    vamp:unit           ""  ;
+    vamp:default_value   0.7 ;
+    vamp:value_names     ();
+    .
+plugbase:chordino_output_simplechord a  vamp:SparseOutput ;
+    vamp:identifier       "simplechord" ;
+    dc:title              "Chord Estimate" ;
+    dc:description        """Estimated chord times and labels. Two simple (non-state-of-the-art!) algorithms are available that smooth these to provide a chord transcription: a simple chord change method, and a standard HMM/Viterbi approach."""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    vamp:bin_count        0 ;
+    vamp:sample_type      vamp:VariableSampleRate ;
+    vamp:sample_rate      21.5332 ;
+#   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:chordino_output_ a  vamp:DenseOutput ;
+    vamp:identifier       "" ;
+    dc:title              "Harmonic Change Value" ;
+    dc:description        """An indication of the likelihood of harmonic change. Depends on the chord dictionary. Calculation is different depending on whether the Viterbi algorithm is used for chord estimation, or the simple chord estimate."""  ;
+    vamp:fixed_bin_count  "true" ;
+    vamp:unit             "" ;
+    a                 vamp:KnownExtentsOutput ;
+    vamp:min_value    0  ;
+    vamp:max_value    0.999  ;
+    vamp:bin_count        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:nnls-chroma a   vamp:Plugin ;
+    dc:title              "NNLS Chroma" ;
+    vamp:name             "NNLS Chroma" ;
+    dc:description        """This plugin provides a number of features derived from a DFT-based log-frequency amplitude spectrum: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; and based on this semitone spectrum, different chroma features.""" ;
+    foaf:maker            [ foaf:name "Matthias Mauch" ] ; # FIXME could give plugin author's URI here
+    dc:rights             """GPL""" ;
+#   cc:license            <Place plugin license URI here and uncomment> ; 
+    vamp:identifier       "nnls-chroma" ;
+    vamp:vamp_API_version vamp:api_version_2 ;
+    owl:versionInfo       "1" ;
+    vamp:input_domain     vamp:FrequencyDomain ;
+
+
+    vamp:parameter   plugbase:nnls-chroma_param_useNNLS ;
+    vamp:parameter   plugbase:nnls-chroma_param_rollon ;
+    vamp:parameter   plugbase:nnls-chroma_param_tuningmode ;
+    vamp:parameter   plugbase:nnls-chroma_param_whitening ;
+    vamp:parameter   plugbase:nnls-chroma_param_s ;
+    vamp:parameter   plugbase:nnls-chroma_param_chromanormalize ;
+
+    vamp:output      plugbase:nnls-chroma_output_logfreqspec ;
+    vamp:output      plugbase:nnls-chroma_output_tunedlogfreqspec ;
+    vamp:output      plugbase:nnls-chroma_output_semitonespectrum ;
+    vamp:output      plugbase:nnls-chroma_output_chroma ;
+    vamp:output      plugbase:nnls-chroma_output_basschroma ;
+    vamp:output      plugbase:nnls-chroma_output_bothchroma ;
+    .
+plugbase:nnls-chroma_param_useNNLS a  vamp:QuantizedParameter ;
+    vamp:identifier     "useNNLS" ;
+    dc:title            "use approximate transcription (NNLS)" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:nnls-chroma_param_rollon a  vamp:QuantizedParameter ;
+    vamp:identifier     "rollon" ;
+    dc:title            "spectral roll-on" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       0.05 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   0.005  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ();
+    .
+plugbase:nnls-chroma_param_tuningmode a  vamp:QuantizedParameter ;
+    vamp:identifier     "tuningmode" ;
+    dc:title            "tuning mode" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   1  ;
+    vamp:default_value   0 ;
+    vamp:value_names     ( "global tuning" "local tuning");
+    .
+plugbase:nnls-chroma_param_whitening a  vamp:Parameter ;
+    vamp:identifier     "whitening" ;
+    dc:title            "spectral whitening" ;
+    dc:format           "" ;
+    vamp:min_value       0 ;
+    vamp:max_value       1 ;
+    vamp:unit           ""  ;
+    vamp:default_value   1 ;
+    vamp:value_names     ();
+    .
+plugbase:nnls-chroma_param_s a  vamp:Parameter ;
+    vamp:identifier     "s" ;
+    dc:title            "spectral shape" ;
+    dc:format           "" ;
+    vamp:min_value       0.5 ;
+    vamp:max_value       0.9 ;
+    vamp:unit           ""  ;
+    vamp:default_value   0.7 ;
+    vamp:value_names     ();
+    .
+plugbase:nnls-chroma_param_chromanormalize a  vamp:QuantizedParameter ;
     vamp:identifier     "chromanormalize" ;
     dc:title            "chroma normalization" ;
     dc:format           "" ;
@@ -85,102 +226,7 @@
     vamp:default_value   0 ;
     vamp:value_names     ( "none" "maximum norm" "L1 norm" "L2 norm");
     .
-plugbase:chordino_output_simplechord a  vamp:SparseOutput ;
-    vamp:identifier       "simplechord" ;
-    dc:title              "Chord Estimate" ;
-    dc:description        """A simple chord estimate based on the inner product of chord templates with the smoothed chroma."""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    vamp:bin_count        0 ;
-    vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      21.5332 ;
-#   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:chordino_output_harmonicchange a  vamp:DenseOutput ;
-    vamp:identifier       "harmonicchange" ;
-    dc:title              "Harmonic Change Value" ;
-    dc:description        """Harmonic change."""  ;
-    vamp:fixed_bin_count  "true" ;
-    vamp:unit             "" ;
-    a                 vamp:KnownExtentsOutput ;
-    vamp:min_value    0  ;
-    vamp:max_value    0.999  ;
-    vamp:bin_count        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:nnls_chroma a   vamp:Plugin ;
-    dc:title              "NNLS Chroma" ;
-    vamp:name             "NNLS Chroma" ;
-    dc:description        """This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.""" ;
-    foaf:maker            [ foaf:name "Matthias Mauch" ] ; # FIXME could give plugin author's URI here
-    dc:rights             """GPL""" ;
-#   cc:license            <Place plugin license URI here and uncomment> ; 
-    vamp:identifier       "nnls_chroma" ;
-    vamp:vamp_API_version vamp:api_version_2 ;
-    owl:versionInfo       "1" ;
-    vamp:input_domain     vamp:FrequencyDomain ;
-
-
-    vamp:parameter   plugbase:nnls_chroma_param_preset ;
-    vamp:parameter   plugbase:nnls_chroma_param_rollon ;
-    vamp:parameter   plugbase:nnls_chroma_param_tuningmode ;
-    vamp:parameter   plugbase:nnls_chroma_param_chromanormalize ;
-
-    vamp:output      plugbase:nnls_chroma_output_logfreqspec ;
-    vamp:output      plugbase:nnls_chroma_output_tunedlogfreqspec ;
-    vamp:output      plugbase:nnls_chroma_output_semitonespectrum ;
-    vamp:output      plugbase:nnls_chroma_output_chroma ;
-    vamp:output      plugbase:nnls_chroma_output_basschroma ;
-    vamp:output      plugbase:nnls_chroma_output_bothchroma ;
-    .
-plugbase:nnls_chroma_param_preset a  vamp:QuantizedParameter ;
-    vamp:identifier     "preset" ;
-    dc:title            "preset" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       3 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "polyphonic pop" "polyphonic pop (fast)" "solo keyboard" "manual");
-    .
-plugbase:nnls_chroma_param_rollon a  vamp:Parameter ;
-    vamp:identifier     "rollon" ;
-    dc:title            "spectral roll-on" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           ""  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ();
-    .
-plugbase:nnls_chroma_param_tuningmode a  vamp:QuantizedParameter ;
-    vamp:identifier     "tuningmode" ;
-    dc:title            "tuning mode" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "global tuning" "local tuning");
-    .
-plugbase:nnls_chroma_param_chromanormalize a  vamp:QuantizedParameter ;
-    vamp:identifier     "chromanormalize" ;
-    dc:title            "chroma normalization" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       3 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "none" "maximum norm" "L1 norm" "L2 norm");
-    .
-plugbase:nnls_chroma_output_logfreqspec a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_logfreqspec a  vamp:DenseOutput ;
     vamp:identifier       "logfreqspec" ;
     dc:title              "Log-Frequency Spectrum" ;
     dc:description        """A Log-Frequency Spectrum (constant Q) that is obtained by cosine filter mapping."""  ;
@@ -191,7 +237,7 @@
 #   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
 #   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
     .
-plugbase:nnls_chroma_output_tunedlogfreqspec a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_tunedlogfreqspec a  vamp:DenseOutput ;
     vamp:identifier       "tunedlogfreqspec" ;
     dc:title              "Tuned Log-Frequency Spectrum" ;
     dc:description        """A Log-Frequency Spectrum (constant Q) that is obtained by cosine filter mapping, then its tuned using the estimated tuning frequency."""  ;
@@ -202,7 +248,7 @@
 #   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
 #   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
     .
-plugbase:nnls_chroma_output_semitonespectrum a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_semitonespectrum a  vamp:DenseOutput ;
     vamp:identifier       "semitonespectrum" ;
     dc:title              "Semitone Spectrum" ;
     dc:description        """A semitone-spaced log-frequency spectrum derived from the third-of-a-semitone-spaced tuned log-frequency spectrum."""  ;
@@ -213,34 +259,34 @@
 #   vamp:computes_feature      <Place feature attribute URI here and uncomment> ;
 #   vamp:computes_signal_type  <Place signal type URI here and uncomment> ;
     .
-plugbase:nnls_chroma_output_chroma a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_chroma a  vamp:DenseOutput ;
     vamp:identifier       "chroma" ;
     dc:title              "Chromagram" ;
-    dc:description        """Tuning-adjusted chromagram from NNLS soft transcription, with an emphasis on the medium note range."""  ;
+    dc:description        """Tuning-adjusted chromagram from NNLS approximate transcription, with an emphasis on the medium note range."""  ;
     vamp:fixed_bin_count  "true" ;
     vamp:unit             "" ;
     vamp:bin_count        12 ;
-    vamp:bin_names        ( "A  (bass)" "Bb (bass)" "B  (bass)" "C  (bass)" "C# (bass)" "D  (bass)" "Eb (bass)" "E  (bass)" "F  (bass)" "F# (bass)" "G  (bass)" "Ab (bass)");
+    vamp:bin_names        ( "A" "Bb" "B" "C" "C#" "D" "Eb" "E" "F" "F#" "G" "Ab");
 #   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:nnls_chroma_output_basschroma a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_basschroma a  vamp:DenseOutput ;
     vamp:identifier       "basschroma" ;
     dc:title              "Bass Chromagram" ;
-    dc:description        """Tuning-adjusted bass chromagram from NNLS soft transcription, with an emphasis on the bass note range."""  ;
+    dc:description        """Tuning-adjusted bass chromagram from NNLS approximate transcription, with an emphasis on the bass note range."""  ;
     vamp:fixed_bin_count  "true" ;
     vamp:unit             "" ;
     vamp:bin_count        12 ;
-    vamp:bin_names        ( "A  (bass)" "Bb (bass)" "B  (bass)" "C  (bass)" "C# (bass)" "D  (bass)" "Eb (bass)" "E  (bass)" "F  (bass)" "F# (bass)" "G  (bass)" "Ab (bass)");
+    vamp:bin_names        ( "A" "Bb" "B" "C" "C#" "D" "Eb" "E" "F" "F#" "G" "Ab");
 #   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:nnls_chroma_output_bothchroma a  vamp:DenseOutput ;
+plugbase:nnls-chroma_output_bothchroma a  vamp:DenseOutput ;
     vamp:identifier       "bothchroma" ;
     dc:title              "Chromagram and Bass Chromagram" ;
-    dc:description        """Tuning-adjusted chromagram and bass chromagram (stacked on top of each other) from NNLS soft transcription."""  ;
+    dc:description        """Tuning-adjusted chromagram and bass chromagram (stacked on top of each other) from NNLS approximate transcription."""  ;
     vamp:fixed_bin_count  "true" ;
     vamp:unit             "" ;
     vamp:bin_count        24 ;
@@ -252,7 +298,7 @@
 plugbase:tuning a   vamp:Plugin ;
     dc:title              "Tuning" ;
     vamp:name             "Tuning" ;
-    dc:description        """This plugin provides a number of features derived from a log-frequency amplitude spectrum of the DFT: some variants of the log-frequency spectrum, including a semitone spectrum derived from approximate transcription using the NNLS algorithm; based on this semitone spectrum, chroma features and a simple chord estimate.""" ;
+    dc:description        """The tuning plugin can estimate the local and global tuning of piece. The same tuning method is used for the NNLS Chroma and Chordino plugins.""" ;
     foaf:maker            [ foaf:name "Matthias Mauch" ] ; # FIXME could give plugin author's URI here
     dc:rights             """GPL""" ;
 #   cc:license            <Place plugin license URI here and uncomment> ; 
@@ -262,61 +308,26 @@
     vamp:input_domain     vamp:FrequencyDomain ;
 
 
-    vamp:parameter   plugbase:tuning_param_preset ;
     vamp:parameter   plugbase:tuning_param_rollon ;
-    vamp:parameter   plugbase:tuning_param_tuningmode ;
-    vamp:parameter   plugbase:tuning_param_chromanormalize ;
 
     vamp:output      plugbase:tuning_output_tuning ;
     vamp:output      plugbase:tuning_output_localtuning ;
     .
-plugbase:tuning_param_preset a  vamp:QuantizedParameter ;
-    vamp:identifier     "preset" ;
-    dc:title            "preset" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       3 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "polyphonic pop" "polyphonic pop (fast)" "solo keyboard" "manual");
-    .
-plugbase:tuning_param_rollon a  vamp:Parameter ;
+plugbase:tuning_param_rollon a  vamp:QuantizedParameter ;
     vamp:identifier     "rollon" ;
     dc:title            "spectral roll-on" ;
     dc:format           "" ;
     vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           ""  ;
+    vamp:max_value       0.05 ;
+    vamp:unit           "" ;
+    vamp:quantize_step   0.005  ;
     vamp:default_value   0 ;
     vamp:value_names     ();
     .
-plugbase:tuning_param_tuningmode a  vamp:QuantizedParameter ;
-    vamp:identifier     "tuningmode" ;
-    dc:title            "tuning mode" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       1 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "global tuning" "local tuning");
-    .
-plugbase:tuning_param_chromanormalize a  vamp:QuantizedParameter ;
-    vamp:identifier     "chromanormalize" ;
-    dc:title            "chroma normalization" ;
-    dc:format           "" ;
-    vamp:min_value       0 ;
-    vamp:max_value       3 ;
-    vamp:unit           "" ;
-    vamp:quantize_step   1  ;
-    vamp:default_value   0 ;
-    vamp:value_names     ( "none" "maximum norm" "L1 norm" "L2 norm");
-    .
 plugbase:tuning_output_tuning a  vamp:SparseOutput ;
     vamp:identifier       "tuning" ;
     dc:title              "Tuning" ;
-    dc:description        """The concert pitch."""  ;
+    dc:description        """Returns a single label (at time 0 seconds) containing an estimate of the concert pitch in Hz."""  ;
     vamp:fixed_bin_count  "true" ;
     vamp:unit             "Hz" ;
     a                 vamp:KnownExtentsOutput ;
@@ -324,7 +335,7 @@
     vamp:max_value    452.89  ;
     vamp:bin_count        0 ;
     vamp:sample_type      vamp:VariableSampleRate ;
-    vamp:sample_rate      9.06382e-30 ;
+    vamp:sample_rate      2.38221e-44 ;
 #   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> ;
@@ -332,7 +343,7 @@
 plugbase:tuning_output_localtuning a  vamp:DenseOutput ;
     vamp:identifier       "localtuning" ;
     dc:title              "Local Tuning" ;
-    dc:description        """Tuning based on the history up to this timestamp."""  ;
+    dc:description        """Returns a tuning estimate at every analysis frame, an average of the (recent) previous frame-wise estimates of the concert pitch in Hz."""  ;
     vamp:fixed_bin_count  "true" ;
     vamp:unit             "Hz" ;
     a                 vamp:KnownExtentsOutput ;