private void MIDIInList_SelectedIndexChanged(object sender, EventArgs e) { if (handle != IntPtr.Zero) { WinMM.midiInStop(handle); WinMM.midiInClose(handle); } midiInProc = new WinMM.MidiInProc(MidiProc); int retval = WinMM.midiInOpen(out handle, MIDIInList.SelectedIndex, midiInProc, IntPtr.Zero, WinMM.CALLBACK_FUNCTION); WinMM.midiInStart(handle); }
public void Open(MidiInHandler callback) { proc = new WinMM.MidiInProc((int h, uint msg, uint instance, uint param1, uint param2) => callback(this, new MidiMessage(param1, param2))); WinMM.midiInOpen(ref handle, Id, proc, 0, WinMM.CALLBACK_FUNCTION); opened = true; }