tone-generator/tone.hpp

30 lines
399 B
C++

#pragma once
#include <inttypes.h>
struct Tone {
uint32_t phase;
uint16_t frequency;
uint8_t amplitude;
inline static int8_t sin_lookup[256];
static void init();
inline bool active() const {
return amplitude > 0;
}
inline void update(uint32_t t) {
phase += t * frequency;
}
inline int get() const {
uint8_t id = phase >> 12;
return (int)sin_lookup[id] * amplitude;
}
};