tone-generator/tone.hpp

31 lines
425 B
C++
Raw Normal View History

2024-08-19 22:43:24 +10:00
#pragma once
#include <inttypes.h>
#include <avr/pgmspace.h>
struct Tone {
uint32_t phase;
uint16_t frequency;
uint8_t amplitude;
inline static int8_t sin_lookup[256];
static void init();
2024-08-19 22:43:24 +10:00
inline bool active() const {
return amplitude > 0;
}
inline void update(uint32_t t) {
phase += t * frequency;
}
inline int get() const {
2024-08-19 22:43:24 +10:00
uint8_t id = phase >> 12;
return (int)sin_lookup[id] * amplitude;
2024-08-19 22:43:24 +10:00
}
};