Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analyzer: Use mixxx::audio::SampleRate type instead of int #4089

Merged
merged 1 commit into from
Jul 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/analyzer/analyzer.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once

#include "audio/types.h"
#include "util/assert.h"
#include "util/types.h"

Expand All @@ -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()
Expand Down Expand Up @@ -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);
}
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzerbeats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzerbeats.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ class AnalyzerBeats : public Analyzer {
static QList<mixxx::AnalyzerPluginInfo> 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;
Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/analyzerebur128.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzerebur128.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 4 additions & 2 deletions src/analyzer/analyzergain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<long>(sampleRate), 2);
}

void AnalyzerGain::cleanup() {
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzergain.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzerkey.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzerkey.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ class AnalyzerKey : public Analyzer {
static QList<mixxx::AnalyzerPluginInfo> 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;
Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzersilence.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
4 changes: 3 additions & 1 deletion src/analyzer/analyzersilence.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 4 additions & 2 deletions src/analyzer/analyzerwaveform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
6 changes: 4 additions & 2 deletions src/analyzer/analyzerwaveform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);

Expand Down
4 changes: 2 additions & 2 deletions src/analyzer/plugins/analyzerkeyfinder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/plugins/analyzerkeyfinder.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/plugins/analyzerplugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down
15 changes: 7 additions & 8 deletions src/analyzer/plugins/analyzerqueenmarybeats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<int>(m_iSampleRate * kStepSecs);
m_windowSize = MathUtilities::nextPowerOfTwo(m_iSampleRate / kMaximumBinSizeHz);
m_sampleRate = sampleRate;
m_stepSizeFrames = static_cast<int>(m_sampleRate * kStepSecs);
m_windowSize = MathUtilities::nextPowerOfTwo(m_sampleRate / kMaximumBinSizeHz);
m_pDetectionFunction = std::make_unique<DetectionFunction>(
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) {
Expand Down Expand Up @@ -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<double> beats;
Expand Down
4 changes: 2 additions & 2 deletions src/analyzer/plugins/analyzerqueenmarybeats.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -47,7 +47,7 @@ class AnalyzerQueenMaryBeats : public AnalyzerBeatsPlugin {
private:
std::unique_ptr<DetectionFunction> m_pDetectionFunction;
DownmixAndOverlapHelper m_helper;
int m_iSampleRate;
mixxx::audio::SampleRate m_sampleRate;
int m_windowSize;
int m_stepSizeFrames;
std::vector<double> m_detectionResults;
Expand Down
18 changes: 9 additions & 9 deletions src/analyzer/plugins/analyzerqueenmarykey.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<GetKeyMode>(config);
size_t windowSize = m_pKeyMode->getBlockSize();
size_t stepSize = m_pKeyMode->getHopSize();
Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/plugins/analyzerqueenmarykey.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions src/analyzer/plugins/analyzersoundtouchbeats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<soundtouch::BPMDetect>(2, samplerate);
m_pSoundTouch = std::make_unique<soundtouch::BPMDetect>(2, sampleRate);
return true;
}

Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/plugins/analyzersoundtouchbeats.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down