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);
256 uint8_t buffer[1024];
271 m_actual = convertToLower ? tolower(c) : c;
330 if (octaves == 0)
return frequency;
331 return frequency * powf(2.0f, octaves);
340 bool last_note_is_valid =
false;
341 float last_mult_duration = 1.0;
343 int last_duration = 0;
360 last_duration = duration;
364 if (name ==
'p' || name ==
'r') {
373 last_note_is_valid =
false;
404 last_note_is_valid =
false;
407 last_noteEnum = noteEnum;
412 last_note_is_valid =
true;
414 last_mult_duration = 1.0;
419 int semitone = (int)noteEnum;
428 last_note_is_valid =
true;
430 last_mult_duration = 1.0;
440 last_note_is_valid =
true;
441 last_octave = octave;
442 last_mult_duration = 1.0;
448 float mult_duration = 1.0;
452 last_note_is_valid =
true;
453 last_octave = octave;
454 last_mult_duration = mult_duration;
461 int msec = (int)((
m_msec_semi / duration) * mult_duration);
464 last_note_is_valid =
false;
468 if (last_note_is_valid) {
471 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