41 #include <uORB/topics/tune_control.h> 42 #include "tune_definition.h" 44 #define TUNE_DEFAULT_NOTE_LENGTH 4 45 #define TUNE_DEFAULT_OCTAVE 4 46 #define TUNE_DEFAULT_TEMPO 120 48 #define TUNE_MAX_UPDATE_INTERVAL_US 100000 59 enum class NoteMode {NORMAL, LEGATO, STACCATO};
68 Tunes(
unsigned default_note_length = TUNE_DEFAULT_NOTE_LENGTH,
69 NoteMode default_note_mode = NoteMode::NORMAL,
70 unsigned default_octave = TUNE_DEFAULT_OCTAVE,
71 unsigned default_tempo = TUNE_DEFAULT_TEMPO);
82 int set_control(
const tune_control_s &tune_control);
92 void set_string(
const char *
const string, uint8_t volume);
102 int get_next_note(
unsigned &frequency,
unsigned &duration,
unsigned &silence);
114 unsigned &silence, uint8_t &volume);
123 unsigned int get_maximum_update_interval() {
return (
unsigned int)TUNE_MAX_UPDATE_INTERVAL_US;}
133 uint32_t note_to_frequency(
unsigned note)
const;
145 unsigned note_duration(
unsigned &silence,
unsigned note_length,
unsigned dots)
const;
155 unsigned rest_duration(
unsigned rest_length,
unsigned dots)
const;
169 unsigned next_number();
176 unsigned next_dots();
183 void reset(
bool repeat_flag);
189 static const char *
const _default_tunes[];
190 static const bool _default_tunes_interruptable[];
191 static const unsigned int _default_tunes_size;
192 static const uint8_t _note_tab[];
194 const char *_next_tune =
nullptr;
195 const char *_tune =
nullptr;
196 const char *_tune_start_ptr =
nullptr;
198 int _current_tune_id =
static_cast<int>(TuneID::NONE);
200 bool _repeat =
false;
202 unsigned int _default_note_length = TUNE_DEFAULT_NOTE_LENGTH;
203 NoteMode _default_note_mode = NoteMode::NORMAL;
204 unsigned int _default_octave = TUNE_DEFAULT_OCTAVE;
205 unsigned int _default_tempo = TUNE_DEFAULT_TEMPO;
207 unsigned int _note_length = TUNE_DEFAULT_NOTE_LENGTH;
208 NoteMode _note_mode = NoteMode::NORMAL;
209 unsigned int _octave = TUNE_DEFAULT_OCTAVE;
210 unsigned int _tempo = TUNE_DEFAULT_TEMPO;
212 unsigned int _duration = 0;
213 unsigned int _frequency = 0;
214 unsigned int _silence = 0;
217 bool _using_custom_msg =
false;
int set_control(const tune_control_s &tune_control)
Set tune to be played using the message.
Definition: tunes.cpp:85
void set_string(const char *const string, uint8_t volume)
Set tune to be played using a string.
Definition: tunes.cpp:138
API for the uORB lightweight object broker.
int get_next_note(unsigned &frequency, unsigned &duration, unsigned &silence)
Get next note in the current tune, which has been provided by either set_control or play_string...
Definition: tunes.cpp:172
unsigned int get_default_tunes_size() const
Get the number of default tunes.
Definition: tunes.h:121
Library for parsing tunes from melody-strings or dedicated tune messages.
Definition: tunes.h:56
Tunes(unsigned default_note_length=TUNE_DEFAULT_NOTE_LENGTH, NoteMode default_note_mode=NoteMode::NORMAL, unsigned default_octave=TUNE_DEFAULT_OCTAVE, unsigned default_tempo=TUNE_DEFAULT_TEMPO)
Constructor with the default parameters set to: default_tempo: TUNE_DEFAULT_TEMPO default_octave: TUN...
Definition: tunes.cpp:56