diff options
author | RJ Ryan <rryan@mixxx.org> | 2013-06-19 00:53:59 -0400 |
---|---|---|
committer | RJ Ryan <rryan@mixxx.org> | 2013-06-19 00:53:59 -0400 |
commit | c674e0728888f83b789e6a97552c5cdd0e6e0d7a (patch) | |
tree | 007be059d7d2753707e9195e6c9949fb90cddf54 /src/track/keys.h | |
parent | 17028386566248716d2f0527a43f723717b1e14a (diff) | |
parent | 25d57b59dff3947212909634864dd82365c9606b (diff) |
Merge branch 'master' into features_key
Conflicts:
src/bpm/bpmscheme.cpp
src/bpm/bpmscheme.h
src/bpm/wavesegmentation.cpp
src/bpm/wavesegmentation.h
src/segmentation.cpp
src/segmentation.h
src/tonal/ChordCorrelator.hxx
src/tonal/ChordExtractor.hxx
src/tonal/ChordSegmentator.hxx
src/tonal/CircularPeakPicking.hxx
src/tonal/CircularPeakTunner.hxx
src/tonal/CircularPeaksToPCP.hxx
src/tonal/ConstantQFolder.cxx
src/tonal/ConstantQFolder.hxx
src/tonal/ConstantQTransform.cxx
src/tonal/ConstantQTransform.hxx
src/tonal/DiscontinuousSegmentation.hxx
src/tonal/FourierTransform.cxx
src/tonal/FourierTransform.hxx
src/tonal/InstantTunningEstimator.hxx
src/tonal/PCPSmother.hxx
src/tonal/Segmentation.cxx
src/tonal/Segmentation.hxx
src/tonal/SemitoneCenterFinder.hxx
src/tonal/TonalAnalysis.cxx
src/tonal/TonalAnalysis.hxx
src/tonal/tonalanalyser.cpp
src/tonal/tonalanalyser.h
Diffstat (limited to 'src/track/keys.h')
-rw-r--r-- | src/track/keys.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/track/keys.h b/src/track/keys.h new file mode 100644 index 0000000000..e6662735b8 --- /dev/null +++ b/src/track/keys.h @@ -0,0 +1,61 @@ +#ifndef KEYS_H +#define KEYS_H + +#include <QByteArray> +#include <QMutex> +#include <QPair> +#include <QVector> + +#include "proto/keys.pb.h" + +#define KEY_MAP_VERSION "KeyMap-1.0" + +typedef QVector<QPair<mixxx::track::io::key::ChromaticKey, double> > KeyChangeList; + +class KeyFactory; + +class Keys { + public: + explicit Keys(const QByteArray* pByteArray=NULL); + Keys(const Keys& other); + virtual ~Keys(); + + Keys& operator=(const Keys& other); + + // Serialization + virtual QByteArray* toByteArray() const; + + // A string representing the version of the key-processing code that + // produced this Keys instance. Used by KeysFactory for associating a given + // serialization with the version that produced it. + virtual QString getVersion() const; + + // A sub-version can be used to represent the preferences used to generate + // the keys object. + virtual QString getSubVersion() const; + virtual void setSubVersion(QString subVersion); + + bool isValid() const; + + //////////////////////////////////////////////////////////////////////////// + // Key calculations + //////////////////////////////////////////////////////////////////////////// + + // Return the average key over the entire track if the key is valid. + virtual mixxx::track::io::key::ChromaticKey getGlobalKey() const; + virtual QString getGlobalKeyText() const; + + private: + Keys(const mixxx::track::io::key::KeyMap& m_keyMap); + + void readByteArray(const QByteArray* pByteArray); + + mutable QMutex m_mutex; + QString m_subVersion; + mixxx::track::io::key::KeyMap m_keyMap; + + // For private constructor access. + friend class KeyFactory; +}; + +#endif /* KEYS_H */ |