|
From: Lasse Kärkkäi. <tr...@us...> - 2009-07-18 18:53:30
|
Module: performous
Branch: master
Commit: a3c44133b1b9a2c5430a9d4fdff4204fb3500794
Author: Lasse Karkkainen <tro...@tr...>
Date: Sat Jul 18 21:46:46 2009 +0300
Add comments and make it works with old format single-track MIDI too.
---
game/songparser-ini.cc | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/game/songparser-ini.cc b/game/songparser-ini.cc
index cfc993d..15bcad5 100644
--- a/game/songparser-ini.cc
+++ b/game/songparser-ini.cc
@@ -43,8 +43,12 @@ void SongParser::iniParse() {
MidiFileParser midi(s.path + "/notes.mid");
for (MidiFileParser::TempoChanges::const_iterator it = midi.tempochanges.begin(); it != midi.tempochanges.end(); ++it) addBPM(it->miditime * 4, it->value);
for (MidiFileParser::Tracks::const_iterator it = midi.tracks.begin(); it != midi.tracks.end(); ++it) {
- if (it->name.substr(0, 5) != "PART ") continue;
- std::string name = it->name.substr(5);
+ // Figure out the track name
+ std::string name = it->name;
+ if (midi.tracks.size() == 1) name = "GUITAR";
+ else if (name.substr(0, 5) != "PART ") continue;
+ else name.erase(0, 5);
+ // Process non-vocal tracks
if (name != "VOCALS") {
NoteMap& nm = s.tracks[name];
for (MidiFileParser::NoteMap::const_iterator it2 = it->notes.begin(); it2 != it->notes.end(); ++it2) {
@@ -54,7 +58,9 @@ void SongParser::iniParse() {
dur.push_back(Duration(midi.get_seconds(it3->begin), midi.get_seconds(it3->end)));
}
}
+ continue;
}
+ // Process vocal tracks
for (MidiFileParser::Lyrics::const_iterator it2 = it->lyrics.begin(); it2 != it->lyrics.end(); ++it2) {
Note n;
n.begin = midi.get_seconds(it2->begin);
|