Beispiel #1
0
        public virtual void HandleEvent(MidiMessage m)
        {
            if (seek_processor != null)
            {
                var result = seek_processor.FilterMessage(m);
                switch (result)
                {
                case SeekFilterResult.PassAndTerminate:
                case SeekFilterResult.BlockAndTerminate:
                    seek_processor = null;
                    break;
                }

                switch (result)
                {
                case SeekFilterResult.Block:
                case SeekFilterResult.BlockAndTerminate:
                    return;                     // ignore this event
                }
            }
            else if (m.DeltaTime != 0)
            {
                var ms = GetDeltaTimeInMilliseconds(m.DeltaTime);
                time_manager.AdvanceBy(ms);
            }

            if (m.Event.StatusByte == 0xFF)
            {
                if (m.Event.Msb == MidiMetaType.Tempo)
                {
                    current_tempo = MidiMetaType.GetTempo(m.Event.Data);
                }
                else if (m.Event.Msb == MidiMetaType.TimeSignature && m.Event.Data.Length == 4)
                {
                    Array.Copy(m.Event.Data, current_time_signature, 4);
                }
            }

            OnEvent(m.Event);
            PlayDeltaTime += m.DeltaTime;
        }
Beispiel #2
0
        public virtual void HandleEvent(MidiMessage m)
        {
            if (m.DeltaTime != 0)
            {
                var ms = GetDeltaTimeInMilliseconds(m.DeltaTime);
                time_manager.AdvanceBy(ms);
            }
            if (m.Event.StatusByte == 0xFF)
            {
                if (m.Event.Msb == MidiMetaType.Tempo)
                {
                    current_tempo = MidiMetaType.GetTempo(m.Event.Data);
                }
                else if (m.Event.Msb == MidiMetaType.TimeSignature && m.Event.Data.Length == 4)
                {
                    Array.Copy(m.Event.Data, current_time_signature, 4);
                }
            }

            OnEvent(m.Event);
            PlayDeltaTime += m.DeltaTime;
        }