public WinMMMidiInput(IMidiPortDetails details) { Details = details; // prevent garbage collection of the delegate midiInProc = HandleMidiInProc; DieOnError(WinMMNatives.midiInOpen(out handle, uint.Parse(Details.Id), midiInProc, IntPtr.Zero, MidiInOpenFlags.Function | MidiInOpenFlags.MidiIoStatus)); DieOnError(WinMMNatives.midiInStart(handle)); while (lmBuffers.Count < LONG_BUFFER_COUNT) { var buffer = new LongMessageBuffer(handle); buffer.PrepareHeader(); buffer.AddBuffer(); lmBuffers.Add(buffer.Ptr, buffer); } Connection = MidiPortConnectionState.Open; }
public WinMMMidiInput(IMidiPortDetails details) { Details = details; WinMMNatives.midiInOpen(out handle, uint.Parse(Details.Id), HandleMidiInProc, IntPtr.Zero, MidiInOpenFlags.Function); Connection = MidiPortConnectionState.Open; }