From b886aa1fcafc16fe93bfe19e2f63b4089234f9f6 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Sat, 2 Jan 2016 23:57:36 +0800 Subject: Mystic Flier. (WTF) --- qmpmidiread.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'qmpmidiread.cpp') diff --git a/qmpmidiread.cpp b/qmpmidiread.cpp index 8f7ad28..c9fff34 100644 --- a/qmpmidiread.cpp +++ b/qmpmidiread.cpp @@ -8,6 +8,10 @@ #include #include #include "qmpmidiplay.hpp" +const char* GM1SysX={"\xF0\x7E\x7F\x09\x01\xF7"}; +const char* GM2SysX={"\xF0\x7E\x7F\x09\x03\xF7"}; +const char* GSSysEx={"\xF0\x41\x10\x42\x12\x40\x00\x7F\x00\x41\xF7"}; +const char* XGSysEx={"\xF0\x43\x10\x4C\x00\x00\x7E\x00\xF7"}; bool cmp(SEvent *a,SEvent *b){return a->time-b->time?a->timetime:a->iidiid;} void CMidiFile::error(int fatal,const char* format,...) { @@ -147,8 +151,19 @@ retry: } else if((type&0x0F)==0x00||(type&0x0F)==0x07)//SysEx { - uint32_t len=readVL(); - while(len--){++byteread;fgetc(f);} + uint32_t len=readVL(),c;char* str=NULL; + str=new char[len+8]; + if((type&0x0F)==0x00) + { + str[0]=0xF0;++len; + for(c=1;c