diff options
Diffstat (limited to 'Click.h')
-rw-r--r-- | Click.h | 33 |
1 files changed, 28 insertions, 5 deletions
@@ -3,6 +3,7 @@ #include <boost/signals2.hpp> #include "config.h" +#include "BPMDetect.h" // Virtual base class // Abstraction of BPM detection / setting @@ -30,17 +31,20 @@ private: class NoteClick: public Click { public: + // signals + boost::signals2::signal<void()> signal_click; + boost::signals2::signal<void(int)> signal_bpm; + NoteClick(Config& config): m_channel(config.get_midi_channel()), - m_note(config.get_midi_note()) + m_note(config.get_midi_note()), + m_detect(1) { + m_detect.signal_bpm.connect([&](int bpm){signal_bpm(bpm);}); } virtual ~NoteClick(){} - // signals - boost::signals2::signal<void()> signal_click; - // slots void receive_note(int channel, int note, uint64_t timestamp) { @@ -48,19 +52,38 @@ public: if (true || (channel == m_channel && note == m_note)) { signal_click(); + m_detect.receive_event(); } } private: int m_channel; int m_note; + + BPMDetect m_detect; }; // Generated from MIDI Clock class ClockClick: public Click { public: - ClockClick(){} + ClockClick(): m_detect(24) + { + m_detect.signal_bpm.connect([&](int bpm){signal_bpm(bpm);}); + } + virtual ~ClockClick(){} + + // signals + boost::signals2::signal<void(int)> signal_bpm; + + // slots + void receive_clock() + { + m_detect.receive_event(); + } + +private: + BPMDetect m_detect; }; |