예제 #1
0
파일: MidiIn.cs 프로젝트: hanistory/hasuite
 private void Callback(IntPtr midiInHandle, MidiInterop.MidiInMessage message, IntPtr userData, IntPtr messageParameter1, IntPtr messageParameter2)
 {
     switch(message)
     {
         case MidiInterop.MidiInMessage.Open:
             // message Parameter 1 & 2 are not used
             break;
         case MidiInterop.MidiInMessage.Data:
             // parameter 1 is packed MIDI message
             // parameter 2 is milliseconds since MidiInStart
             if (MessageReceived != null)
             {
                 MessageReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32()));
             }
             break;
         case MidiInterop.MidiInMessage.Error:
             // parameter 1 is invalid MIDI message
             if (ErrorReceived != null)
             {
                 ErrorReceived(this, new MidiInMessageEventArgs(messageParameter1.ToInt32(), messageParameter2.ToInt32()));
             } 
             break;
         case MidiInterop.MidiInMessage.Close:
             // message Parameter 1 & 2 are not used
             break;
         case MidiInterop.MidiInMessage.LongData:
             // parameter 1 is pointer to MIDI header
             // parameter 2 is milliseconds since MidiInStart
             break;
         case MidiInterop.MidiInMessage.LongError:
             // parameter 1 is pointer to MIDI header
             // parameter 2 is milliseconds since MidiInStart
             break;
         case MidiInterop.MidiInMessage.MoreData:
             // parameter 1 is packed MIDI message
             // parameter 2 is milliseconds since MidiInStart
             break;
     }
 }
예제 #2
0
 private void Callback(IntPtr midiInHandle, MidiInterop.MidiOutMessage message, IntPtr userData, IntPtr messageParameter1, IntPtr messageParameter2)
 {
 }
예제 #3
0
 /// <summary>
 /// Opens a specified MIDI out device
 /// </summary>
 /// <param name="deviceNo">The device number</param>
 public MidiOut(int deviceNo)
 {
     this.callback = new MidiInterop.MidiOutCallback(Callback);
     MmException.Try(MidiInterop.midiOutOpen(out hMidiOut, (IntPtr)deviceNo, callback, IntPtr.Zero, MidiInterop.CALLBACK_FUNCTION), "midiOutOpen");
 }
예제 #4
0
 /// <summary>
 /// Sends a MIDI message to the MIDI out device
 /// </summary>
 /// <param name="message">The message to send</param>
 public void Send(int message)
 {
     MmException.Try(MidiInterop.midiOutShortMsg(hMidiOut, message), "midiOutShortMsg");
 }
예제 #5
0
 /// <summary>
 /// Reset the MIDI in device
 /// </summary>
 public void Reset()
 {
     MmException.Try(MidiInterop.midiInReset(hMidiIn), "midiInReset");
 }
예제 #6
0
 /// <summary>
 /// Stop the MIDI in device
 /// </summary>
 public void Stop()
 {
     MmException.Try(MidiInterop.midiInStop(hMidiIn), "midiInStop");
 }
예제 #7
0
 /// <summary>
 /// Start the MIDI in device
 /// </summary>
 public void Start()
 {
     MmException.Try(MidiInterop.midiInStart(hMidiIn), "midiInStart");
 }