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