RISC-V/V003/keyboard/generator.h
2024-05-07 11:46:49 +02:00

22 lines
514 B
C++

#ifndef GENERATOR_H
#define GENERATOR_H
#include "oneway.h"
extern "C" const int16_t sin_tab[];
/* Něco jako DDS, přesná frekvence není řešena (závisí na TIM1). */
class Generator {
unsigned base, freq;
public:
explicit Generator () noexcept : base(0u), freq (0u) {};
int16_t step () {
const int16_t r = sin_tab [base >> 24];
base += freq;
return r;
}
void set (const unsigned f) {
if (!f) base = 0u;
freq = f;
}
protected:
};
#endif // GENERATOR_H