Here is a fun function which uses the 'new in 9' MIDI import functionality:
KaraokeMachine[songFile_] := Module[{lyrics, song, textEvents},
lyrics = Import[songFile, "Metadata"];
song = Import[songFile];
textEvents = Cases[lyrics, {time_, "TextEvent" -> text_}, 2];
textEvents = Select[textEvents, Not[StringMatchQ[#[[2, 2]], "\\@*"]] &];
textEvents = Map[{#[[1]], "TextEvent" -> StringReplace[#[[2, 2]], {"\\" -> "\n\n", "/" -> "\n"}]} &, textEvents];
Map[(displayEvent[#] = Black) &, textEvents];
Print@With[{t = textEvents}, Dynamic[Row[With[{x = #}, Style[x[[2, 2]], displayEvent[x]]] & /@ t]]];
EmitSound[song];
With[{x = #},
RunScheduledTask[ Unevaluated[displayEvent[x] = {Red, FontSize -> 16}], {x[[1]]}];
RunScheduledTask[ Unevaluated[displayEvent[x] = Black], {x[[1]] + 1.0}]] & /@
textEvents;
]
That's it. And then you're ready to start having fun with Karaoke!
KaraokeMachine["All_That_She_Wants.mid"]
(midi file can be downloaded from
https://download.wolfram.com/?key=1R7VKY)
Also many more karaoke files here:
http://www.midikaraoke.com/songdir/