diff options
Diffstat (limited to 'plugin/src/Caelestia/beattracker.cpp')
| -rw-r--r-- | plugin/src/Caelestia/beattracker.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/plugin/src/Caelestia/beattracker.cpp b/plugin/src/Caelestia/beattracker.cpp index b59abd7..11938d0 100644 --- a/plugin/src/Caelestia/beattracker.cpp +++ b/plugin/src/Caelestia/beattracker.cpp @@ -6,36 +6,36 @@ namespace caelestia { -BeatWorker::BeatWorker(uint_t sampleRate, uint_t hopSize, QObject* parent) - : AudioWorker(static_cast<int>(sampleRate), static_cast<int>(hopSize), parent) - , m_tempo(new_aubio_tempo("default", 1024, hopSize, sampleRate)) - , m_in(new_fvec(hopSize)) +BeatProcessor::BeatProcessor(AudioProvider* provider, QObject* parent) + : AudioProcessor(provider, parent) + , m_tempo(new_aubio_tempo("default", 1024, static_cast<uint_t>(m_chunkSize), static_cast<uint_t>(m_sampleRate))) + , m_in(new_fvec(static_cast<uint_t>(m_chunkSize))) , m_out(new_fvec(2)) {}; -BeatWorker::~BeatWorker() { +BeatProcessor::~BeatProcessor() { del_aubio_tempo(m_tempo); del_fvec(m_in); del_fvec(m_out); } -void BeatWorker::processData() { - process(m_in->data); -} +void BeatProcessor::processChunk(const QVector<double>& chunk) { + std::transform(chunk.constBegin(), chunk.constEnd(), m_in->data, [](double d) { + return static_cast<float>(d); + }); -void BeatWorker::consumeData() { aubio_tempo_do(m_tempo, m_in, m_out); if (m_out->data[0] != 0.0f) { emit beat(aubio_tempo_get_bpm(m_tempo)); } } -BeatTracker::BeatTracker(uint_t sampleRate, uint_t hopSize, QObject* parent) - : AudioProvider(parent) +BeatTracker::BeatTracker(int sampleRate, int chunkSize, QObject* parent) + : AudioProvider(sampleRate, chunkSize, parent) , m_bpm(120) { - m_worker = new BeatWorker(sampleRate, hopSize, this); + m_processor = new BeatProcessor(this); init(); - connect(static_cast<BeatWorker*>(m_worker), &BeatWorker::beat, this, &BeatTracker::updateBpm); + connect(static_cast<BeatProcessor*>(m_processor), &BeatProcessor::beat, this, &BeatTracker::updateBpm); } smpl_t BeatTracker::bpm() const { |