tone-generator/tone.hpp

31 lines
437 B
C++

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