summaryrefslogtreecommitdiffstats
path: root/src/analyzer
diff options
context:
space:
mode:
authorJan Holthuis <jholthuis@mixxx.org>2021-07-01 22:02:51 +0200
committerJan Holthuis <jholthuis@mixxx.org>2021-07-02 18:51:52 +0200
commit96e0d644ed71ead4c3c438ad74cd15e72cdcdd7c (patch)
tree276e278230f153121ea29ab46eb134401e8f82ee /src/analyzer
parentdb345099907a0e2e1c1609906c1e9114e9162d1b (diff)
Beats: Add mixxx::Bpm in BeatUtils and BeatGrid/BeatMap classes
Diffstat (limited to 'src/analyzer')
-rw-r--r--src/analyzer/analyzerbeats.cpp2
-rw-r--r--src/analyzer/plugins/analyzerplugin.h5
-rw-r--r--src/analyzer/plugins/analyzersoundtouchbeats.cpp7
-rw-r--r--src/analyzer/plugins/analyzersoundtouchbeats.h7
4 files changed, 11 insertions, 10 deletions
diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp
index 14c91c2566..1b7dcb0939 100644
--- a/src/analyzer/analyzerbeats.cpp
+++ b/src/analyzer/analyzerbeats.cpp
@@ -230,7 +230,7 @@ void AnalyzerBeats::storeResults(TrackPointer pTrack) {
qDebug() << "AnalyzerBeats plugin detected" << beats.size()
<< "beats. Average BPM:" << (pBeats ? pBeats->getBpm() : 0.0);
} else {
- float bpm = m_pPlugin->getBpm();
+ mixxx::Bpm bpm = m_pPlugin->getBpm();
qDebug() << "AnalyzerBeats plugin detected constant BPM: " << bpm;
pBeats = BeatFactory::makeBeatGrid(m_sampleRate, bpm, mixxx::audio::kStartFramePos);
}
diff --git a/src/analyzer/plugins/analyzerplugin.h b/src/analyzer/plugins/analyzerplugin.h
index cc6ec54b84..5ebc6ef62a 100644
--- a/src/analyzer/plugins/analyzerplugin.h
+++ b/src/analyzer/plugins/analyzerplugin.h
@@ -4,6 +4,7 @@
#include "audio/frame.h"
#include "track/beats.h"
+#include "track/bpm.h"
#include "track/keys.h"
#include "util/types.h"
@@ -69,8 +70,8 @@ class AnalyzerBeatsPlugin : public AnalyzerPlugin {
~AnalyzerBeatsPlugin() override = default;
virtual bool supportsBeatTracking() const = 0;
- virtual float getBpm() const {
- return 0.0f;
+ virtual mixxx::Bpm getBpm() const {
+ return mixxx::Bpm();
}
virtual QVector<mixxx::audio::FramePos> getBeats() const {
return {};
diff --git a/src/analyzer/plugins/analyzersoundtouchbeats.cpp b/src/analyzer/plugins/analyzersoundtouchbeats.cpp
index 8d122a3b29..21e4c926d2 100644
--- a/src/analyzer/plugins/analyzersoundtouchbeats.cpp
+++ b/src/analyzer/plugins/analyzersoundtouchbeats.cpp
@@ -8,15 +8,14 @@
namespace mixxx {
AnalyzerSoundTouchBeats::AnalyzerSoundTouchBeats()
- : m_downmixBuffer(kAnalysisFramesPerChunk), // mono, i.e. 1 sample per frame
- m_fResultBpm(0.0f) {
+ : m_downmixBuffer(kAnalysisFramesPerChunk) {
}
AnalyzerSoundTouchBeats::~AnalyzerSoundTouchBeats() {
}
bool AnalyzerSoundTouchBeats::initialize(int samplerate) {
- m_fResultBpm = 0.0f;
+ m_resultBpm = mixxx::Bpm();
m_pSoundTouch = std::make_unique<soundtouch::BPMDetect>(2, samplerate);
return true;
}
@@ -42,7 +41,7 @@ bool AnalyzerSoundTouchBeats::finalize() {
if (!m_pSoundTouch) {
return false;
}
- m_fResultBpm = m_pSoundTouch->getBpm();
+ m_resultBpm = mixxx::Bpm(m_pSoundTouch->getBpm());
m_pSoundTouch.reset();
return true;
}
diff --git a/src/analyzer/plugins/analyzersoundtouchbeats.h b/src/analyzer/plugins/analyzersoundtouchbeats.h
index 1c8e26a359..34a1b1c8d2 100644
--- a/src/analyzer/plugins/analyzersoundtouchbeats.h
+++ b/src/analyzer/plugins/analyzersoundtouchbeats.h
@@ -37,14 +37,15 @@ class AnalyzerSoundTouchBeats : public AnalyzerBeatsPlugin {
return false;
}
- float getBpm() const override {
- return m_fResultBpm;
+ mixxx::Bpm getBpm() const override {
+ return m_resultBpm;
}
private:
std::unique_ptr<soundtouch::BPMDetect> m_pSoundTouch;
+ /// mono, i.e. 1 sample per frame
SampleBuffer m_downmixBuffer;
- float m_fResultBpm;
+ mixxx::Bpm m_resultBpm;
};
} // namespace mixxx