diff options
author | Diegoisawesome <diego@domoreaweso.me> | 2018-09-14 22:35:04 -0500 |
---|---|---|
committer | Diegoisawesome <diego@domoreaweso.me> | 2018-09-14 22:35:04 -0500 |
commit | e8be47abb880a06090f36a7305ab0e4f59f0a701 (patch) | |
tree | b147f92fe4a5ef7c293726a66e26a20d62429fda /tools/mid2agb/midi.cpp | |
parent | b860d583e4a5b6fd39e725df998ee9837f7f3029 (diff) |
Add running status to mid2agb
Diffstat (limited to 'tools/mid2agb/midi.cpp')
-rw-r--r-- | tools/mid2agb/midi.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/mid2agb/midi.cpp b/tools/mid2agb/midi.cpp index ba5dd654a..7c05c5237 100644 --- a/tools/mid2agb/midi.cpp +++ b/tools/mid2agb/midi.cpp @@ -52,6 +52,7 @@ static std::int32_t s_absoluteTime; static int s_blockCount = 0; static int s_minNote; static int s_maxNote; +static int s_runningStatus = 0; void Seek(long offset) { @@ -181,19 +182,31 @@ void DetermineEventCategory(MidiEventCategory& category, int& typeChan, int& siz { typeChan = ReadInt8(); + if (typeChan < 0x80 && s_runningStatus != 0) + { + typeChan = s_runningStatus; + Skip(-1); + } + if (typeChan == 0xFF) { category = MidiEventCategory::Meta; size = 0; } + else if (typeChan >= 0xF8) + { + category = MidiEventCategory::Invalid; + } else if (typeChan >= 0xF0) { category = MidiEventCategory::SysEx; size = 0; + s_runningStatus = 0; } else if (typeChan >= 0x80) { category = MidiEventCategory::Control; + s_runningStatus = typeChan; switch (typeChan >> 4) { |