diff options
Diffstat (limited to 'Click.h')
-rw-r--r-- | Click.h | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -0,0 +1,62 @@ +#pragma once + +#include <boost/signals2.hpp> + +#include "config.h" + +// Virtual base class +// Abstraction of BPM detection / setting +class Click +{ +public: + Click(){} + virtual ~Click(){} +}; + +// Internally generated +// Configured via: BPM +class InternalClick: public Click +{ +public: + InternalClick(Config& config): m_bpm(config.get_bpm()){} + virtual ~InternalClick(){} + +private: + int m_bpm; +}; + +// Generated from MIDI notes +// Configured via channel and note to listen to +class NoteClick: public Click +{ +public: + NoteClick(Config& config): + m_channel(config.get_midi_channel()), + m_note(config.get_midi_note()) + { + } + + virtual ~NoteClick(){} + + boost::signals2::signal<void()> signal_click; + + void receive_note(int channel, int note) + { + if (true || (channel == m_channel && note == m_note)) { + signal_click(); + } + } + +private: + int m_channel; + int m_note; +}; + +// Generated from MIDI Clock +class ClockClick: public Click +{ +public: + ClockClick(){} + virtual ~ClockClick(){} +}; + |