diff options
Diffstat (limited to 'apps/plugins/metronome.c')
-rw-r--r-- | apps/plugins/metronome.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c index 587d9f5fe1..c1e156075b 100644 --- a/apps/plugins/metronome.c +++ b/apps/plugins/metronome.c | |||
@@ -711,11 +711,23 @@ static signed short sound[] = { | |||
711 | 711 | ||
712 | int tock; | 712 | int tock; |
713 | 713 | ||
714 | short sndbuf[sizeof(sound)*2]; | ||
715 | |||
716 | /* Convert the mono "tock" sample to interleaved stereo */ | ||
717 | void prepare_tock(void) | ||
718 | { | ||
719 | int i; | ||
720 | for(i = 0;i < (int)sizeof(sound)/2;i++) { | ||
721 | sndbuf[i*2] = sound[i]; | ||
722 | sndbuf[i*2+1] = sound[i]; | ||
723 | } | ||
724 | } | ||
725 | |||
714 | void callback_pcm(unsigned char** start, long* size) | 726 | void callback_pcm(unsigned char** start, long* size) |
715 | { | 727 | { |
716 | if(sound_active) { | 728 | if(sound_active) { |
717 | *start = (unsigned char *)sound; | 729 | *start = (unsigned char *)sndbuf; |
718 | *size = sizeof(sound); | 730 | *size = sizeof(sndbuf); |
719 | sound_active = false; | 731 | sound_active = false; |
720 | } | 732 | } |
721 | } | 733 | } |
@@ -876,6 +888,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){ | |||
876 | #if CONFIG_CODEC != SWCODEC | 888 | #if CONFIG_CODEC != SWCODEC |
877 | rb->bitswap(sound, sizeof(sound)); | 889 | rb->bitswap(sound, sizeof(sound)); |
878 | #else | 890 | #else |
891 | prepare_tock(); | ||
879 | rb->pcm_set_frequency(44100); | 892 | rb->pcm_set_frequency(44100); |
880 | #endif | 893 | #endif |
881 | 894 | ||