1 #pragma once 2 3 #include <QObject> 4 5 #include "analyzer/plugins/analyzerplugin.h" 6 #include "util/memory.h" 7 #include "util/samplebuffer.h" 8 9 namespace soundtouch { 10 class BPMDetect; 11 } // namespace soundtouch 12 13 namespace mixxx { 14 15 class AnalyzerSoundTouchBeats : public AnalyzerBeatsPlugin { 16 public: pluginInfo()17 static AnalyzerPluginInfo pluginInfo() { 18 return AnalyzerPluginInfo( 19 "mixxxbpmdetection", 20 "Olli Parviainen", 21 QObject::tr("SoundTouch BPM Detector (Legacy)"), 22 false); 23 } 24 25 AnalyzerSoundTouchBeats(); 26 ~AnalyzerSoundTouchBeats() override; 27 info()28 AnalyzerPluginInfo info() const override { 29 return pluginInfo(); 30 } 31 32 bool initialize(int samplerate) override; 33 bool processSamples(const CSAMPLE* pIn, const int iLen) override; 34 bool finalize() override; 35 supportsBeatTracking()36 bool supportsBeatTracking() const override { 37 return false; 38 } 39 getBpm()40 float getBpm() const override { 41 return m_fResultBpm; 42 } 43 44 private: 45 std::unique_ptr<soundtouch::BPMDetect> m_pSoundTouch; 46 SampleBuffer m_downmixBuffer; 47 float m_fResultBpm; 48 }; 49 50 } // namespace mixxx 51