summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-01-14 02:39:30 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-01-14 02:39:30 +0000
commitc7c9069ed4bda959e649520342017d826123931e (patch)
treea990abf97f6eb0c47046a9ea7261730ce05507eb
parentbae4e2acdde5c563249e452d22c4fd58ea7433a4 (diff)
downloadrockbox-c7c9069ed4bda959e649520342017d826123931e.tar.gz
rockbox-c7c9069ed4bda959e649520342017d826123931e.zip
Metronome patch by Martin Scarratt: BPM entry acceleration and proper stopping of playback on iriver
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8348 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/metronome.c50
1 files changed, 27 insertions, 23 deletions
diff --git a/apps/plugins/metronome.c b/apps/plugins/metronome.c
index f8c5445542..1b2d28a4b7 100644
--- a/apps/plugins/metronome.c
+++ b/apps/plugins/metronome.c
@@ -99,6 +99,8 @@ static int tap_count = 0;
99static int tap_time = 0; 99static int tap_time = 0;
100static int tap_timeout = 0; 100static int tap_timeout = 0;
101 101
102int bpm_step_counter = 0;
103
102void led(bool on) 104void led(bool on)
103{ 105{
104#if CONFIG_CPU == SH7034 106#if CONFIG_CPU == SH7034
@@ -189,7 +191,7 @@ void play_tock(void){
189#else 191#else
190 192
191#define MET_IS_PLAYING rb->pcm_is_playing() 193#define MET_IS_PLAYING rb->pcm_is_playing()
192#define MET_PLAY_STOP rb->pcm_play_stop() 194#define MET_PLAY_STOP rb->audio_stop()
193 195
194static signed short sound[] = { 196static signed short sound[] = {
195 1, -1, 1, -1, 0, 0, 0, 1, -1, 0, 0, 197 1, -1, 1, -1, 0, 0, 0, 1, -1, 0, 0,
@@ -829,6 +831,24 @@ void change_volume(int delta){
829 } 831 }
830} 832}
831 833
834/*function to accelerate bpm change*/
835void change_bpm(int direction){
836 if((bpm_step_counter < 20)
837 || (bpm > 389)
838 || (bpm < 10))
839 bpm = bpm + direction;
840 else if (bpm_step_counter < 60)
841 bpm = bpm + direction * 2;
842 else
843 bpm = bpm + direction * 9;
844
845 if (bpm > 400) bpm = 400;
846 if (bpm < 1) bpm = 1;
847 calc_period();
848 draw_display();
849 bpm_step_counter++;
850}
851
832void timer_callback(void) 852void timer_callback(void)
833{ 853{
834 if(minitick >= period){ 854 if(minitick >= period){
@@ -892,8 +912,8 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
892 rb = api; 912 rb = api;
893 913
894 if (MET_IS_PLAYING) 914 if (MET_IS_PLAYING)
895 MET_PLAY_STOP; // stop audio ISR 915 MET_PLAY_STOP; // stop audio IS
896 916
897#if CONFIG_CODEC != SWCODEC 917#if CONFIG_CODEC != SWCODEC
898 rb->bitswap(sound, sizeof(sound)); 918 rb->bitswap(sound, sizeof(sound));
899#else 919#else
@@ -1005,31 +1025,15 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter){
1005 break; 1025 break;
1006 1026
1007 case BUTTON_LEFT: 1027 case BUTTON_LEFT:
1008 if (bpm > 1) 1028 bpm_step_counter = 0;
1009 bpm--;
1010 calc_period();
1011 draw_display();
1012 break;
1013
1014 case BUTTON_LEFT | BUTTON_REPEAT: 1029 case BUTTON_LEFT | BUTTON_REPEAT:
1015 if (bpm > 10) 1030 change_bpm(-1);
1016 bpm=bpm-10;
1017 calc_period();
1018 draw_display();
1019 break; 1031 break;
1020 1032
1021 case BUTTON_RIGHT: 1033 case BUTTON_RIGHT:
1022 if(bpm < 400) 1034 bpm_step_counter = 0;
1023 bpm++;
1024 calc_period();
1025 draw_display();
1026 break;
1027
1028 case BUTTON_RIGHT | BUTTON_REPEAT: 1035 case BUTTON_RIGHT | BUTTON_REPEAT:
1029 if (bpm < 400) 1036 change_bpm(1);
1030 bpm=bpm+10;
1031 calc_period();
1032 draw_display();
1033 break; 1037 break;
1034 1038
1035#if CONFIG_KEYPAD != ONDIO_PAD 1039#if CONFIG_KEYPAD != ONDIO_PAD