summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/beattracker.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--plugin/src/Caelestia/beattracker.cpp26
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 {