#pragma once #include #include "util.hpp" 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 AW_IN { return amplitude > 0; } inline void update(uint32_t t) AW_IN { phase += t * frequency; } inline int get() const AW_IN { uint8_t id = phase >> 12; return (int)sin_lookup[id] * amplitude; } };