byte[] GetSystemEventValue(int running, int offset, int plus) { List <byte> returned = new List <byte> { (byte)(running & 0xff) }; int ExpandedRSE = running == 0xFF7F ? running : running << 8; int delta = GetNextRsePosition(offset + plus); if (delta == -1 && running != 0xFF7F) { Debug.Assert(false, "Unknown Message!"); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { returned.Clear(); returned.AddRange(SmfFileHandle[selectedTrackNumber, offset, 1]); returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { returned.Clear(); returned.AddRange(SmfFileHandle[selectedTrackNumber, offset, 2]); returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } byte[] bytes = returned.ToArray(); return(bytes); }
byte[] GetEventValue(int offset, int plus) { List <byte> returned = new List <byte> { (byte)(RunningStatus32 & 0xff) }; int ExpandedRSE = RunningStatus32 << 8; int delta = GetNextRsePosition(offset + plus); if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { returned.Clear(); returned.AddRange(SmfFileHandle[selectedTrackNumber, offset, 1]); returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { returned.Clear(); returned.AddRange(SmfFileHandle[selectedTrackNumber, offset, 2]); returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { returned.AddRange(SmfFileHandle[SelectedTrackNumber, offset + plus, 2]); } else if (delta == -1) { Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE)); } byte[] bytes = returned.ToArray(); return(bytes); }
/// <summary> /// Next Position (rse) /// </summary> int Increment(int offset, int plus) { int ExpandedRSE = RunningStatus32 << 8; if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return(offset + plus + 1); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return(offset + plus + 1); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return(offset + plus + 1); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return(offset + plus + 1); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return(offset + plus); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return(offset + plus); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { return(offset + plus + 1); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { Debug.Print( "SSX {1:X} :: {2:X} :: {0:X2}", SmfFileHandle[SelectedTrackNumber, offset + plus + SmfFileHandle[SelectedTrackNumber, offset + plus]], ExpandedRSE, RunningStatus32 ); return(offset + plus + SmfFileHandle[SelectedTrackNumber, offset + plus]); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return(offset + plus + SmfFileHandle[SelectedTrackNumber, offset + plus]); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return(offset + plus); } else if (!MidiMessageInfo.IsMidiBMessage(RunningStatus32)) { /*Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE) )*/ return(-1); } return(-1); }
int GetEventLength(int offset, int plus) { int ExpandedRSE = RunningStatus32 << 8; int delta = GetNextRsePosition(offset + plus); if (delta == -1) { Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE)); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return(2); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { // this may never occur here and should in the Meta part return(2); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { return(GetMetaLen(offset, plus)); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return(GetMetaLen(offset, plus)); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return(GetMetaLen(offset, plus)); } return(-1); }
// // Color Helper (For WinForms) // --------------------------------- #region Event Color /// <inheritdoc /> public Color GetRseEventColor(Color clr) { int ExpandedRSE = RunningStatus32 << 8; if (!MidiMessageInfo.IsMidiBMessage(RunningStatus32)) { Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE)); return(clr); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return(MetaHelpers.Colors["rse2"]); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return(MetaHelpers.Colors["rse2"]); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return(MetaHelpers.Colors["rse2"]); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return(MetaHelpers.Colors["rse3"]); } return(ListView.DefaultBackColor); }
string GetEventString(int offset, int plus) { int ExpandedRSE = RunningStatus32 << 8; if (!MidiMessageInfo.IsMidiBMessage(RunningStatus32)) { Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE)); return(null); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return(GetNoteMsg(0, offset + plus, m9)); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return(GetNoteMsg(0, offset + plus, m8)); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return(string.Format(mA, SmfFileHandle[SelectedTrackNumber, offset + plus], SmfFileHandle[SelectedTrackNumber, offset + plus + 1])); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return(string.Format(mB, SmfStringFormatter.cc[SmfFileHandle.Get8Bit(SelectedTrackNumber, offset + plus)].Replace((char)0xa, (char)0x20).Trim(), SmfFileHandle.Get8Bit(SelectedTrackNumber, offset + plus + 1))); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return(SmfStringFormatter.patches[SmfFileHandle[SelectedTrackNumber, offset + plus]].Replace((char)0xa, (char)0x20).Trim()); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return(MidiMessageInfo.ChannelAftertouchRange.Name); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { return(MidiMessageInfo.PitchBendRange.Name); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { return(MidiMessageInfo.SystemExclusiveMessageRange.Name); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return(MidiMessageInfo.SystemCommonMessageRange.Name); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return(MidiMessageInfo.SystemRealtimeMessageRange.Name); } return(null); }
string GetEventValueString(int offset, int plus) { int ExpandedRSE = RunningStatus32 << 8; int delta = GetNextRsePosition(offset + plus); if (delta == -1) { Debug.Assert(false, string.Format("warning… {0:X2}", ExpandedRSE)); } else if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 2]).StringifyHex()); } else if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]).StringifyHex()); } else if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, SmfFileHandle[SelectedTrackNumber, offset + plus] + 1]).StringifyHex()); } else if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return((SmfFileHandle[SelectedTrackNumber, offset + plus, 4]).StringifyHex()); } return(null); }
/// <summary>Next Position (rse)</summary> int Increment(int offset, int plus) { int ExpandedRSE = RunningStatus32 << 8; if (MidiMessageInfo.IsNoteOff(ExpandedRSE)) { return(offset + plus + 1); } if (MidiMessageInfo.IsNoteOn(ExpandedRSE)) { return(offset + plus + 1); } if (MidiMessageInfo.IsKeyAftertouch(ExpandedRSE)) { return(offset + plus + 1); } if (MidiMessageInfo.IsControlChange(ExpandedRSE)) { return(offset + plus + 1); } if (MidiMessageInfo.IsProgramChange(ExpandedRSE)) { return(offset + plus); } if (MidiMessageInfo.IsChannelAftertouch(ExpandedRSE)) { return(offset + plus); } if (MidiMessageInfo.IsPitchBend(ExpandedRSE)) { return(offset + plus + 1); } if (MidiMessageInfo.IsSystemMessage(ExpandedRSE)) { return(offset + plus + SmfFileHandle[SelectedTrackNumber, offset + plus]); } if (MidiMessageInfo.IsSystemCommon(ExpandedRSE)) { return(offset + plus + SmfFileHandle[SelectedTrackNumber, offset + plus]); } if (MidiMessageInfo.IsSystemRealtime(ExpandedRSE)) { return(offset + plus); } if (!MidiMessageInfo.IsMidiBMessage(RunningStatus32)) { return(-1); } return(-1); }