diff --git a/src/analyzer/analyzer.h b/src/analyzer/analyzer.h index 2704717aa50..815514c56f8 100644 --- a/src/analyzer/analyzer.h +++ b/src/analyzer/analyzer.h @@ -1,5 +1,6 @@ #pragma once +#include "audio/types.h" #include "util/assert.h" #include "util/types.h" @@ -21,7 +22,9 @@ class Analyzer { // 1. Check if the track needs to be analyzed, otherwise return false. // 2. Perform the initialization and return true on success. // 3. If the initialization failed log the internal error and return false. - virtual bool initialize(TrackPointer tio, int sampleRate, int totalSamples) = 0; + virtual bool initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) = 0; ///////////////////////////////////////////////////////////////////////// // All following methods will only be invoked after initialize() @@ -66,7 +69,7 @@ class AnalyzerWithState final { return m_active; } - bool initialize(TrackPointer tio, int sampleRate, int totalSamples) { + bool initialize(TrackPointer tio, mixxx::audio::SampleRate sampleRate, int totalSamples) { DEBUG_ASSERT(!m_active); return m_active = m_analyzer->initialize(tio, sampleRate, totalSamples); } diff --git a/src/analyzer/analyzerbeats.cpp b/src/analyzer/analyzerbeats.cpp index 327a2d94868..173bf1af46e 100644 --- a/src/analyzer/analyzerbeats.cpp +++ b/src/analyzer/analyzerbeats.cpp @@ -42,7 +42,9 @@ AnalyzerBeats::AnalyzerBeats(UserSettingsPointer pConfig, bool enforceBpmDetecti m_iCurrentSample(0) { } -bool AnalyzerBeats::initialize(TrackPointer pTrack, int sampleRate, int totalSamples) { +bool AnalyzerBeats::initialize(TrackPointer pTrack, + mixxx::audio::SampleRate sampleRate, + int totalSamples) { if (totalSamples == 0) { return false; } diff --git a/src/analyzer/analyzerbeats.h b/src/analyzer/analyzerbeats.h index 0e4e44f74b0..e1a375dd9cc 100644 --- a/src/analyzer/analyzerbeats.h +++ b/src/analyzer/analyzerbeats.h @@ -26,7 +26,9 @@ class AnalyzerBeats : public Analyzer { static QList availablePlugins(); static mixxx::AnalyzerPluginInfo defaultPlugin(); - bool initialize(TrackPointer pTrack, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer pTrack, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE *pIn, const int iLen) override; void storeResults(TrackPointer tio) override; void cleanup() override; diff --git a/src/analyzer/analyzerebur128.cpp b/src/analyzer/analyzerebur128.cpp index c8fee49b7b7..62fd541a8aa 100644 --- a/src/analyzer/analyzerebur128.cpp +++ b/src/analyzer/analyzerebur128.cpp @@ -21,7 +21,7 @@ AnalyzerEbur128::~AnalyzerEbur128() { } bool AnalyzerEbur128::initialize(TrackPointer tio, - int sampleRate, + mixxx::audio::SampleRate sampleRate, int totalSamples) { if (m_rgSettings.isAnalyzerDisabled(2, tio) || totalSamples == 0) { qDebug() << "Skipping AnalyzerEbur128"; diff --git a/src/analyzer/analyzerebur128.h b/src/analyzer/analyzerebur128.h index 5cc794425d1..07ffca23ff2 100644 --- a/src/analyzer/analyzerebur128.h +++ b/src/analyzer/analyzerebur128.h @@ -14,7 +14,9 @@ class AnalyzerEbur128 : public Analyzer { return rgSettings.isAnalyzerEnabled(2); } - bool initialize(TrackPointer tio, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; void storeResults(TrackPointer tio) override; void cleanup() override; diff --git a/src/analyzer/analyzergain.cpp b/src/analyzer/analyzergain.cpp index 56a95609d07..0451afc759a 100644 --- a/src/analyzer/analyzergain.cpp +++ b/src/analyzer/analyzergain.cpp @@ -21,13 +21,15 @@ AnalyzerGain::~AnalyzerGain() { delete m_pReplayGain; } -bool AnalyzerGain::initialize(TrackPointer tio, int sampleRate, int totalSamples) { +bool AnalyzerGain::initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) { if (m_rgSettings.isAnalyzerDisabled(1, tio) || totalSamples == 0) { qDebug() << "Skipping AnalyzerGain"; return false; } - return m_pReplayGain->initialise((long)sampleRate, 2); + return m_pReplayGain->initialise(static_cast(sampleRate), 2); } void AnalyzerGain::cleanup() { diff --git a/src/analyzer/analyzergain.h b/src/analyzer/analyzergain.h index ddc2d6df578..1a0344da0c4 100644 --- a/src/analyzer/analyzergain.h +++ b/src/analyzer/analyzergain.h @@ -21,7 +21,9 @@ class AnalyzerGain : public Analyzer { return rgSettings.isAnalyzerEnabled(1); } - bool initialize(TrackPointer tio, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; void storeResults(TrackPointer tio) override; void cleanup() override; diff --git a/src/analyzer/analyzerkey.cpp b/src/analyzer/analyzerkey.cpp index 5408f14ea3f..b92d6729cc1 100644 --- a/src/analyzer/analyzerkey.cpp +++ b/src/analyzer/analyzerkey.cpp @@ -41,7 +41,9 @@ AnalyzerKey::AnalyzerKey(const KeyDetectionSettings& keySettings) m_bPreferencesReanalyzeEnabled(false) { } -bool AnalyzerKey::initialize(TrackPointer tio, int sampleRate, int totalSamples) { +bool AnalyzerKey::initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) { if (totalSamples == 0) { return false; } diff --git a/src/analyzer/analyzerkey.h b/src/analyzer/analyzerkey.h index 504df21705a..a4e40c22c20 100644 --- a/src/analyzer/analyzerkey.h +++ b/src/analyzer/analyzerkey.h @@ -19,7 +19,9 @@ class AnalyzerKey : public Analyzer { static QList availablePlugins(); static mixxx::AnalyzerPluginInfo defaultPlugin(); - bool initialize(TrackPointer tio, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE *pIn, const int iLen) override; void storeResults(TrackPointer tio) override; void cleanup() override; diff --git a/src/analyzer/analyzersilence.cpp b/src/analyzer/analyzersilence.cpp index 1ded54a6103..625afd0d190 100644 --- a/src/analyzer/analyzersilence.cpp +++ b/src/analyzer/analyzersilence.cpp @@ -32,7 +32,9 @@ AnalyzerSilence::AnalyzerSilence(UserSettingsPointer pConfig) m_iSignalEnd(-1) { } -bool AnalyzerSilence::initialize(TrackPointer pTrack, int sampleRate, int totalSamples) { +bool AnalyzerSilence::initialize(TrackPointer pTrack, + mixxx::audio::SampleRate sampleRate, + int totalSamples) { Q_UNUSED(sampleRate); Q_UNUSED(totalSamples); diff --git a/src/analyzer/analyzersilence.h b/src/analyzer/analyzersilence.h index e9950fa0e76..8e3bf0784ad 100644 --- a/src/analyzer/analyzersilence.h +++ b/src/analyzer/analyzersilence.h @@ -10,7 +10,9 @@ class AnalyzerSilence : public Analyzer { explicit AnalyzerSilence(UserSettingsPointer pConfig); ~AnalyzerSilence() override = default; - bool initialize(TrackPointer pTrack, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer pTrack, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; void storeResults(TrackPointer pTrack) override; void cleanup() override; diff --git a/src/analyzer/analyzerwaveform.cpp b/src/analyzer/analyzerwaveform.cpp index f3ab634f86f..200f85b2e0d 100644 --- a/src/analyzer/analyzerwaveform.cpp +++ b/src/analyzer/analyzerwaveform.cpp @@ -34,7 +34,9 @@ AnalyzerWaveform::~AnalyzerWaveform() { destroyFilters(); } -bool AnalyzerWaveform::initialize(TrackPointer tio, int sampleRate, int totalSamples) { +bool AnalyzerWaveform::initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) { if (totalSamples == 0) { qWarning() << "AnalyzerWaveform::initialize - no waveform/waveform summary"; return false; @@ -145,7 +147,7 @@ bool AnalyzerWaveform::shouldAnalyze(TrackPointer tio) const { return true; } -void AnalyzerWaveform::createFilters(int sampleRate) { +void AnalyzerWaveform::createFilters(mixxx::audio::SampleRate sampleRate) { // m_filter[Low] = new EngineFilterButterworth8(FILTER_LOWPASS, sampleRate, 200); // m_filter[Mid] = new EngineFilterButterworth8(FILTER_BANDPASS, sampleRate, 200, 2000); // m_filter[High] = new EngineFilterButterworth8(FILTER_HIGHPASS, sampleRate, 2000); diff --git a/src/analyzer/analyzerwaveform.h b/src/analyzer/analyzerwaveform.h index 85e4e05bb5d..0c19875c69a 100644 --- a/src/analyzer/analyzerwaveform.h +++ b/src/analyzer/analyzerwaveform.h @@ -140,7 +140,9 @@ class AnalyzerWaveform : public Analyzer { const QSqlDatabase& dbConnection); ~AnalyzerWaveform() override; - bool initialize(TrackPointer tio, int sampleRate, int totalSamples) override; + bool initialize(TrackPointer tio, + mixxx::audio::SampleRate sampleRate, + int totalSamples) override; bool processSamples(const CSAMPLE* buffer, const int bufferLength) override; void storeResults(TrackPointer tio) override; void cleanup() override; @@ -151,7 +153,7 @@ class AnalyzerWaveform : public Analyzer { void storeCurrentStridePower(); void resetCurrentStride(); - void createFilters(int sampleRate); + void createFilters(mixxx::audio::SampleRate sampleRate); void destroyFilters(); void storeIfGreater(float* pDest, float source); diff --git a/src/analyzer/plugins/analyzerkeyfinder.cpp b/src/analyzer/plugins/analyzerkeyfinder.cpp index 97b4ee57ba9..85a7efddf1c 100644 --- a/src/analyzer/plugins/analyzerkeyfinder.cpp +++ b/src/analyzer/plugins/analyzerkeyfinder.cpp @@ -80,8 +80,8 @@ AnalyzerPluginInfo AnalyzerKeyFinder::pluginInfo() { return AnalyzerPluginInfo(pluginId, pluginAuthor, pluginName, false); } -bool AnalyzerKeyFinder::initialize(int samplerate) { - m_audioData.setFrameRate(samplerate); +bool AnalyzerKeyFinder::initialize(mixxx::audio::SampleRate sampleRate) { + m_audioData.setFrameRate(sampleRate); m_audioData.setChannels(kAnalysisChannels); return true; } diff --git a/src/analyzer/plugins/analyzerkeyfinder.h b/src/analyzer/plugins/analyzerkeyfinder.h index 9de531a033a..237608d98d8 100644 --- a/src/analyzer/plugins/analyzerkeyfinder.h +++ b/src/analyzer/plugins/analyzerkeyfinder.h @@ -19,7 +19,7 @@ class AnalyzerKeyFinder : public AnalyzerKeyPlugin { return pluginInfo(); } - bool initialize(int samplerate) override; + bool initialize(mixxx::audio::SampleRate sampleRate) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; bool finalize() override; diff --git a/src/analyzer/plugins/analyzerplugin.h b/src/analyzer/plugins/analyzerplugin.h index f1fb18c5946..98cbd078d4f 100644 --- a/src/analyzer/plugins/analyzerplugin.h +++ b/src/analyzer/plugins/analyzerplugin.h @@ -60,7 +60,7 @@ class AnalyzerPlugin { } virtual AnalyzerPluginInfo info() const = 0; - virtual bool initialize(int samplerate) = 0; + virtual bool initialize(mixxx::audio::SampleRate sampleRate) = 0; virtual bool processSamples(const CSAMPLE* pIn, const int iLen) = 0; virtual bool finalize() = 0; }; diff --git a/src/analyzer/plugins/analyzerqueenmarybeats.cpp b/src/analyzer/plugins/analyzerqueenmarybeats.cpp index 7ee5ba5d871..f259d6f73e4 100644 --- a/src/analyzer/plugins/analyzerqueenmarybeats.cpp +++ b/src/analyzer/plugins/analyzerqueenmarybeats.cpp @@ -39,22 +39,21 @@ DFConfig makeDetectionFunctionConfig(int stepSizeFrames, int windowSize) { } // namespace AnalyzerQueenMaryBeats::AnalyzerQueenMaryBeats() - : m_iSampleRate(0), - m_windowSize(0), + : m_windowSize(0), m_stepSizeFrames(0) { } AnalyzerQueenMaryBeats::~AnalyzerQueenMaryBeats() { } -bool AnalyzerQueenMaryBeats::initialize(int samplerate) { +bool AnalyzerQueenMaryBeats::initialize(mixxx::audio::SampleRate sampleRate) { m_detectionResults.clear(); - m_iSampleRate = samplerate; - m_stepSizeFrames = static_cast(m_iSampleRate * kStepSecs); - m_windowSize = MathUtilities::nextPowerOfTwo(m_iSampleRate / kMaximumBinSizeHz); + m_sampleRate = sampleRate; + m_stepSizeFrames = static_cast(m_sampleRate * kStepSecs); + m_windowSize = MathUtilities::nextPowerOfTwo(m_sampleRate / kMaximumBinSizeHz); m_pDetectionFunction = std::make_unique( makeDetectionFunctionConfig(m_stepSizeFrames, m_windowSize)); - qDebug() << "input sample rate is " << m_iSampleRate << ", step size is " << m_stepSizeFrames; + qDebug() << "input sample rate is " << m_sampleRate << ", step size is " << m_stepSizeFrames; m_helper.initialize( m_windowSize, m_stepSizeFrames, [this](double* pWindow, size_t) { @@ -97,7 +96,7 @@ bool AnalyzerQueenMaryBeats::finalize() { beatPeriod.push_back(0.0); } - TempoTrackV2 tt(m_iSampleRate, m_stepSizeFrames); + TempoTrackV2 tt(m_sampleRate, m_stepSizeFrames); tt.calculateBeatPeriod(df, beatPeriod, tempi); std::vector beats; diff --git a/src/analyzer/plugins/analyzerqueenmarybeats.h b/src/analyzer/plugins/analyzerqueenmarybeats.h index 59dc7542753..bab39d63e24 100644 --- a/src/analyzer/plugins/analyzerqueenmarybeats.h +++ b/src/analyzer/plugins/analyzerqueenmarybeats.h @@ -32,7 +32,7 @@ class AnalyzerQueenMaryBeats : public AnalyzerBeatsPlugin { return pluginInfo(); } - bool initialize(int samplerate) override; + bool initialize(mixxx::audio::SampleRate sampleRate) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; bool finalize() override; @@ -47,7 +47,7 @@ class AnalyzerQueenMaryBeats : public AnalyzerBeatsPlugin { private: std::unique_ptr m_pDetectionFunction; DownmixAndOverlapHelper m_helper; - int m_iSampleRate; + mixxx::audio::SampleRate m_sampleRate; int m_windowSize; int m_stepSizeFrames; std::vector m_detectionResults; diff --git a/src/analyzer/plugins/analyzerqueenmarykey.cpp b/src/analyzer/plugins/analyzerqueenmarykey.cpp index 59336996064..8f6a9c59394 100644 --- a/src/analyzer/plugins/analyzerqueenmarykey.cpp +++ b/src/analyzer/plugins/analyzerqueenmarykey.cpp @@ -27,7 +27,7 @@ AnalyzerQueenMaryKey::AnalyzerQueenMaryKey() AnalyzerQueenMaryKey::~AnalyzerQueenMaryKey() { } -bool AnalyzerQueenMaryKey::initialize(int samplerate) { +bool AnalyzerQueenMaryKey::initialize(mixxx::audio::SampleRate sampleRate) { m_prevKey = mixxx::track::io::key::INVALID; m_resultKeys.clear(); m_currentFrame = 0; @@ -42,17 +42,17 @@ bool AnalyzerQueenMaryKey::initialize(int samplerate) { // 8 = normal chroma overlap int decimationFactor; - Config(double _sampleRate, float _tuningFrequency) : - sampleRate(_sampleRate), - tuningFrequency(_tuningFrequency), - hpcpAverage(10), - medianAverage(10), - frameOverlapFactor(1), - decimationFactor(8) { + Config(mixxx::audio::SampleRate _sampleRate, float _tuningFrequency) + : sampleRate(_sampleRate.toDouble()), + tuningFrequency(_tuningFrequency), + hpcpAverage(10), + medianAverage(10), + frameOverlapFactor(1), + decimationFactor(8) { } }; - GetKeyMode::Config config(samplerate, kTuningFrequencyHertz); + GetKeyMode::Config config(sampleRate, kTuningFrequencyHertz); m_pKeyMode = std::make_unique(config); size_t windowSize = m_pKeyMode->getBlockSize(); size_t stepSize = m_pKeyMode->getHopSize(); diff --git a/src/analyzer/plugins/analyzerqueenmarykey.h b/src/analyzer/plugins/analyzerqueenmarykey.h index ea9d014f6fc..5883e96c3c8 100644 --- a/src/analyzer/plugins/analyzerqueenmarykey.h +++ b/src/analyzer/plugins/analyzerqueenmarykey.h @@ -32,7 +32,7 @@ class AnalyzerQueenMaryKey : public AnalyzerKeyPlugin { return pluginInfo(); } - bool initialize(int samplerate) override; + bool initialize(mixxx::audio::SampleRate sampleRate) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; bool finalize() override; diff --git a/src/analyzer/plugins/analyzersoundtouchbeats.cpp b/src/analyzer/plugins/analyzersoundtouchbeats.cpp index 21e4c926d26..4d490f68e6f 100644 --- a/src/analyzer/plugins/analyzersoundtouchbeats.cpp +++ b/src/analyzer/plugins/analyzersoundtouchbeats.cpp @@ -14,9 +14,9 @@ AnalyzerSoundTouchBeats::AnalyzerSoundTouchBeats() AnalyzerSoundTouchBeats::~AnalyzerSoundTouchBeats() { } -bool AnalyzerSoundTouchBeats::initialize(int samplerate) { +bool AnalyzerSoundTouchBeats::initialize(mixxx::audio::SampleRate sampleRate) { m_resultBpm = mixxx::Bpm(); - m_pSoundTouch = std::make_unique(2, samplerate); + m_pSoundTouch = std::make_unique(2, sampleRate); return true; } diff --git a/src/analyzer/plugins/analyzersoundtouchbeats.h b/src/analyzer/plugins/analyzersoundtouchbeats.h index 34a1b1c8d28..9e1fd236d3f 100644 --- a/src/analyzer/plugins/analyzersoundtouchbeats.h +++ b/src/analyzer/plugins/analyzersoundtouchbeats.h @@ -29,7 +29,7 @@ class AnalyzerSoundTouchBeats : public AnalyzerBeatsPlugin { return pluginInfo(); } - bool initialize(int samplerate) override; + bool initialize(mixxx::audio::SampleRate sampleRate) override; bool processSamples(const CSAMPLE* pIn, const int iLen) override; bool finalize() override;