diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-14 02:39:30 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-14 02:39:30 +0000 |
commit | c7c9069ed4bda959e649520342017d826123931e (patch) | |
tree | a990abf97f6eb0c47046a9ea7261730ce05507eb /apps/plugins | |
parent | bae4e2acdde5c563249e452d22c4fd58ea7433a4 (diff) | |
download | rockbox-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
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/metronome.c | 50 |
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; | |||
99 | static int tap_time = 0; | 99 | static int tap_time = 0; |
100 | static int tap_timeout = 0; | 100 | static int tap_timeout = 0; |
101 | 101 | ||
102 | int bpm_step_counter = 0; | ||
103 | |||
102 | void led(bool on) | 104 | void 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 | ||
194 | static signed short sound[] = { | 196 | static 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*/ | ||
835 | void 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 | |||
832 | void timer_callback(void) | 852 | void 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 |