parent
c94ae88a37
commit
62ba943135
@ -1,43 +0,0 @@ |
||||
#include <Audio.h> |
||||
#include "config.h" |
||||
#include "audio_timer.h" |
||||
|
||||
void AudioTimer::update(void) |
||||
{ |
||||
audio_block_t *in; |
||||
|
||||
in = receiveReadOnly(0); |
||||
if (in) |
||||
release(in); |
||||
|
||||
tick++; |
||||
|
||||
if (tick >= _steps) |
||||
{ |
||||
if (step_function != NULL) |
||||
(*step_function)(); |
||||
tick = 0; |
||||
} |
||||
} |
||||
|
||||
uint32_t AudioTimer::get_tick(void) |
||||
{ |
||||
return (tick); |
||||
} |
||||
|
||||
void AudioTimer::set_bpm(uint8_t b) |
||||
{ |
||||
bpm = b; |
||||
} |
||||
|
||||
void AudioTimer::function(uint8_t stepping, void(*func)()) |
||||
{ |
||||
steps = stepping; |
||||
if (func != NULL) |
||||
{ |
||||
step_function = func; |
||||
_steps = beat * float(bpm) * 4.0 / float(stepping) + 0.5; |
||||
} |
||||
else |
||||
step_function = NULL; |
||||
} |
@ -1,30 +0,0 @@ |
||||
#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 |
Loading…
Reference in new issue