bool MIDIFileReadMultiTrack::mf_sysex ( MIDIClockTime time, int type, int len, unsigned char *s ) // funcVRM { MIDITimedMessage msg; msg.SetSysEx( type ); // set msg status byte (0xF0 or 0xF7) int num = len; // number of possible SysExURT header data bytes in msg, 0...5 if ( num > 5 ) num = 5; // add up to 5 starting bytes for SysExURT functions if ( num > 0 ) msg.SetByte2( s[0] ); if ( num > 1 ) msg.SetByte3( s[1] ); if ( num > 2 ) msg.SetByte4( s[2] ); if ( num > 3 ) msg.SetByte5( s[3] ); if ( num > 4 ) msg.SetByte6( s[4] ); msg.SetTime ( time ); MIDISystemExclusive sysex( len ); for ( int i = 0; i < len; ++i ) { sysex.PutSysByte ( s[i] ); } msg.SetDataLength( num ); return AddEventToMultiTrack ( msg, &sysex, cur_track ); }
bool MIDIFileReadMultiTrack::mf_metamisc ( MIDIClockTime time, int type, int len, unsigned char *data ) // funcVRM { // code for all miscellaneous meta events MIDITimedMessage msg; msg.SetTime ( time ); msg.SetStatus( META_EVENT ); msg.SetByte1( type ); if ( len <= 5 ) { if ( len > 0 ) msg.SetByte2( data[0] ); if ( len > 1 ) msg.SetByte3( data[1] ); if ( len > 2 ) msg.SetByte4( data[2] ); if ( len > 3 ) msg.SetByte5( data[3] ); if ( len > 4 ) msg.SetByte6( data[4] ); } // else msg add to track, but do'nt write to output midifile! msg.SetDataLength( len ); return AddEventToMultiTrack ( msg, 0, cur_track ); }