summaryrefslogtreecommitdiffstats
path: root/src/track/keys.h
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2013-06-19 00:53:59 -0400
committerRJ Ryan <rryan@mixxx.org>2013-06-19 00:53:59 -0400
commitc674e0728888f83b789e6a97552c5cdd0e6e0d7a (patch)
tree007be059d7d2753707e9195e6c9949fb90cddf54 /src/track/keys.h
parent17028386566248716d2f0527a43f723717b1e14a (diff)
parent25d57b59dff3947212909634864dd82365c9606b (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.h61
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 */