/// <summary> /// Receives a long midi error message. /// </summary> /// <param name="buffer">The buffer containing the long midi message error.</param> /// <param name="timestamp">Not used. A new timestamp is generated.</param> public override void LongError(MidiBufferStream buffer, long timestamp) { if (NextErrorReceiver != null) { NextErrorReceiver.LongError(buffer, GetCurrentTimestamp()); } }
/// <summary> /// Handles the long and short error messages. /// </summary> /// <param name="umsg">Type of message.</param> /// <param name="param1">First parameter.</param> /// <param name="param2">Second parameter.</param> /// <returns>Returns true if the <paramref name="umsg"/> has been handled.</returns> private bool HandleErrorMessage(uint umsg, IntPtr param1, IntPtr param2) { bool handled = true; switch (umsg) { case NativeMethods.MIM_ERROR: NextErrorReceiver.ShortError(param1.ToInt32(), param2.ToInt32()); break; case NativeMethods.MIM_LONGERROR: var buffer = BufferManager.FindBuffer(param1); if (buffer != null) { NextErrorReceiver.LongError(buffer, param2.ToInt32()); if (AutoReturnBuffers) { BufferManager.ReturnBuffer(buffer); } } break; default: handled = false; break; } return(handled); }
/// <summary> /// Dispatches the <paramref name="record"/> to the appropriate receiver component. /// </summary> /// <param name="record">Must not be null.</param> private void DispatchRecord(MidiPortEvent record) { Contract.Requires(record != null); Check.IfArgumentNull(record, "record"); if (NextReceiver != null) { switch (record.RecordType) { case MidiPortEventType.MoreData: case MidiPortEventType.ShortData: NextReceiver.ShortData(record.Data, (int)record.Timestamp); break; case MidiPortEventType.LongData: NextReceiver.LongData(record.Buffer, (int)record.Timestamp); break; } } if (NextErrorReceiver != null) { switch (record.RecordType) { case MidiPortEventType.ShortError: NextErrorReceiver.ShortError(record.Data, (int)record.Timestamp); break; case MidiPortEventType.LongError: NextErrorReceiver.LongError(record.Buffer, (int)record.Timestamp); break; } } if (NextPortEventReceiver != null) { NextPortEventReceiver.PortEvent(record); } }