diff --git a/src/lib/tunes/tunes.cpp b/src/lib/tunes/tunes.cpp
index 86c65631cf473083373c06c078e1c35a62acd9e6..91b790a60745cbfa4bbdb462039c36cfd7d6c066 100644
--- a/src/lib/tunes/tunes.cpp
+++ b/src/lib/tunes/tunes.cpp
@@ -62,7 +62,7 @@ Tunes::Tunes(unsigned default_tempo, unsigned default_octave, unsigned default_n
 	config_tone(false);
 }
 
-Tunes::Tunes(): Tunes(120, 4, 4, NoteMode::NORMAL)
+Tunes::Tunes(): Tunes(TUNE_DEFAULT_TEMPO, TUNE_DEFAULT_OCTAVE, TUNE_DEFAULT_NOTE_LENGTH, NoteMode::NORMAL)
 {
 }
 
@@ -141,7 +141,7 @@ int Tunes::set_control(const tune_control_s &tune_control)
 	return OK;
 }
 
-void Tunes::set_string(const char *string)
+void Tunes::set_string(const char *const string)
 {
 	// set tune string the first time
 	if (_tune == nullptr) {
@@ -353,13 +353,13 @@ tune_end:
 	}
 }
 
-unsigned Tunes::note_to_frequency(unsigned note)
+uint32_t Tunes::note_to_frequency(unsigned note) const
 {
 	// compute the frequency (Hz)
 	return (unsigned)(880.0f * powf(2.0f, ((int)note - 46) / 12.0f));
 }
 
-unsigned Tunes::note_duration(unsigned &silence, unsigned note_length, unsigned dots)
+unsigned Tunes::note_duration(unsigned &silence, unsigned note_length, unsigned dots) const
 {
 	unsigned whole_note_period = BEAT_TIME_CONVERSION / _tempo;
 
@@ -396,7 +396,7 @@ unsigned Tunes::note_duration(unsigned &silence, unsigned note_length, unsigned
 	return note_period;
 }
 
-unsigned Tunes::rest_duration(unsigned rest_length, unsigned dots)
+unsigned Tunes::rest_duration(unsigned rest_length, unsigned dots) const
 {
 	unsigned whole_note_period = BEAT_TIME_CONVERSION / _tempo;
 
diff --git a/src/lib/tunes/tunes.h b/src/lib/tunes/tunes.h
index f8a27280e0fe4f668276bf251abedd496d67a63f..7fd843958c19c15a31103333925c2c36e9670f91 100644
--- a/src/lib/tunes/tunes.h
+++ b/src/lib/tunes/tunes.h
@@ -43,6 +43,15 @@
 
 #define TUNE_MAX_UPDATE_INTERVAL_US 100000
 
+#define TUNE_DEFAULT_TEMPO 120
+#define TUNE_DEFAULT_OCTAVE 4
+#define TUNE_DEFAULT_NOTE_LENGTH 4
+
+/**
+ *  Library for parsing tunes from melody-strings or dedicated tune messages.
+ *  Needs to be instantiated as it keeps track of which tune is to be played
+ *  next. Also handles repeated tunes.
+ */
 class Tunes
 {
 public:
@@ -50,9 +59,9 @@ public:
 
 	/**
 	 * Constructor with the default parameter set to:
-	 * default_tempo: 120
-	 * default_octave: 4
-	 * default_note_length: 4
+	 * default_tempo: TUNE_DEFAULT_TEMPO
+	 * default_octave: TUNE_DEFAULT_OCTAVE
+	 * default_note_length: TUNE_DEFAULT_NOTE_LENGTH
 	 * default_mode: NORMAL
 	 */
 	Tunes();
@@ -62,25 +71,33 @@ public:
 	 */
 	Tunes(unsigned default_tempo, unsigned default_octave, unsigned default_note_length, NoteMode default_mode);
 
+	/**
+	 * Default destructor
+	 */
 	~Tunes() = default;
 
 	/**
-	 * Set tune to be played.
+	 * Set tune to be played using the message. If a tune is already being played
+	 * the call to this function will be ignored, unless the override flag is set
+	 * or the tune being already played is a repeated tune.
 	 * @param  tune_control struct containig the uORB message
 	 * @return              return -EINVAL if the default tune does not exist.
 	 */
 	int set_control(const tune_control_s &tune_control);
 
 	/**
-	 * Parse a tune string, formatted with the syntax of the Microsoft GWBasic/QBasic.
-	 * This has to be kept in memory for the whole duration of the melody.
+	 * Set tune to be played using a string.
+	 * Parses a tune string, formatted with the syntax of the Microsoft GWBasic/QBasic.
+	 * Ownership of the string is NOT transferred. The string has to be kept in
+	 * memory for the whole duration of the melody.
 	 *
 	 * @param  string    tune input string
 	 */
-	void set_string(const char *string);
+	void set_string(const char *const string);
 
 	/**
-	 * Get next note in the setted string in set_control or play_string
+	 * Get next note in the current tune, which has been provided by either
+	 * set_control or play_string
 	 * @param  frequency return frequency value (Hz)
 	 * @param  duration  return duration of the tone (us)
 	 * @param  silence   return silence duration (us)
@@ -88,7 +105,12 @@ public:
 	 */
 	int get_next_tune(unsigned &frequency, unsigned &duration, unsigned &silence);
 
-	unsigned int get_default_tunes_size() {return _default_tunes_size;}
+	/**
+	 *  Get the number of default tunes. This is useful for when a tune is
+	 *  requested via its tune ID.
+	 *  @return		Number of default tunes accessible via tune ID
+	 */
+	unsigned int get_default_tunes_size() const {return _default_tunes_size;}
 
 	unsigned int get_maximum_update_interval() {return (unsigned int)TUNE_MAX_UPDATE_INTERVAL_US;}
 
@@ -97,7 +119,6 @@ private:
 	static const uint8_t _note_tab[];
 	static const unsigned int _default_tunes_size;
 	bool _repeat = false;	     ///< if true, tune restarts at end
-
 	const char *_tune = nullptr; ///< current tune string
 	const char *_next = nullptr; ///< next note in the string
 	const char *_tune_start_ptr = nullptr; ///< pointer to repeat tune
@@ -107,10 +128,10 @@ private:
 	NoteMode _note_mode;
 	unsigned _octave;
 
-	unsigned _default_tempo = 120;
-	unsigned _default_note_length = 4;
-	NoteMode _default_mode = NoteMode::NORMAL;
-	unsigned _default_octave = 4;
+	unsigned _default_tempo;
+	unsigned _default_note_length;
+	NoteMode _default_mode;
+	unsigned _default_octave;
 
 	unsigned _frequency;
 	unsigned _duration;
@@ -123,7 +144,7 @@ private:
 	 * @param  note unsigned value of the semitone from C
 	 * @return      frequency (Hz)
 	 */
-	uint32_t note_to_frequency(unsigned note);
+	uint32_t note_to_frequency(unsigned note) const;
 
 	/**
 	 * Calculate the duration in microseconds of play and silence for a
@@ -135,7 +156,7 @@ private:
 	 * @param  dots        extention of the note length
 	 * @return             duration of the note (us)
 	 */
-	unsigned note_duration(unsigned &silence, unsigned note_length, unsigned dots);
+	unsigned note_duration(unsigned &silence, unsigned note_length, unsigned dots) const;
 
 	/**
 	 * Calculate the duration in microseconds of a rest corresponding to
@@ -145,7 +166,7 @@ private:
 	 * @param  dots        number of extension dots
 	 * @return             rest duration (us)
 	 */
-	unsigned rest_duration(unsigned rest_length, unsigned dots);
+	unsigned rest_duration(unsigned rest_length, unsigned dots) const;
 
 	/**
 	 * Find the next character in the string, discard any whitespace.