tone-generator/tone.hpp

31 lines
437 B
C++
Raw Normal View History

2024-08-19 22:43:24 +10:00
#pragma once
#include <inttypes.h>
2024-10-01 13:39:28 +10:00
#include "util.hpp"
2024-08-19 22:43:24 +10:00
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
2024-10-01 13:39:28 +10:00
inline bool active() const AW_IN {
2024-08-19 22:43:24 +10:00
return amplitude > 0;
}
2024-10-01 13:39:28 +10:00
inline void update(uint32_t t) AW_IN {
2024-08-19 22:43:24 +10:00
phase += t * frequency;
}
2024-10-01 13:39:28 +10:00
inline int get() const AW_IN {
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
}
};