void GotMidiEventD(MsgType t, int track, int offset, int imsg, byte bmsg, ulong ppq, bool rse) { switch (t) { case MsgType.MetaStr: lve.AddItem(c4, MeasureBarTick(ppq), ppq.ToString(), MetaHelpers.MetaNameFF(imsg), GetMetaString(offset), SmfStringFormatter.byteToString(GetMetaStringValue(offset))); break; case MsgType.MetaInf: case MsgType.System: lve.AddItem(GetEventColor(imsg, cR), MeasureBarTick(ppq), ppq.ToString(), MetaHelpers.MetaNameFF(imsg), GetMetaSTR(offset), SmfStringFormatter.byteToString(GetMetaValue(offset))); break; default: if (rse) { lve.AddItem(GetRseEventColor(Colors["225"]), MeasureBarTick(ppq), ch, GetRseEventString(offset), chRseV(offset), SmfStringFormatter.byteToString(GetRseEventValue(offset))); } else { lve.AddItem(GetEventColor(Colors["225"]), MeasureBarTick(ppq), ch, GetEventString(offset), chV(offset), SmfStringFormatter.byteToString(GetEventValue(offset))); } break; } }
void GotMidiEventE(object sender, MidiMessageEvent e) { switch (e.MsgT) { case MsgType.MetaStr: lve.AddItem(c4, MeasureBarTick(e.Ppq), "", MetaHelpers.MetaNameFF(e.IntMsg), GetMetaString(e.Offset), SmfStringFormatter.byteToString(GetMetaStringValue(e.Offset))); break; case MsgType.MetaInf: case MsgType.System: lve.AddItem(GetEventColor(e.IntMsg, cR), MeasureBarTick(e.Ppq), "", MetaHelpers.MetaNameFF(e.IntMsg), GetMetaSTR(e.Offset), SmfStringFormatter.byteToString(GetMetaValue(e.Offset))); break; default: if (e.IsRse) { lve.AddItem(GetRseEventColor(Colors["225"]), MeasureBarTick(e.Ppq), ch, GetRseEventString(e.Offset), chRseV(e.Offset), SmfStringFormatter.byteToString(GetRseEventValue(e.Offset))); } else { lve.AddItem(GetEventColor(Colors["225"]), MeasureBarTick(e.Ppq), ch, GetEventString(e.Offset), chV(e.Offset), SmfStringFormatter.byteToString(GetEventValue(e.Offset))); } break; } }
// // META STRING // --------------- #region Meta STRING Helpers /// <summary> /// Return a string value per meta-event or throw exception. /// </summary> /// <param name="trk"></param> /// <param name="pos"></param> /// <returns></returns> public string GetMetaSTR(int offset) { int flag = SmfFileHandle.Get16BitInt32(SelectedTrackNumber, offset); switch ((MetaMsgU16FF)flag) { //0xff00 case MetaMsgU16FF.SequenceNo: return(MetaHelpers.meta_FF00( SmfFileHandle[SelectedTrackNumber, offset + 3], SmfFileHandle[SelectedTrackNumber, offset + 4] )); //0xff20 case MetaMsgU16FF.Chanel: /*SmfStringFormatter.meta_FF20( trk, pos+3 )*/ return(SmfFileHandle[SelectedTrackNumber, offset + 3].ToString()); //0xff51 case MetaMsgU16FF.Tempo: return(MetaHelpers.meta_FF51(Convert.ToInt32(SmfFileHandle[SelectedTrackNumber].Get24Bit(offset + 3)))); //0xff54: case MetaMsgU16FF.SMPTE: return(MetaHelpers.meta_FF54()); // "?" //0xff58: case MetaMsgU16FF.TimeSignature: return(MetaHelpers.meta_FF58(SmfFileHandle[SelectedTrackNumber], offset)); //0xff59: case MetaMsgU16FF.KeySignature: return(MetaHelpers.meta_FF59(SmfFileHandle[SelectedTrackNumber], offset)); //0xff2f case MetaMsgU16FF.EndOfTrack: return(MetaHelpers.meta_FF2F()); //0xff7f case MetaMsgU16FF.SystemSpecific: // actually 'Sequencer-Specific Meta-Event' //Sequencer Specific long result = 0; int nextOffset = GetIntVar(offset + 2, out result) - offset; return(SmfFileHandle[SelectedTrackNumber, offset, Convert.ToInt32(result) + 3].StringifyHex()); case MetaMsgU16FF.SystemExclusive: //System Exclusive long result1 = 0; int nextOffset1 = GetIntVar(offset + 1, out result1) - offset; return(SmfFileHandle[SelectedTrackNumber, offset, Convert.ToInt32(result1) + 4].StringifyHex()); default: // check for a channel message if (runningStatus32 == 0xF0) { long ro = 0; int no = GetIntVar(offset + 1, out ro) - offset; return(SmfFileHandle[SelectedTrackNumber, offset, Convert.ToInt32(ro) + 2].StringifyHex()); } string msg = string.Format( "We're not sure how to handle this message {0:X4} {1:X2}. Treating data as META event.", RunningStatus32, SmfFileHandle[SelectedTrackNumber, offset, 2].StringifyHex() ); MessageBox.Show(msg, "Press OK to continue", MessageBoxButtons.OK); return(System.Text.Encoding.UTF8.GetString(SmfFileHandle[SelectedTrackNumber, offset, SmfFileHandle[SelectedTrackNumber, offset + 2] + 3])); } }
void GotMidiEventD(MidiMsgType t, int track, int offset, int imsg, byte bmsg, ulong ppq, int rse, bool isrse) { timing.SolveSamples( ppq, UserInterface.VstContainer.VstPlayer.Settings.Rate, UserInterface.MidiParser.MidiTimeInfo.Tempo, UserInterface.MidiParser.SmfFileHandle.Division, true ); switch (t) { case MidiMsgType.MetaStr: lve.AddItem(MidiReader.c4, UserInterface.MidiParser.GetMbtString(ppq), string.Empty, string.Empty, MetaHelpers.MetaNameFF(imsg), UserInterface.MidiParser.GetMetaString(offset)); break; case MidiMsgType.MetaInf: lve.AddItem(UserInterface.MidiParser.GetEventColor(imsg, MidiReader.cR), UserInterface.MidiParser.GetMbtString(ppq), string.Empty, string.Empty, MetaHelpers.MetaNameFF(imsg), UserInterface.MidiParser.GetMetaSTR(offset)); break; case MidiMsgType.SysCommon: case MidiMsgType.System: lve.AddItem(UserInterface.MidiParser.GetEventColor(imsg, MidiReader.cR), UserInterface.MidiParser.GetMbtString(ppq), string.Empty, string.Empty, MetaHelpers.MetaNameFF(imsg), UserInterface.MidiParser.GetMetaSTR(offset)); break; default: // case MsgType.Channel: if (isrse) { lve.AddItem(UserInterface.MidiParser.GetRseEventColor(UserInterface.MidiParser.Colors["225"]), UserInterface.MidiParser.GetMbtString(ppq), timing.TimeString, bmsg == 0xF0?"":(rse & 0x0F).ToString(), UserInterface.MidiParser.GetRseEventString(offset), UserInterface.MidiParser.chRseV(offset)); } else { lve.AddItem(UserInterface.MidiParser.GetEventColor(UserInterface.MidiParser.Colors["225"]), UserInterface.MidiParser.GetMbtString(ppq), timing.TimeString, bmsg == 0xF0?"":(rse & 0x0F).ToString(), UserInterface.MidiParser.GetEventString(offset), UserInterface.MidiParser.chV(offset)); } // if (t== MsgType.NoteOn||t== MsgType.NoteOff) UserInterface.MidiParser.CheckNote(t,ppq,Convert.ToByte((rse) & 0x0F),offset,bmsg,isrse); break; } }