changeset 63:b084e87b83e4

* Add README files for the various platform packages * Fix typo in cat file * Return simpler key names from key detector * Chromagram and constant Q default to unnormalized * Permit up to 48 bpo in constant Q
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 07 Feb 2008 10:03:04 +0000
parents f33b60d46d16
children ddea89113517
files README.txt README.txt.linux README.txt.osx README.txt.win32 plugins/ChromagramPlugin.cpp plugins/ConstantQSpectrogram.cpp plugins/KeyDetect.cpp plugins/KeyDetect.h qm-vamp-plugins.cat qm-vamp-plugins.pro
diffstat 10 files changed, 1179 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/README.txt	Fri Feb 01 16:57:22 2008 +0000
+++ b/README.txt	Thu Feb 07 10:03:04 2008 +0000
@@ -2,11 +2,46 @@
 QM Vamp Plugins
 ===============
 
-Vamp audio feature extraction plugins from Queen Mary, University of London.
+Vamp audio feature extraction plugins from the Centre for Digital
+Music at Queen Mary, University of London.
+
+http://www.elec.qmul.ac.uk/digitalmusic/
+
 Version 1.4.
 
-For more information about Vamp plugins, see http://www.vamp-plugins.org/
-and http://www.sonicvisualiser.org/ .
+For more information about Vamp plugins, see http://www.vamp-plugins.org/ .
+
+
+New In This Release
+===================
+
+This release contains a new plugin to estimate timbral and rhythmic
+similarity between multiple audio tracks, a plugin for structural
+segmentation of music audio, and a Mel-frequency cepstral coefficients
+calculation plugin.
+
+This release also includes significant updates to the existing key
+detector, tempo tracker, and chromagram plugins.
+
+
+Plugins Included
+================
+
+This plugin set includes the following plugins:
+
+   * Note onset detector
+
+   * Beat tracker and tempo estimator
+
+   * Key estimator and tonal change detector
+
+   * Segmenter, to divide a track into a consistent sequence of segments
+
+   * Timbral and rhythmic similarity between audio tracks
+
+   * Chromagram, constant-Q spectrogram, and MFCC calculation plugins
+
+More details about the plugins follow.
 
 
 License
@@ -25,18 +60,6 @@
 reserved except as described above.
 
 
-New In This Release
-===================
-
-This release contains a new plugin to estimate timbral and rhythmic
-similarity between multiple audio tracks, a plugin for structural
-segmentation of music audio, and a Mel-frequency cepstral coefficients
-calculation plugin.
-
-This release also includes significant updates to the existing key
-detector, tempo tracker, and chromagram plugins.
-
-
 To Install
 ==========
 
@@ -58,25 +81,8 @@
                /usr/lib/vamp/
 
 
-Plugins Included
-================
-
-This plugin set includes the following plugins:
-
-   * Note onset detector
-
-   * Beat tracker and tempo estimator
-
-   * Key estimator and tonal change detector
-
-   * Segmenter, to divide a track into a consistent sequence of segments
-
-   * Timbral and rhythmic similarity between audio tracks
-
-   * Chromagram, constant-Q spectrogram, and MFCC calculation plugins
-
-More details about the plugins follow.
-
+The Plugins
+===========
 
 Note Onset Detector
 -------------------
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt.linux	Thu Feb 07 10:03:04 2008 +0000
@@ -0,0 +1,367 @@
+
+QM Vamp Plugins
+===============
+
+Vamp audio feature extraction plugins from Queen Mary, University of London.
+Version 1.4.
+
+For more information about Vamp plugins, see http://www.vamp-plugins.org/
+and http://www.sonicvisualiser.org/ .
+
+
+To Install
+==========
+
+This package contains plugins compiled for Linux on 32-bit x86
+(Intel/AMD) systems using GNU libc v6.
+
+To install them, copy the files
+
+   qm-vamp-plugins.so and
+   qm-vamp-plugins.cat
+
+to one of the directories
+
+   /usr/local/lib/vamp/
+   /usr/lib/vamp/ or
+   $HOME/vamp/
+
+
+License
+=======
+
+These plugins are provided in binary form only.  You may install and
+use the plugin binaries without fee for any purpose commercial or
+non-commercial.  You may redistribute the plugin binaries provided you
+do so without fee and you retain this README file with your
+distribution.  You may not bundle these plugins with a commercial
+product or distribute them on commercial terms.  If you wish to
+arrange commercial licensing terms, please contact the Centre for
+Digital Music at Queen Mary, University of London.
+
+Copyright (c) 2006-2008 Queen Mary, University of London.  All rights
+reserved except as described above.
+
+
+New In This Release
+===================
+
+This release contains a new plugin to estimate timbral and rhythmic
+similarity between multiple audio tracks, a plugin for structural
+segmentation of music audio, and a Mel-frequency cepstral coefficients
+calculation plugin.
+
+This release also includes significant updates to the existing key
+detector, tempo tracker, and chromagram plugins.
+
+
+Plugins Included
+================
+
+This plugin set includes the following plugins:
+
+   * Note onset detector
+
+   * Beat tracker and tempo estimator
+
+   * Key estimator and tonal change detector
+
+   * Segmenter, to divide a track into a consistent sequence of segments
+
+   * Timbral and rhythmic similarity between audio tracks
+
+   * Chromagram, constant-Q spectrogram, and MFCC calculation plugins
+
+More details about the plugins follow.
+
+
+Note Onset Detector
+-------------------
+
+ Identifier:    qm-onsetdetector
+ Authors:       Chris Duxbury, Juan Pablo Bello and Christian Landone
+ Category:      Time > Onsets
+
+ References:    C. Duxbury, J. P. Bello, M. Davies and M. Sandler.
+                Complex domain Onset Detection for Musical Signals.
+                In Proceedings of the 6th Conference on Digital Audio
+                Effects (DAFx-03). London, UK. September 2003.
+
+                D. Stowell and M. D. Plumbley.
+                Adaptive whitening for improved real-time audio onset
+                detection.
+                In Proceedings of the International Computer Music
+                Conference (ICMC'07), August 2007.
+
+                D. Barry, D. Fitzgerald, E. Coyle and B. Lawlor.
+                Drum Source Separation using Percussive Feature
+                Detection and Spectral Modulation.
+                ISSC 2005
+
+The Note Onset Detector plugin analyses a single channel of audio and
+estimates the locations of note onsets within the music.
+
+It calculates an onset likelihood function for each spectral frame,
+and picks peaks in a smoothed version of this function.  The plugin is
+non-causal, returning all results at the end of processing.
+
+It has three outputs: the note onset positions, the onset detection
+function used in estimating onset positions, and a smoothed version of
+the detection function that is used in the peak-picking phase.
+
+
+Tempo and Beat Tracker
+----------------------
+
+ Identifier:    qm-tempotracker
+ Authors:       Matthew Davies and Christian Landone
+ Category:      Time > Tempo
+
+ References:    M. E. P. Davies and M. D. Plumbley.
+                Context-dependent beat tracking of musical audio.
+                In IEEE Transactions on Audio, Speech and Language
+                Processing. Vol. 15, No. 3, pp1009-1020, 2007.
+
+                M. E. P. Davies and M. D. Plumbley.
+                Beat Tracking With A Two State Model.
+                In Proceedings of the IEEE International Conference 
+                on Acoustics, Speech and Signal Processing (ICASSP 2005),
+                Vol. 3, pp241-244 Philadelphia, USA, March 19-23, 2005.
+
+The Tempo and Beat Tracker plugin analyses a single channel of audio
+and estimates the locations of metrical beats and the resulting tempo.
+
+It has three outputs: the beat positions, an ongoing estimate of tempo
+where available, and the onset detection function used in estimating
+beat positions.
+
+
+Key Detector
+------------
+
+ Identifier:    qm-keydetector
+ Authors:       Katy Noland and Christian Landone
+ Category:      Key and Tonality
+
+ References:    K. Noland and M. Sandler.
+                Signal Processing Parameters for Tonality Estimation.
+                In Proceedings of Audio Engineering Society 122nd
+                Convention, Vienna, 2007.
+
+The Key Detector plugin analyses a single channel of audio and
+continuously estimates the key of the music.
+
+It has four outputs: the tonic pitch of the key; a major or minor mode
+flag; the key (combining the tonic and major/minor into a single
+value); and a key strength plot which reports the degree to which the
+chroma vector extracted from each input block correlates to the stored
+key profiles for each major and minor key.  The key profiles are drawn
+from analysis of Book I of the Well Tempered Klavier by J S Bach,
+recorded at A=440 equal temperament.
+
+The outputs have the values:
+
+  Tonic pitch: C = 1, C#/Db = 2, ..., B = 12
+
+  Major/minor mode: major = 0, minor = 1
+
+  Key: C major = 1, C#/Db major = 2, ..., B major = 12
+       C minor = 13, C#/Db minor = 14, ..., B minor = 24
+
+  Key Strength Plot: 25 separate bins per feature, separated into 1-12
+       (major from C) and 14-25 (minor from C).  Bin 13 is unused, not
+       for superstitious reasons but simply so as to delimit the major
+       and minor areas if they are displayed on a single plot by the
+       plugin host.  Higher bin values show increased correlation with
+       the key profile for that key.
+
+The outputs are also labelled with pitch or key as text.
+
+
+Tonal Change
+------------
+
+ Identifier:    qm-tonalchange
+ Authors:       Chris Harte and Martin Gasser
+ Category:      Key and Tonality
+
+ References:    C. A. Harte, M. Gasser, and M. Sandler.
+                Detecting harmonic change in musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                C. A. Harte and M. Sandler.
+                Automatic chord identification using a quantised chromagram.
+                In Proceedings of the 118th Convention of the Audio
+                Engineering Society, Barcelona, Spain, May 28-31 2005.
+
+The Tonal Change plugin analyses a single channel of audio, detecting
+harmonic changes such as chord boundaries.
+
+It has three outputs: a representation of the musical content in a
+six-dimensional tonal space onto which the algorithm maps 12-bin
+chroma vectors extracted from the audio; a function representing the
+estimated likelihood of a tonal change occurring in each spectral
+frame; and the resulting estimated positions of tonal changes.
+
+
+Segmenter
+---------
+
+ Identifier:    qm-segmenter
+ Authors:       Mark Levy
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Structural segmentation of musical audio by constrained
+                clustering.
+                IEEE Transactions on Audio, Speech, and Language Processing,
+                February 2008.
+
+The Segmenter plugin divides a single channel of music up into
+structurally consistent segments.  Its single output contains a
+numeric value (the segment type) for each moment at which a new
+segment starts.
+
+For music with clearly tonally distinguishable sections such as verse,
+chorus, etc., the segments with the same type may be expected to be
+similar to one another in some structural sense (e.g. repetitions of
+the chorus).
+
+The type of feature used in segmentation can be selected using the
+Feature Type parameter.  The default Hybrid (Constant-Q) is generally
+effective for modern studio recordings, while the Chromatic option may
+be preferable for live, acoustic, or older recordings, in which
+repeated sections may be less consistent in sound.  Also available is
+a timbral (MFCC) feature, which is more likely to result in
+classification by instrumentation rather than musical content.
+
+Note that this plugin does a substantial amount of processing after
+receiving all of the input audio data, before it produces any results.
+
+
+Similarity
+----------
+
+ Identifier:    qm-similarity
+ Authors:       Mark Levy, Kurt Jacobson and Chris Cannam
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Lightweight measures for timbral similarity of musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                K. Jacobson.
+                A Multifaceted Approach to Music Similarity.
+                In Proceedings of the Seventh International Conference on
+                Music Information Retrieval (ISMIR), 2006.
+
+The Similarity plugin treats each channel of its audio input as a
+separate "track", and estimates how similar the tracks are to one
+another using a selectable similarity measure.
+
+The plugin also returns the intermediate data used as a basis of the
+similarity measure; it can therefore be used on a single channel of
+input (with the resulting intermediate data then being applied in some
+other similarity or clustering algorithm, for example) if desired, as
+well as with multiple inputs.
+
+The underlying audio features used for the similarity measure can be
+selected using the Feature Type parameter.  The available features are
+Timbre (in which the distance between tracks is a symmetrised
+Kullback-Leibler divergence between Gaussian-modelled MFCC means and
+variances across each track); Chroma (KL divergence of mean chroma
+histogram); Rhythm (cosine distance between "beat spectrum" measures
+derived from a short sampled section of the track); and combined
+"Timbre and Rhythm" and "Chroma and Rhythm".
+
+The plugin has six outputs: a matrix of the distances between input
+channels; a vector containing the distances between the first input
+channel and each of the input channels; a pair of vectors containing
+the indices of the input channels in the order of their similarity to
+the first input channel, and the distances between the first input
+channel and each of those channels; the means of the underlying
+feature bins (MFCCs or chroma); the variances of the underlying
+feature bins; and the beat spectra used for the rhythmic feature.
+
+Because Vamp does not have the capability to return features in matrix
+form explicitly, the matrix output is returned as a series of vector
+features timestamped at one-second intervals.  Likewise, the
+underlying feature outputs contain one vector feature per input
+channel, timestamped at one-second intervals (so the feature for the
+first channel is at time 0, and so on).  Examining the features that
+the plugin actually returns, when run on some test data, may make this
+arrangement more clear.
+
+Note that the underlying feature values are only returned if the
+relevant feature type is selected.  That is, the means and variances
+outputs are valid provided the pure rhythm feature is not selected;
+the beat spectra output is valid provided rhythm is included in the
+selected feature type.
+
+
+Constant-Q Spectrogram
+----------------------
+
+ Identifier:    qm-constantq
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+ References:    J. Brown.
+                Calculation of a constant Q spectral transform.
+                Journal of the Acoustical Society of America, 89(1):
+                425-434, 1991.
+
+The Constant-Q Spectrogram plugin calculates a spectrogram based on a
+short-time windowed constant Q spectral transform.  This is a
+spectrogram in which the ratio of centre frequency to resolution is
+constant for each frequency bin.  The frequency bins correspond to the
+frequencies of "musical notes" rather than being linearly spaced in
+frequency as they are for the conventional DFT spectrogram.
+
+The pitch range and the number of frequency bins per octave may be
+adjusted using the plugin's parameters.  Note that the plugin's
+preferred step and block sizes depend on these parameters, and the
+plugin will not accept any other block size.
+
+
+Chromagram
+----------
+
+ Identifier:    qm-chromagram
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+The Chromagram plugin calculates a constant Q spectral transform (as
+above) and then wraps the frequency bin values into a single octave,
+with each bin containing the sum of the magnitudes from the
+corresponding bin in all octaves.  The number of values in each
+feature vector returned by the plugin is therefore the same as the
+number of bins per octave configured for the underlying constant Q
+transform.
+
+The pitch range and the number of frequency bins per octave for the
+transform may be adjusted using the plugin's parameters.  Note that
+the plugin's preferred step and block sizes depend on these
+parameters, and the plugin will not accept any other block size.
+
+
+Mel-Frequency Cepstral Coefficients
+-----------------------------------
+
+ Identifier:    qm-mfcc
+ Authors:       Nicolas Chetry and Chris Cannam
+ Category:      Low Level Features
+
+ References:    B. Logan.
+                Mel-Frequency Cepstral Coefficients for Music Modeling.
+                In Proceedings of the First International Symposium on Music
+                Information Retrieval (ISMIR), 2000.
+
+The Mel-Frequency Cepstral Coefficients plugin calculates MFCCs from a
+single channel of audio, returning one MFCC vector from each process
+call.  It also returns the overall means of the coefficient values
+across the length of the audio input, as a separate output at the end
+of processing.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt.osx	Thu Feb 07 10:03:04 2008 +0000
@@ -0,0 +1,366 @@
+
+QM Vamp Plugins
+===============
+
+Vamp audio feature extraction plugins from Queen Mary, University of London.
+Version 1.4.
+
+For more information about Vamp plugins, see http://www.vamp-plugins.org/
+and http://www.sonicvisualiser.org/ .
+
+
+To Install
+==========
+
+This package contains plugins for the Apple OS/X operating system,
+compatible with both PPC and Intel hardware.
+
+To install them, copy the files
+
+   qm-vamp-plugins.dylib and
+   qm-vamp-plugins.cat
+
+to either
+
+   /Library/Audio/Plug-Ins/Vamp/ (for plugins available to all users) or
+   $HOME/Library/Audio/Plug-Ins/Vamp/ (for plugins available to you only).
+
+
+License
+=======
+
+These plugins are provided in binary form only.  You may install and
+use the plugin binaries without fee for any purpose commercial or
+non-commercial.  You may redistribute the plugin binaries provided you
+do so without fee and you retain this README file with your
+distribution.  You may not bundle these plugins with a commercial
+product or distribute them on commercial terms.  If you wish to
+arrange commercial licensing terms, please contact the Centre for
+Digital Music at Queen Mary, University of London.
+
+Copyright (c) 2006-2008 Queen Mary, University of London.  All rights
+reserved except as described above.
+
+
+New In This Release
+===================
+
+This release contains a new plugin to estimate timbral and rhythmic
+similarity between multiple audio tracks, a plugin for structural
+segmentation of music audio, and a Mel-frequency cepstral coefficients
+calculation plugin.
+
+This release also includes significant updates to the existing key
+detector, tempo tracker, and chromagram plugins.
+
+
+Plugins Included
+================
+
+This plugin set includes the following plugins:
+
+   * Note onset detector
+
+   * Beat tracker and tempo estimator
+
+   * Key estimator and tonal change detector
+
+   * Segmenter, to divide a track into a consistent sequence of segments
+
+   * Timbral and rhythmic similarity between audio tracks
+
+   * Chromagram, constant-Q spectrogram, and MFCC calculation plugins
+
+More details about the plugins follow.
+
+
+Note Onset Detector
+-------------------
+
+ Identifier:    qm-onsetdetector
+ Authors:       Chris Duxbury, Juan Pablo Bello and Christian Landone
+ Category:      Time > Onsets
+
+ References:    C. Duxbury, J. P. Bello, M. Davies and M. Sandler.
+                Complex domain Onset Detection for Musical Signals.
+                In Proceedings of the 6th Conference on Digital Audio
+                Effects (DAFx-03). London, UK. September 2003.
+
+                D. Stowell and M. D. Plumbley.
+                Adaptive whitening for improved real-time audio onset
+                detection.
+                In Proceedings of the International Computer Music
+                Conference (ICMC'07), August 2007.
+
+                D. Barry, D. Fitzgerald, E. Coyle and B. Lawlor.
+                Drum Source Separation using Percussive Feature
+                Detection and Spectral Modulation.
+                ISSC 2005
+
+The Note Onset Detector plugin analyses a single channel of audio and
+estimates the locations of note onsets within the music.
+
+It calculates an onset likelihood function for each spectral frame,
+and picks peaks in a smoothed version of this function.  The plugin is
+non-causal, returning all results at the end of processing.
+
+It has three outputs: the note onset positions, the onset detection
+function used in estimating onset positions, and a smoothed version of
+the detection function that is used in the peak-picking phase.
+
+
+Tempo and Beat Tracker
+----------------------
+
+ Identifier:    qm-tempotracker
+ Authors:       Matthew Davies and Christian Landone
+ Category:      Time > Tempo
+
+ References:    M. E. P. Davies and M. D. Plumbley.
+                Context-dependent beat tracking of musical audio.
+                In IEEE Transactions on Audio, Speech and Language
+                Processing. Vol. 15, No. 3, pp1009-1020, 2007.
+
+                M. E. P. Davies and M. D. Plumbley.
+                Beat Tracking With A Two State Model.
+                In Proceedings of the IEEE International Conference 
+                on Acoustics, Speech and Signal Processing (ICASSP 2005),
+                Vol. 3, pp241-244 Philadelphia, USA, March 19-23, 2005.
+
+The Tempo and Beat Tracker plugin analyses a single channel of audio
+and estimates the locations of metrical beats and the resulting tempo.
+
+It has three outputs: the beat positions, an ongoing estimate of tempo
+where available, and the onset detection function used in estimating
+beat positions.
+
+
+Key Detector
+------------
+
+ Identifier:    qm-keydetector
+ Authors:       Katy Noland and Christian Landone
+ Category:      Key and Tonality
+
+ References:    K. Noland and M. Sandler.
+                Signal Processing Parameters for Tonality Estimation.
+                In Proceedings of Audio Engineering Society 122nd
+                Convention, Vienna, 2007.
+
+The Key Detector plugin analyses a single channel of audio and
+continuously estimates the key of the music.
+
+It has four outputs: the tonic pitch of the key; a major or minor mode
+flag; the key (combining the tonic and major/minor into a single
+value); and a key strength plot which reports the degree to which the
+chroma vector extracted from each input block correlates to the stored
+key profiles for each major and minor key.  The key profiles are drawn
+from analysis of Book I of the Well Tempered Klavier by J S Bach,
+recorded at A=440 equal temperament.
+
+The outputs have the values:
+
+  Tonic pitch: C = 1, C#/Db = 2, ..., B = 12
+
+  Major/minor mode: major = 0, minor = 1
+
+  Key: C major = 1, C#/Db major = 2, ..., B major = 12
+       C minor = 13, C#/Db minor = 14, ..., B minor = 24
+
+  Key Strength Plot: 25 separate bins per feature, separated into 1-12
+       (major from C) and 14-25 (minor from C).  Bin 13 is unused, not
+       for superstitious reasons but simply so as to delimit the major
+       and minor areas if they are displayed on a single plot by the
+       plugin host.  Higher bin values show increased correlation with
+       the key profile for that key.
+
+The outputs are also labelled with pitch or key as text.
+
+
+Tonal Change
+------------
+
+ Identifier:    qm-tonalchange
+ Authors:       Chris Harte and Martin Gasser
+ Category:      Key and Tonality
+
+ References:    C. A. Harte, M. Gasser, and M. Sandler.
+                Detecting harmonic change in musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                C. A. Harte and M. Sandler.
+                Automatic chord identification using a quantised chromagram.
+                In Proceedings of the 118th Convention of the Audio
+                Engineering Society, Barcelona, Spain, May 28-31 2005.
+
+The Tonal Change plugin analyses a single channel of audio, detecting
+harmonic changes such as chord boundaries.
+
+It has three outputs: a representation of the musical content in a
+six-dimensional tonal space onto which the algorithm maps 12-bin
+chroma vectors extracted from the audio; a function representing the
+estimated likelihood of a tonal change occurring in each spectral
+frame; and the resulting estimated positions of tonal changes.
+
+
+Segmenter
+---------
+
+ Identifier:    qm-segmenter
+ Authors:       Mark Levy
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Structural segmentation of musical audio by constrained
+                clustering.
+                IEEE Transactions on Audio, Speech, and Language Processing,
+                February 2008.
+
+The Segmenter plugin divides a single channel of music up into
+structurally consistent segments.  Its single output contains a
+numeric value (the segment type) for each moment at which a new
+segment starts.
+
+For music with clearly tonally distinguishable sections such as verse,
+chorus, etc., the segments with the same type may be expected to be
+similar to one another in some structural sense (e.g. repetitions of
+the chorus).
+
+The type of feature used in segmentation can be selected using the
+Feature Type parameter.  The default Hybrid (Constant-Q) is generally
+effective for modern studio recordings, while the Chromatic option may
+be preferable for live, acoustic, or older recordings, in which
+repeated sections may be less consistent in sound.  Also available is
+a timbral (MFCC) feature, which is more likely to result in
+classification by instrumentation rather than musical content.
+
+Note that this plugin does a substantial amount of processing after
+receiving all of the input audio data, before it produces any results.
+
+
+Similarity
+----------
+
+ Identifier:    qm-similarity
+ Authors:       Mark Levy, Kurt Jacobson and Chris Cannam
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Lightweight measures for timbral similarity of musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                K. Jacobson.
+                A Multifaceted Approach to Music Similarity.
+                In Proceedings of the Seventh International Conference on
+                Music Information Retrieval (ISMIR), 2006.
+
+The Similarity plugin treats each channel of its audio input as a
+separate "track", and estimates how similar the tracks are to one
+another using a selectable similarity measure.
+
+The plugin also returns the intermediate data used as a basis of the
+similarity measure; it can therefore be used on a single channel of
+input (with the resulting intermediate data then being applied in some
+other similarity or clustering algorithm, for example) if desired, as
+well as with multiple inputs.
+
+The underlying audio features used for the similarity measure can be
+selected using the Feature Type parameter.  The available features are
+Timbre (in which the distance between tracks is a symmetrised
+Kullback-Leibler divergence between Gaussian-modelled MFCC means and
+variances across each track); Chroma (KL divergence of mean chroma
+histogram); Rhythm (cosine distance between "beat spectrum" measures
+derived from a short sampled section of the track); and combined
+"Timbre and Rhythm" and "Chroma and Rhythm".
+
+The plugin has six outputs: a matrix of the distances between input
+channels; a vector containing the distances between the first input
+channel and each of the input channels; a pair of vectors containing
+the indices of the input channels in the order of their similarity to
+the first input channel, and the distances between the first input
+channel and each of those channels; the means of the underlying
+feature bins (MFCCs or chroma); the variances of the underlying
+feature bins; and the beat spectra used for the rhythmic feature.
+
+Because Vamp does not have the capability to return features in matrix
+form explicitly, the matrix output is returned as a series of vector
+features timestamped at one-second intervals.  Likewise, the
+underlying feature outputs contain one vector feature per input
+channel, timestamped at one-second intervals (so the feature for the
+first channel is at time 0, and so on).  Examining the features that
+the plugin actually returns, when run on some test data, may make this
+arrangement more clear.
+
+Note that the underlying feature values are only returned if the
+relevant feature type is selected.  That is, the means and variances
+outputs are valid provided the pure rhythm feature is not selected;
+the beat spectra output is valid provided rhythm is included in the
+selected feature type.
+
+
+Constant-Q Spectrogram
+----------------------
+
+ Identifier:    qm-constantq
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+ References:    J. Brown.
+                Calculation of a constant Q spectral transform.
+                Journal of the Acoustical Society of America, 89(1):
+                425-434, 1991.
+
+The Constant-Q Spectrogram plugin calculates a spectrogram based on a
+short-time windowed constant Q spectral transform.  This is a
+spectrogram in which the ratio of centre frequency to resolution is
+constant for each frequency bin.  The frequency bins correspond to the
+frequencies of "musical notes" rather than being linearly spaced in
+frequency as they are for the conventional DFT spectrogram.
+
+The pitch range and the number of frequency bins per octave may be
+adjusted using the plugin's parameters.  Note that the plugin's
+preferred step and block sizes depend on these parameters, and the
+plugin will not accept any other block size.
+
+
+Chromagram
+----------
+
+ Identifier:    qm-chromagram
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+The Chromagram plugin calculates a constant Q spectral transform (as
+above) and then wraps the frequency bin values into a single octave,
+with each bin containing the sum of the magnitudes from the
+corresponding bin in all octaves.  The number of values in each
+feature vector returned by the plugin is therefore the same as the
+number of bins per octave configured for the underlying constant Q
+transform.
+
+The pitch range and the number of frequency bins per octave for the
+transform may be adjusted using the plugin's parameters.  Note that
+the plugin's preferred step and block sizes depend on these
+parameters, and the plugin will not accept any other block size.
+
+
+Mel-Frequency Cepstral Coefficients
+-----------------------------------
+
+ Identifier:    qm-mfcc
+ Authors:       Nicolas Chetry and Chris Cannam
+ Category:      Low Level Features
+
+ References:    B. Logan.
+                Mel-Frequency Cepstral Coefficients for Music Modeling.
+                In Proceedings of the First International Symposium on Music
+                Information Retrieval (ISMIR), 2000.
+
+The Mel-Frequency Cepstral Coefficients plugin calculates MFCCs from a
+single channel of audio, returning one MFCC vector from each process
+call.  It also returns the overall means of the coefficient values
+across the length of the audio input, as a separate output at the end
+of processing.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/README.txt.win32	Thu Feb 07 10:03:04 2008 +0000
@@ -0,0 +1,368 @@
+
+QM Vamp Plugins
+===============
+
+Vamp audio feature extraction plugins from Queen Mary, University of London.
+Version 1.4.
+
+For more information about Vamp plugins, see http://www.vamp-plugins.org/
+and http://www.sonicvisualiser.org/ .
+
+
+To Install
+==========
+
+This package contains plugins for Win32 systems (Windows XP, Vista).
+
+To install them, copy the files
+
+   qm-vamp-plugins.dll and
+   qm-vamp-plugins.cat
+
+into the folder
+
+   "C:\Program Files\Vamp Plugins\".
+
+You may also install them elsewhere and set the VAMP_PATH environment
+variable to a semicolon-separated list of the folders in which plugins
+may be found.  e.g., "C:\My Plugins;C:\Program Files\Vamp Plugins".
+
+
+License
+=======
+
+These plugins are provided in binary form only.  You may install and
+use the plugin binaries without fee for any purpose commercial or
+non-commercial.  You may redistribute the plugin binaries provided you
+do so without fee and you retain this README file with your
+distribution.  You may not bundle these plugins with a commercial
+product or distribute them on commercial terms.  If you wish to
+arrange commercial licensing terms, please contact the Centre for
+Digital Music at Queen Mary, University of London.
+
+Copyright (c) 2006-2008 Queen Mary, University of London.  All rights
+reserved except as described above.
+
+
+New In This Release
+===================
+
+This release contains a new plugin to estimate timbral and rhythmic
+similarity between multiple audio tracks, a plugin for structural
+segmentation of music audio, and a Mel-frequency cepstral coefficients
+calculation plugin.
+
+This release also includes significant updates to the existing key
+detector, tempo tracker, and chromagram plugins.
+
+
+Plugins Included
+================
+
+This plugin set includes the following plugins:
+
+   * Note onset detector
+
+   * Beat tracker and tempo estimator
+
+   * Key estimator and tonal change detector
+
+   * Segmenter, to divide a track into a consistent sequence of segments
+
+   * Timbral and rhythmic similarity between audio tracks
+
+   * Chromagram, constant-Q spectrogram, and MFCC calculation plugins
+
+More details about the plugins follow.
+
+
+Note Onset Detector
+-------------------
+
+ Identifier:    qm-onsetdetector
+ Authors:       Chris Duxbury, Juan Pablo Bello and Christian Landone
+ Category:      Time > Onsets
+
+ References:    C. Duxbury, J. P. Bello, M. Davies and M. Sandler.
+                Complex domain Onset Detection for Musical Signals.
+                In Proceedings of the 6th Conference on Digital Audio
+                Effects (DAFx-03). London, UK. September 2003.
+
+                D. Stowell and M. D. Plumbley.
+                Adaptive whitening for improved real-time audio onset
+                detection.
+                In Proceedings of the International Computer Music
+                Conference (ICMC'07), August 2007.
+
+                D. Barry, D. Fitzgerald, E. Coyle and B. Lawlor.
+                Drum Source Separation using Percussive Feature
+                Detection and Spectral Modulation.
+                ISSC 2005
+
+The Note Onset Detector plugin analyses a single channel of audio and
+estimates the locations of note onsets within the music.
+
+It calculates an onset likelihood function for each spectral frame,
+and picks peaks in a smoothed version of this function.  The plugin is
+non-causal, returning all results at the end of processing.
+
+It has three outputs: the note onset positions, the onset detection
+function used in estimating onset positions, and a smoothed version of
+the detection function that is used in the peak-picking phase.
+
+
+Tempo and Beat Tracker
+----------------------
+
+ Identifier:    qm-tempotracker
+ Authors:       Matthew Davies and Christian Landone
+ Category:      Time > Tempo
+
+ References:    M. E. P. Davies and M. D. Plumbley.
+                Context-dependent beat tracking of musical audio.
+                In IEEE Transactions on Audio, Speech and Language
+                Processing. Vol. 15, No. 3, pp1009-1020, 2007.
+
+                M. E. P. Davies and M. D. Plumbley.
+                Beat Tracking With A Two State Model.
+                In Proceedings of the IEEE International Conference 
+                on Acoustics, Speech and Signal Processing (ICASSP 2005),
+                Vol. 3, pp241-244 Philadelphia, USA, March 19-23, 2005.
+
+The Tempo and Beat Tracker plugin analyses a single channel of audio
+and estimates the locations of metrical beats and the resulting tempo.
+
+It has three outputs: the beat positions, an ongoing estimate of tempo
+where available, and the onset detection function used in estimating
+beat positions.
+
+
+Key Detector
+------------
+
+ Identifier:    qm-keydetector
+ Authors:       Katy Noland and Christian Landone
+ Category:      Key and Tonality
+
+ References:    K. Noland and M. Sandler.
+                Signal Processing Parameters for Tonality Estimation.
+                In Proceedings of Audio Engineering Society 122nd
+                Convention, Vienna, 2007.
+
+The Key Detector plugin analyses a single channel of audio and
+continuously estimates the key of the music.
+
+It has four outputs: the tonic pitch of the key; a major or minor mode
+flag; the key (combining the tonic and major/minor into a single
+value); and a key strength plot which reports the degree to which the
+chroma vector extracted from each input block correlates to the stored
+key profiles for each major and minor key.  The key profiles are drawn
+from analysis of Book I of the Well Tempered Klavier by J S Bach,
+recorded at A=440 equal temperament.
+
+The outputs have the values:
+
+  Tonic pitch: C = 1, C#/Db = 2, ..., B = 12
+
+  Major/minor mode: major = 0, minor = 1
+
+  Key: C major = 1, C#/Db major = 2, ..., B major = 12
+       C minor = 13, C#/Db minor = 14, ..., B minor = 24
+
+  Key Strength Plot: 25 separate bins per feature, separated into 1-12
+       (major from C) and 14-25 (minor from C).  Bin 13 is unused, not
+       for superstitious reasons but simply so as to delimit the major
+       and minor areas if they are displayed on a single plot by the
+       plugin host.  Higher bin values show increased correlation with
+       the key profile for that key.
+
+The outputs are also labelled with pitch or key as text.
+
+
+Tonal Change
+------------
+
+ Identifier:    qm-tonalchange
+ Authors:       Chris Harte and Martin Gasser
+ Category:      Key and Tonality
+
+ References:    C. A. Harte, M. Gasser, and M. Sandler.
+                Detecting harmonic change in musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                C. A. Harte and M. Sandler.
+                Automatic chord identification using a quantised chromagram.
+                In Proceedings of the 118th Convention of the Audio
+                Engineering Society, Barcelona, Spain, May 28-31 2005.
+
+The Tonal Change plugin analyses a single channel of audio, detecting
+harmonic changes such as chord boundaries.
+
+It has three outputs: a representation of the musical content in a
+six-dimensional tonal space onto which the algorithm maps 12-bin
+chroma vectors extracted from the audio; a function representing the
+estimated likelihood of a tonal change occurring in each spectral
+frame; and the resulting estimated positions of tonal changes.
+
+
+Segmenter
+---------
+
+ Identifier:    qm-segmenter
+ Authors:       Mark Levy
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Structural segmentation of musical audio by constrained
+                clustering.
+                IEEE Transactions on Audio, Speech, and Language Processing,
+                February 2008.
+
+The Segmenter plugin divides a single channel of music up into
+structurally consistent segments.  Its single output contains a
+numeric value (the segment type) for each moment at which a new
+segment starts.
+
+For music with clearly tonally distinguishable sections such as verse,
+chorus, etc., the segments with the same type may be expected to be
+similar to one another in some structural sense (e.g. repetitions of
+the chorus).
+
+The type of feature used in segmentation can be selected using the
+Feature Type parameter.  The default Hybrid (Constant-Q) is generally
+effective for modern studio recordings, while the Chromatic option may
+be preferable for live, acoustic, or older recordings, in which
+repeated sections may be less consistent in sound.  Also available is
+a timbral (MFCC) feature, which is more likely to result in
+classification by instrumentation rather than musical content.
+
+Note that this plugin does a substantial amount of processing after
+receiving all of the input audio data, before it produces any results.
+
+
+Similarity
+----------
+
+ Identifier:    qm-similarity
+ Authors:       Mark Levy, Kurt Jacobson and Chris Cannam
+ Category:      Classification
+
+ References:    M. Levy and M. Sandler.
+                Lightweight measures for timbral similarity of musical audio.
+                In Proceedings of the 1st ACM workshop on Audio and Music
+                Computing Multimedia, Santa Barbara, 2006.
+
+                K. Jacobson.
+                A Multifaceted Approach to Music Similarity.
+                In Proceedings of the Seventh International Conference on
+                Music Information Retrieval (ISMIR), 2006.
+
+The Similarity plugin treats each channel of its audio input as a
+separate "track", and estimates how similar the tracks are to one
+another using a selectable similarity measure.
+
+The plugin also returns the intermediate data used as a basis of the
+similarity measure; it can therefore be used on a single channel of
+input (with the resulting intermediate data then being applied in some
+other similarity or clustering algorithm, for example) if desired, as
+well as with multiple inputs.
+
+The underlying audio features used for the similarity measure can be
+selected using the Feature Type parameter.  The available features are
+Timbre (in which the distance between tracks is a symmetrised
+Kullback-Leibler divergence between Gaussian-modelled MFCC means and
+variances across each track); Chroma (KL divergence of mean chroma
+histogram); Rhythm (cosine distance between "beat spectrum" measures
+derived from a short sampled section of the track); and combined
+"Timbre and Rhythm" and "Chroma and Rhythm".
+
+The plugin has six outputs: a matrix of the distances between input
+channels; a vector containing the distances between the first input
+channel and each of the input channels; a pair of vectors containing
+the indices of the input channels in the order of their similarity to
+the first input channel, and the distances between the first input
+channel and each of those channels; the means of the underlying
+feature bins (MFCCs or chroma); the variances of the underlying
+feature bins; and the beat spectra used for the rhythmic feature.
+
+Because Vamp does not have the capability to return features in matrix
+form explicitly, the matrix output is returned as a series of vector
+features timestamped at one-second intervals.  Likewise, the
+underlying feature outputs contain one vector feature per input
+channel, timestamped at one-second intervals (so the feature for the
+first channel is at time 0, and so on).  Examining the features that
+the plugin actually returns, when run on some test data, may make this
+arrangement more clear.
+
+Note that the underlying feature values are only returned if the
+relevant feature type is selected.  That is, the means and variances
+outputs are valid provided the pure rhythm feature is not selected;
+the beat spectra output is valid provided rhythm is included in the
+selected feature type.
+
+
+Constant-Q Spectrogram
+----------------------
+
+ Identifier:    qm-constantq
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+ References:    J. Brown.
+                Calculation of a constant Q spectral transform.
+                Journal of the Acoustical Society of America, 89(1):
+                425-434, 1991.
+
+The Constant-Q Spectrogram plugin calculates a spectrogram based on a
+short-time windowed constant Q spectral transform.  This is a
+spectrogram in which the ratio of centre frequency to resolution is
+constant for each frequency bin.  The frequency bins correspond to the
+frequencies of "musical notes" rather than being linearly spaced in
+frequency as they are for the conventional DFT spectrogram.
+
+The pitch range and the number of frequency bins per octave may be
+adjusted using the plugin's parameters.  Note that the plugin's
+preferred step and block sizes depend on these parameters, and the
+plugin will not accept any other block size.
+
+
+Chromagram
+----------
+
+ Identifier:    qm-chromagram
+ Authors:       Christian Landone
+ Category:      Visualisation
+
+The Chromagram plugin calculates a constant Q spectral transform (as
+above) and then wraps the frequency bin values into a single octave,
+with each bin containing the sum of the magnitudes from the
+corresponding bin in all octaves.  The number of values in each
+feature vector returned by the plugin is therefore the same as the
+number of bins per octave configured for the underlying constant Q
+transform.
+
+The pitch range and the number of frequency bins per octave for the
+transform may be adjusted using the plugin's parameters.  Note that
+the plugin's preferred step and block sizes depend on these
+parameters, and the plugin will not accept any other block size.
+
+
+Mel-Frequency Cepstral Coefficients
+-----------------------------------
+
+ Identifier:    qm-mfcc
+ Authors:       Nicolas Chetry and Chris Cannam
+ Category:      Low Level Features
+
+ References:    B. Logan.
+                Mel-Frequency Cepstral Coefficients for Music Modeling.
+                In Proceedings of the First International Symposium on Music
+                Information Retrieval (ISMIR), 2000.
+
+The Mel-Frequency Cepstral Coefficients plugin calculates MFCCs from a
+single channel of audio, returning one MFCC vector from each process
+call.  It also returns the overall means of the coefficient values
+across the length of the audio input, as a separate output at the end
+of processing.
+
--- a/plugins/ChromagramPlugin.cpp	Fri Feb 01 16:57:22 2008 +0000
+++ b/plugins/ChromagramPlugin.cpp	Thu Feb 07 10:03:04 2008 +0000
@@ -26,7 +26,7 @@
     m_minMIDIPitch = 12;
     m_maxMIDIPitch = 96;
     m_tuningFrequency = 440;
-    m_normalise = MathUtilities::NormaliseUnitMax;
+    m_normalise = MathUtilities::NormaliseNone;
     m_bpo = 12;
 
     setupConfig();
@@ -132,7 +132,7 @@
     desc.unit = "bins";
     desc.description = "Number of constant-Q transform bins per octave, and the number of bins for the chromagram outputs";
     desc.minValue = 2;
-    desc.maxValue = 36;
+    desc.maxValue = 48;
     desc.defaultValue = 12;
     desc.isQuantized = true;
     desc.quantizeStep = 1;
@@ -144,7 +144,7 @@
     desc.description = "Normalization for each chromagram output column";
     desc.minValue = 0;
     desc.maxValue = 2;
-    desc.defaultValue = 2;
+    desc.defaultValue = 0;
     desc.isQuantized = true;
     desc.quantizeStep = 1;
     desc.valueNames.push_back("None");
--- a/plugins/ConstantQSpectrogram.cpp	Fri Feb 01 16:57:22 2008 +0000
+++ b/plugins/ConstantQSpectrogram.cpp	Thu Feb 07 10:03:04 2008 +0000
@@ -27,7 +27,7 @@
     m_minMIDIPitch = 12;
     m_maxMIDIPitch = 96;
     m_tuningFrequency = 440;
-    m_normalized = true;
+    m_normalized = false;
     m_bpo = 12;
 
     setupConfig();
@@ -132,7 +132,7 @@
     desc.unit = "bins";
     desc.description = "Number of constant-Q transform bins per octave";
     desc.minValue = 2;
-    desc.maxValue = 36;
+    desc.maxValue = 48;
     desc.defaultValue = 12;
     desc.isQuantized = true;
     desc.quantizeStep = 1;
--- a/plugins/KeyDetect.cpp	Fri Feb 01 16:57:22 2008 +0000
+++ b/plugins/KeyDetect.cpp	Thu Feb 07 10:03:04 2008 +0000
@@ -250,9 +250,9 @@
     for (int i = 0; i < 24; ++i) {
         if (i == 12) d.binNames.push_back(" ");
         int idx = conversion[i];
-        std::string label = getKeyName(idx > 12 ? idx-12 : idx);
-        if (i < 12) label += " major";
-        else label += " minor";
+        std::string label = getKeyName(idx > 12 ? idx-12 : idx, 
+                                       i >= 12,
+                                       true);
         d.binNames.push_back(label);
     }
     list.push_back(d);
@@ -276,7 +276,7 @@
 
 //    int key = (m_getKeyMode->process(m_inputFrame) % 24);
     int key = m_getKeyMode->process(m_inputFrame);
-    int minor = m_getKeyMode->isModeMinor(key);
+    bool minor = m_getKeyMode->isModeMinor(key);
     int tonic = key;
     if (tonic > 12) tonic -= 12;
 
@@ -288,31 +288,24 @@
         feature.hasTimestamp = false;
 //        feature.timestamp = now;
         feature.values.push_back((float)tonic);
-        feature.label = getKeyName(tonic);
+        feature.label = getKeyName(tonic, minor, false);
         returnFeatures[0].push_back(feature); // tonic
     }
 
     if (minor != (m_getKeyMode->isModeMinor(m_prevKey))) {
         Feature feature;
         feature.hasTimestamp = false;
-        feature.values.push_back((float)minor);
+        feature.values.push_back(minor ? 1.f : 0.f);
         feature.label = (minor ? "Minor" : "Major");
         returnFeatures[1].push_back(feature); // mode
     }
 
     if (key != m_prevKey) {
         Feature feature;
-//        feature.hasTimestamp = true;
         feature.hasTimestamp = false;
-//        feature.timestamp = now;
         feature.values.push_back((float)key);
-        feature.label = std::string(getKeyName(tonic));
-        if (minor) feature.label += " minor";
-        else feature.label += " major";
+        feature.label = getKeyName(tonic, minor, true);
         returnFeatures[2].push_back(feature); // key
-//		cerr << "int key = "<<key<<endl;
-//		cerr << "int tonic = "<<tonic<<endl;
-//		cerr << "feature label = "<<feature.label<<endl;
     }
 
     m_prevKey = key;
@@ -361,19 +354,36 @@
     return m_blockSize;
 }
 
-const char *
-KeyDetector::getKeyName(int index) const
+std::string
+KeyDetector::getKeyName(int index, bool minor, bool includeMajMin) const
 {
     // Keys are numbered with 1 => C, 12 => B
     // This is based on chromagram base set to a C in qm-dsp's GetKeyMode.cpp
-    static const char *names[] = {
-        "C", "C# / Db", "D", "D# / Eb",
+
+    static const char *namesMajor[] = {
+        "C", "Db", "D", "Eb",
         "E", "F", "F# / Gb", "G",
-        "G# / Ab", "A", "A# / Bb", "B"
+        "Ab", "A", "Bb", "B"
     };
+
+    static const char *namesMinor[] = {
+        "C", "Db", "D", "D# / Eb",
+        "E", "F", "Gb", "G",
+        "Ab", "A", "A#", "B"
+    };
+
     if (index < 1 || index > 12) {
         return "(unknown)";
     }
-    return names[index - 1]; //'-1' because our names array starts from 0 
+
+    std::string base;
+
+    if (minor) base = namesMinor[index - 1];
+    else base = namesMajor[index - 1];
+
+    if (!includeMajMin) return base;
+
+    if (minor) return base + " minor";
+    else return base + " major";
 }
 
--- a/plugins/KeyDetect.h	Fri Feb 01 16:57:22 2008 +0000
+++ b/plugins/KeyDetect.h	Thu Feb 07 10:03:04 2008 +0000
@@ -79,7 +79,7 @@
     float m_tuningFrequency;
     int m_length;
 
-    const char *getKeyName(int index) const;
+    std::string getKeyName(int index, bool minor, bool includeMajMin) const;
 
     GetKeyMode* m_getKeyMode;
     double* m_inputFrame;
--- a/qm-vamp-plugins.cat	Fri Feb 01 16:57:22 2008 +0000
+++ b/qm-vamp-plugins.cat	Thu Feb 07 10:03:04 2008 +0000
@@ -6,4 +6,4 @@
 vamp:qm-vamp-plugins:qm-keydetector::Key and Tonality
 vamp:qm-vamp-plugins:qm-segmenter::Classification
 vamp:qm-vamp-plugins:qm-similarity::Classification
-vamp-qm-vamp-plugins:qm-mfcc::Low Level Features
+vamp:qm-vamp-plugins:qm-mfcc::Low Level Features
--- a/qm-vamp-plugins.pro	Fri Feb 01 16:57:22 2008 +0000
+++ b/qm-vamp-plugins.pro	Thu Feb 07 10:03:04 2008 +0000
@@ -4,7 +4,7 @@
 CONFIG += plugin warn_on release
 CONFIG -= qt
 
-linux-g++:QMAKE_CXXFLAGS_RELEASE += -DNDEBUG -O3 -march=pentium3 -mfpmath=sse -msse -ffast-math
+linux-g++:QMAKE_CXXFLAGS_RELEASE += -DNDEBUG -O3 -fno-exceptions -fPIC -march=pentium3 -mfpmath=sse -msse -ffast-math
 
 OBJECTS_DIR = tmp_obj
 MOC_DIR = tmp_moc