From 111049105bf20b55f8e114487f32daeda45c6d5c Mon Sep 17 00:00:00 2001 From: Stepan Moskovchenko Date: Wed, 2 Jan 2008 07:09:17 +0000 Subject: 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 --- apps/plugins/midi/midifile.c | 67 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) (limited to 'apps/plugins/midi/midifile.c') diff --git a/apps/plugins/midi/midifile.c b/apps/plugins/midi/midifile.c index ac3206ca65..5f98e895a2 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 { -- cgit v1.2.3