#include "util.hpp" #include "tones.hpp" #include "tone.hpp" void tones::clear_all() { for(int i = 0; i < size(all); i++) { all[i] = {0, 0, 0}; } active = 0; } void tones::clear(uint8_t index) { if(index >= size(all)) { return; } all[index] = {0, 0, 0}; if(index == active - 1) { prune(index); } } void tones::set(uint8_t index, uint16_t frequency, float amplitude) { if(amplitude == 0) { return clear(index); } if(index >= size(all)) { return; } all[index].frequency = frequency; all[index].amplitude = amplitude; if(index >= tones::active) { tones::active = index + 1; } } void tones::prune(uint8_t index) { int i; for(i = index; i >= 0 && all[i].amplitude == 0; i--) { } active = i + 1; }