From 0373ac2a1d6a61565dfb422093f512992d7d0fea Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Wed, 31 Aug 2011 02:54:28 +0000 Subject: [PATCH] Add mmelody_active_p --- apps/squeak2/squeak2.c | 7 ++++++- extra/mmelody.c | 9 +++++++++ extra/mmelody.h | 6 ++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/squeak2/squeak2.c b/apps/squeak2/squeak2.c index 6ea7893..596e622 100644 --- a/apps/squeak2/squeak2.c +++ b/apps/squeak2/squeak2.c @@ -100,7 +100,12 @@ static void button_task (__unused__ void *data) button_update (); if (button_push_event_p (BUTTON1)) - mmelody_play (melody, tune1); + { + if (mmelody_active_p (melody)) + mmelody_play (melody, 0); + else + mmelody_play (melody, tune1); + } } diff --git a/extra/mmelody.c b/extra/mmelody.c index 80fa5fb..adfb41a 100644 --- a/extra/mmelody.c +++ b/extra/mmelody.c @@ -257,6 +257,8 @@ mmelody_play (mmelody_t mmelody, const char *str) mmelody->octave = MMELODY_OCTAVE_DEFAULT; /* Default to quarter notes. */ mmelody_note_fraction_set (mmelody, 4); + /* Stop what is currently sounding. */ + mmelody_note_play (mmelody, 0); } @@ -277,6 +279,13 @@ mmelody_volume_set (mmelody_t mmelody, mmelody_volume_t volume) } +bool +mmelody_active_p (mmelody_t mmelody) +{ + return mmelody->cur != 0; +} + + void mmelody_update (mmelody_t mmelody) { diff --git a/extra/mmelody.h b/extra/mmelody.h index bd362d2..b00b381 100644 --- a/extra/mmelody.h +++ b/extra/mmelody.h @@ -68,4 +68,10 @@ mmelody_speed_set (mmelody_t mmelody, mmelody_speed_t speed); void mmelody_volume_set (mmelody_t mmelody, mmelody_volume_t volume); + +/** Return non-zero if playing. */ +bool +mmelody_active_p (mmelody_t mmelody); + + #endif