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