コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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);
        }