diff options
author | Stepan Moskovchenko <stevenm@rockbox.org> | 2008-01-02 06:35:59 +0000 |
---|---|---|
committer | Stepan Moskovchenko <stevenm@rockbox.org> | 2008-01-02 06:35:59 +0000 |
commit | 59acdc336b4e7856b32c374f8caec2d5b5b6fa74 (patch) | |
tree | 752dd39a8b268bbe4cfcf7bb82752aed56136b9d /apps | |
parent | a39039d80b2896e69cb5d12ab7c1e17bdf43700f (diff) | |
download | rockbox-59acdc336b4e7856b32c374f8caec2d5b5b6fa74.tar.gz rockbox-59acdc336b4e7856b32c374f8caec2d5b5b6fa74.zip |
MIDI player: Allow pause and seeking during pause. Print out the play/pause/seek position in seconds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15985 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/midi/midiplay.c | 42 | ||||
-rw-r--r-- | apps/plugins/midi/midiutil.c | 45 |
2 files changed, 65 insertions, 22 deletions
diff --git a/apps/plugins/midi/midiplay.c b/apps/plugins/midi/midiplay.c index 934cea7695..88fbf11803 100644 --- a/apps/plugins/midi/midiplay.c +++ b/apps/plugins/midi/midiplay.c | |||
@@ -33,6 +33,7 @@ PLUGIN_IRAM_DECLARE | |||
33 | #define BTN_UP BUTTON_UP | 33 | #define BTN_UP BUTTON_UP |
34 | #define BTN_DOWN BUTTON_DOWN | 34 | #define BTN_DOWN BUTTON_DOWN |
35 | #define BTN_LEFT BUTTON_LEFT | 35 | #define BTN_LEFT BUTTON_LEFT |
36 | #define BTN_PLAY BUTTON_PLAY | ||
36 | 37 | ||
37 | #elif CONFIG_KEYPAD == ONDIO_PAD | 38 | #elif CONFIG_KEYPAD == ONDIO_PAD |
38 | #define BTN_QUIT BUTTON_OFF | 39 | #define BTN_QUIT BUTTON_OFF |
@@ -40,6 +41,8 @@ PLUGIN_IRAM_DECLARE | |||
40 | #define BTN_UP BUTTON_UP | 41 | #define BTN_UP BUTTON_UP |
41 | #define BTN_DOWN BUTTON_DOWN | 42 | #define BTN_DOWN BUTTON_DOWN |
42 | #define BTN_LEFT BUTTON_LEFT | 43 | #define BTN_LEFT BUTTON_LEFT |
44 | #define BTN_PLAY (BUTTON_MENU | BUTTON_OFF) | ||
45 | |||
43 | 46 | ||
44 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | 47 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
45 | #define BTN_QUIT BUTTON_OFF | 48 | #define BTN_QUIT BUTTON_OFF |
@@ -47,8 +50,8 @@ PLUGIN_IRAM_DECLARE | |||
47 | #define BTN_UP BUTTON_UP | 50 | #define BTN_UP BUTTON_UP |
48 | #define BTN_DOWN BUTTON_DOWN | 51 | #define BTN_DOWN BUTTON_DOWN |
49 | #define BTN_LEFT BUTTON_LEFT | 52 | #define BTN_LEFT BUTTON_LEFT |
50 | |||
51 | #define BTN_RC_QUIT BUTTON_RC_STOP | 53 | #define BTN_RC_QUIT BUTTON_RC_STOP |
54 | #define BTN_PLAY BUTTON_ON | ||
52 | 55 | ||
53 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 56 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
54 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 57 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
@@ -57,6 +60,8 @@ PLUGIN_IRAM_DECLARE | |||
57 | #define BTN_LEFT BUTTON_LEFT | 60 | #define BTN_LEFT BUTTON_LEFT |
58 | #define BTN_UP BUTTON_SCROLL_FWD | 61 | #define BTN_UP BUTTON_SCROLL_FWD |
59 | #define BTN_DOWN BUTTON_SCROLL_BACK | 62 | #define BTN_DOWN BUTTON_SCROLL_BACK |
63 | #define BTN_PLAY BUTTON_PLAY | ||
64 | |||
60 | 65 | ||
61 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | 66 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) |
62 | #define BTN_QUIT BUTTON_POWER | 67 | #define BTN_QUIT BUTTON_POWER |
@@ -64,6 +69,8 @@ PLUGIN_IRAM_DECLARE | |||
64 | #define BTN_LEFT BUTTON_LEFT | 69 | #define BTN_LEFT BUTTON_LEFT |
65 | #define BTN_UP BUTTON_UP | 70 | #define BTN_UP BUTTON_UP |
66 | #define BTN_DOWN BUTTON_DOWN | 71 | #define BTN_DOWN BUTTON_DOWN |
72 | #define BTN_PAUSE BUTTON_A | ||
73 | |||
67 | 74 | ||
68 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ | 75 | #elif (CONFIG_KEYPAD == SANSA_E200_PAD) || \ |
69 | (CONFIG_KEYPAD == SANSA_C200_PAD) | 76 | (CONFIG_KEYPAD == SANSA_C200_PAD) |
@@ -72,6 +79,8 @@ PLUGIN_IRAM_DECLARE | |||
72 | #define BTN_LEFT BUTTON_LEFT | 79 | #define BTN_LEFT BUTTON_LEFT |
73 | #define BTN_UP BUTTON_UP | 80 | #define BTN_UP BUTTON_UP |
74 | #define BTN_DOWN BUTTON_DOWN | 81 | #define BTN_DOWN BUTTON_DOWN |
82 | #define BTN_PLAY BUTTON_REC | ||
83 | |||
75 | 84 | ||
76 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD | 85 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD |
77 | #define BTN_QUIT BUTTON_POWER | 86 | #define BTN_QUIT BUTTON_POWER |
@@ -79,6 +88,8 @@ PLUGIN_IRAM_DECLARE | |||
79 | #define BTN_LEFT BUTTON_LEFT | 88 | #define BTN_LEFT BUTTON_LEFT |
80 | #define BTN_UP BUTTON_UP | 89 | #define BTN_UP BUTTON_UP |
81 | #define BTN_DOWN BUTTON_DOWN | 90 | #define BTN_DOWN BUTTON_DOWN |
91 | #define BTN_PLAY BUTTON_PLAY | ||
92 | |||
82 | 93 | ||
83 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | 94 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD |
84 | #define BTN_QUIT BUTTON_POWER | 95 | #define BTN_QUIT BUTTON_POWER |
@@ -86,6 +97,8 @@ PLUGIN_IRAM_DECLARE | |||
86 | #define BTN_LEFT BUTTON_LEFT | 97 | #define BTN_LEFT BUTTON_LEFT |
87 | #define BTN_UP BUTTON_SCROLL_UP | 98 | #define BTN_UP BUTTON_SCROLL_UP |
88 | #define BTN_DOWN BUTTON_SCROLL_DOWN | 99 | #define BTN_DOWN BUTTON_SCROLL_DOWN |
100 | #define BTN_PLAY BUTTON_PLAY | ||
101 | |||
89 | 102 | ||
90 | #elif CONFIG_KEYPAD == MROBE500_PAD | 103 | #elif CONFIG_KEYPAD == MROBE500_PAD |
91 | #define BTN_QUIT BUTTON_POWER | 104 | #define BTN_QUIT BUTTON_POWER |
@@ -93,6 +106,8 @@ PLUGIN_IRAM_DECLARE | |||
93 | #define BTN_LEFT BUTTON_LEFT | 106 | #define BTN_LEFT BUTTON_LEFT |
94 | #define BTN_UP BUTTON_RC_PLAY | 107 | #define BTN_UP BUTTON_RC_PLAY |
95 | #define BTN_DOWN BUTTON_RC_DOWN | 108 | #define BTN_DOWN BUTTON_RC_DOWN |
109 | #define BTN_PLAY BUTTON_RC_HEART | ||
110 | |||
96 | 111 | ||
97 | #endif | 112 | #endif |
98 | 113 | ||
@@ -274,6 +289,7 @@ static int midimain(void * filename) | |||
274 | synthbuf(); | 289 | synthbuf(); |
275 | rb->pcm_play_data(&get_more, NULL, 0); | 290 | rb->pcm_play_data(&get_more, NULL, 0); |
276 | 291 | ||
292 | int isPlaying = 1; /* 0 = paused */ | ||
277 | int vol=0; | 293 | int vol=0; |
278 | 294 | ||
279 | while(!quit) | 295 | while(!quit) |
@@ -318,8 +334,10 @@ static int midimain(void * filename) | |||
318 | /* but run through the tracks without the synth running */ | 334 | /* but run through the tracks without the synth running */ |
319 | rb->pcm_play_stop(); | 335 | rb->pcm_play_stop(); |
320 | seekBackward(5); | 336 | seekBackward(5); |
321 | rb->pcm_play_data(&get_more, NULL, 0); | 337 | printf("Rewind to %d:%02d\n", playingTime/60, playingTime%60); |
322 | 338 | ||
339 | if(isPlaying) | ||
340 | rb->pcm_play_data(&get_more, NULL, 0); | ||
323 | break; | 341 | break; |
324 | } | 342 | } |
325 | 343 | ||
@@ -327,10 +345,28 @@ static int midimain(void * filename) | |||
327 | { | 345 | { |
328 | rb->pcm_play_stop(); | 346 | rb->pcm_play_stop(); |
329 | seekForward(5); | 347 | seekForward(5); |
330 | rb->pcm_play_data(&get_more, NULL, 0); | 348 | printf("Skip to %d:%02d\n", playingTime/60, playingTime%60); |
349 | |||
350 | if(isPlaying) | ||
351 | rb->pcm_play_data(&get_more, NULL, 0); | ||
331 | break; | 352 | break; |
332 | } | 353 | } |
333 | 354 | ||
355 | case BTN_PLAY: | ||
356 | { | ||
357 | if(isPlaying == 1) | ||
358 | { | ||
359 | printf("Paused at %d:%02d\n", playingTime/60, playingTime%60); | ||
360 | isPlaying = 0; | ||
361 | rb->pcm_play_stop(); | ||
362 | } else | ||
363 | { | ||
364 | printf("Playing from %d:%02d\n", playingTime/60, playingTime%60); | ||
365 | isPlaying = 1; | ||
366 | rb->pcm_play_data(&get_more, NULL, 0); | ||
367 | } | ||
368 | break; | ||
369 | } | ||
334 | 370 | ||
335 | #ifdef BTN_RC_QUIT | 371 | #ifdef BTN_RC_QUIT |
336 | case BTN_RC_QUIT: | 372 | case BTN_RC_QUIT: |
diff --git a/apps/plugins/midi/midiutil.c b/apps/plugins/midi/midiutil.c index 65ba9c8989..3cb4a9e0fb 100644 --- a/apps/plugins/midi/midiutil.c +++ b/apps/plugins/midi/midiutil.c | |||
@@ -135,25 +135,32 @@ int eof(int fd) | |||
135 | // Here is a hacked up printf command to get the output from the game. | 135 | // Here is a hacked up printf command to get the output from the game. |
136 | int printf(const char *fmt, ...) | 136 | int printf(const char *fmt, ...) |
137 | { | 137 | { |
138 | static int p_xtpt = 0; | 138 | static int p_xtpt = 0; |
139 | char p_buf[50]; | 139 | char p_buf[50]; |
140 | bool ok; | 140 | bool ok; |
141 | va_list ap; | 141 | va_list ap; |
142 | 142 | ||
143 | va_start(ap, fmt); | 143 | va_start(ap, fmt); |
144 | ok = rb->vsnprintf(p_buf,sizeof(p_buf), fmt, ap); | 144 | ok = rb->vsnprintf(p_buf,sizeof(p_buf), fmt, ap); |
145 | va_end(ap); | 145 | va_end(ap); |
146 | 146 | ||
147 | rb->lcd_putsxy(1,p_xtpt, (unsigned char *)p_buf); | 147 | int i=0; |
148 | rb->lcd_update(); | 148 | |
149 | 149 | /* Device LCDs display newlines funny. */ | |
150 | p_xtpt+=8; | 150 | for(i=0; p_buf[i]!=0; i++) |
151 | if(p_xtpt>LCD_HEIGHT-8) | 151 | if(p_buf[i] == '\n') |
152 | { | 152 | p_buf[i] = ' '; |
153 | p_xtpt=0; | 153 | |
154 | rb->lcd_clear_display(); | 154 | rb->lcd_putsxy(1,p_xtpt, (unsigned char *)p_buf); |
155 | } | 155 | rb->lcd_update(); |
156 | return 1; | 156 | |
157 | p_xtpt+=8; | ||
158 | if(p_xtpt>LCD_HEIGHT-8) | ||
159 | { | ||
160 | p_xtpt=0; | ||
161 | rb->lcd_clear_display(); | ||
162 | } | ||
163 | return 1; | ||
157 | } | 164 | } |
158 | 165 | ||
159 | void exit(int code) | 166 | void exit(int code) |