summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStepan Moskovchenko <stevenm@rockbox.org>2008-01-02 07:09:17 +0000
committerStepan Moskovchenko <stevenm@rockbox.org>2008-01-02 07:09:17 +0000
commit111049105bf20b55f8e114487f32daeda45c6d5c (patch)
treeecf8e2e2f045428c2e6dfbc0db0f7579de980f83
parent0f8c77b306fbc5d27803a3062cdd1a65a573c325 (diff)
downloadrockbox-111049105bf20b55f8e114487f32daeda45c6d5c.zip
rockbox-111049105bf20b55f8e114487f32daeda45c6d5c.tar.gz
rockbox-111049105bf20b55f8e114487f32daeda45c6d5c.tar.bz2
rockbox-111049105bf20b55f8e114487f32daeda45c6d5c.tar.xz
MIDI player: print out track names, copyright info, song names, etc during load time. This includes
lyrics... maybe we should print those while the song is playing? git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15987 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/midi/midifile.c67
1 files changed, 65 insertions, 2 deletions
diff --git a/apps/plugins/midi/midifile.c b/apps/plugins/midi/midifile.c
index ac3206c..5f98e89 100644
--- a/apps/plugins/midi/midifile.c
+++ b/apps/plugins/midi/midifile.c
@@ -149,8 +149,71 @@ int readEvent(int file, void * dest)
/* Allocate and read in the data block */
if(dest != NULL)
{
- ev->evData = readData(file, ev->len);
-/* printf("\nDATA: <%s>", ev->evData); */
+ /* Null-terminate for text events */
+ ev->evData = malloc(ev->len+1); /* Extra byte for the null termination */
+
+ rb->read(file, ev->evData, ev->len);
+ ev->evData[ev->len] = 0;
+
+ switch(ev->d1)
+ {
+ case 0x01: /* Generic text */
+ {
+ printf("Text: %s", ev->evData);
+ break;
+ }
+
+ case 0x02: /* A copyright string within the file */
+ {
+ printf("Copyright: %s", ev->evData);
+ break;
+ }
+
+ case 0x03: /* Sequence of track name */
+ {
+ printf("Name: %s", ev->evData);
+ break;
+ }
+
+ case 0x04: /* Instrument (synth) name */
+ {
+ printf("Instrument: %s", ev->evData);
+ break;
+ }
+
+ case 0x05: /* Lyrics. These appear on the tracks at the right times */
+ { /* Usually only a small 'piece' of the lyrics. */
+ /* Maybe the sequencer should print these at play time? */
+ printf("Lyric: %s", ev->evData);
+ break;
+ }
+
+ case 0x06: /* Text marker */
+ {
+ printf("Marker: %s", ev->evData);
+ break;
+ }
+
+
+ case 0x07: /* Cue point */
+ {
+ printf("Cue point: %s", ev->evData);
+ break;
+ }
+
+ case 0x08: /* Program name */
+ {
+ printf("Patch: %s", ev->evData);
+ break;
+ }
+
+
+ case 0x09: /* Device name. Very much irrelevant here, though. */
+ {
+ printf("Port: %s", ev->evData);
+ break;
+ }
+ }
}
else
{