public void MIDI_Play() { res = MIDI_WIN32_MSDN.midiOutGetDevCaps(0, ref formCap, (UInt32)Marshal.SizeOf(formCap)); res = MIDI_WIN32_MSDN.midiOutOpen(ref ohandle, 0, null, 0, 0); var prevTimestamp = -250; for (int i = 0; i < view.noteDict.Count; i++) { if (!view.noteDict[i].IsDisposed) { byte[] data = new byte[4]; data[0] = 0x90; data[1] = view.noteDict[i].noteLevel; data[2] = 127; // Note Volume uint msg = BitConverter.ToUInt32(data, 0); res = MIDI_WIN32_MSDN.midiOutShortMsg(ohandle, (int)msg); var sleepTimestamp = view.noteDict[i].noteTimeStamp - prevTimestamp; Thread.Sleep(sleepTimestamp); prevTimestamp = view.noteDict[i].noteTimeStamp; } } res = MIDI_WIN32_MSDN.midiOutClose(ohandle); }
public void MIDI_Play_newCode() { res = MIDI_WIN32_MSDN.midiOutGetDevCaps(0, ref formCap, (UInt32)Marshal.SizeOf(formCap)); res = MIDI_WIN32_MSDN.midiOutOpen(ref ohandle, 0, null, 0, 0); //MIDI_Model.HMIDIOUT hOut = new MIDI_Model.HMIDIOUT(); //MIDI_Model.MidiOutProc mOutProc = new MIDI_Model.MidiOutProc(hOut); for (int i = 0; i < view.noteDict.Count; i++) { byte[] data = new byte[4]; data[0] = 0x90; data[1] = view.noteDict[i].noteLevel; data[2] = 127; // Note Volume uint msg = BitConverter.ToUInt32(data, 0); res = MIDI_WIN32_MSDN.midiOutShortMsg(ohandle, (int)msg); } res = MIDI_WIN32_MSDN.midiOutClose(ohandle); }