95template <
class T =
int16_t>
145 LOGD(
"RTTTLOutput::begin");
170 size_t write(
const uint8_t* data,
size_t len)
override {
171 LOGD(
"write: %d", len);
177 LOGI(
"found ':' - resetting parser state by calling begin()");
200 void (*cb)(
float freqHz,
int durationMs,
int midiNote,
void* ref)) {
212 void setRamp(uint8_t upPercent = 20, uint8_t downPercent = 30) {
236 int find_byte(
const uint8_t* haystack,
size_t haystack_len, uint8_t needle) {
237 for (
size_t i = 0; i < haystack_len; i++) {
238 if (haystack[i] == needle) {
247 LOGI(
"play_note: freq=%.2f Hz, msec=%d, midi=%d", freq, msec, midi);
257 uint8_t buffer[1024];
272 m_actual = convertToLower ? tolower(c) : c;
331 if (octaves == 0)
return frequency;
332 return frequency * powf(2.0f, octaves);
341 bool last_note_is_valid =
false;
342 float last_mult_duration = 1.0;
344 int last_duration = 0;
361 last_duration = duration;
365 if (name ==
'p' || name ==
'r') {
374 last_note_is_valid =
false;
405 last_note_is_valid =
false;
408 last_noteEnum = noteEnum;
413 last_note_is_valid =
true;
415 last_mult_duration = 1.0;
420 int semitone = (int)noteEnum;
429 last_note_is_valid =
true;
431 last_mult_duration = 1.0;
441 last_note_is_valid =
true;
442 last_octave = octave;
443 last_mult_duration = 1.0;
449 float mult_duration = 1.0;
453 last_note_is_valid =
true;
454 last_octave = octave;
455 last_mult_duration = mult_duration;
462 int msec = (int)((
m_msec_semi / duration) * mult_duration);
465 last_note_is_valid =
false;
469 if (last_note_is_valid) {
472 int msec = (int)((
m_msec_semi / last_duration) * last_mult_duration);
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120