Files
z-bar-qt/Plugins/ZShell/Services/beattracker.hpp
T
Zacharias-Brohn 53fe85c455 dashboard
2026-02-14 00:14:18 +01:00

50 lines
747 B
C++

#pragma once
#include "audioprovider.hpp"
#include <aubio/aubio.h>
#include <qqmlintegration.h>
namespace ZShell::services {
class BeatProcessor : public AudioProcessor {
Q_OBJECT
public:
explicit BeatProcessor(QObject* parent = nullptr);
~BeatProcessor();
signals:
void beat(smpl_t bpm);
protected:
void process() override;
private:
aubio_tempo_t* m_tempo;
fvec_t* m_in;
fvec_t* m_out;
};
class BeatTracker : public AudioProvider {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(smpl_t bpm READ bpm NOTIFY bpmChanged)
public:
explicit BeatTracker(QObject* parent = nullptr);
[[nodiscard]] smpl_t bpm() const;
signals:
void bpmChanged();
void beat(smpl_t bpm);
private:
smpl_t m_bpm;
void updateBpm(smpl_t bpm);
};
} // namespace ZShell::services