1 /* Beat Tracking test via vamp-plugins 2 * analyzerbeats.h 3 * 4 * Created on: 16/mar/2011 5 * Author: Vittorio Colao 6 */ 7 8 #pragma once 9 10 #include <QHash> 11 #include <QList> 12 13 #include "analyzer/analyzer.h" 14 #include "analyzer/plugins/analyzerplugin.h" 15 #include "preferences/beatdetectionsettings.h" 16 #include "preferences/usersettings.h" 17 #include "util/memory.h" 18 19 class AnalyzerBeats : public Analyzer { 20 public: 21 explicit AnalyzerBeats( 22 UserSettingsPointer pConfig, 23 bool enforceBpmDetection = false); 24 ~AnalyzerBeats() override = default; 25 26 static QList<mixxx::AnalyzerPluginInfo> availablePlugins(); 27 static mixxx::AnalyzerPluginInfo defaultPlugin(); 28 29 bool initialize(TrackPointer pTrack, int sampleRate, int totalSamples) override; 30 bool processSamples(const CSAMPLE *pIn, const int iLen) override; 31 void storeResults(TrackPointer tio) override; 32 void cleanup() override; 33 34 private: 35 bool shouldAnalyze(TrackPointer pTrack) const; 36 static QHash<QString, QString> getExtraVersionInfo( 37 const QString& pluginId, bool bPreferencesFastAnalysis); 38 39 BeatDetectionSettings m_bpmSettings; 40 std::unique_ptr<mixxx::AnalyzerBeatsPlugin> m_pPlugin; 41 const bool m_enforceBpmDetection; 42 QString m_pluginId; 43 bool m_bPreferencesReanalyzeOldBpm; 44 bool m_bPreferencesReanalyzeImported; 45 bool m_bPreferencesFixedTempo; 46 bool m_bPreferencesFastAnalysis; 47 48 mixxx::audio::SampleRate m_sampleRate; 49 SINT m_totalSamples; 50 int m_iMaxSamplesToProcess; 51 int m_iCurrentSample; 52 }; 53