#pragma once #include #include 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; } };