#ifndef _AUDIO_TIMER_H_ #define _AUDIO_TIMER_H_ class AudioTimer : public AudioStream { public: AudioTimer(void): AudioStream(1, inputQueueArray) { tick = 0; bpm = 60; steps = 4; step_function = NULL; } virtual uint32_t get_tick(void); virtual void set_bpm(uint8_t b); virtual void function(uint8_t stepping, void(*func)()); virtual void update(void); private: audio_block_t *inputQueueArray[1]; uint8_t bpm; uint8_t steps; uint16_t _steps; void (*step_function)(); volatile uint32_t tick; const float beat = AUDIO_SAMPLE_RATE_EXACT / float(AUDIO_BLOCK_SAMPLES) / 60.0; }; #endif