Ejemplo n.º 1
0
 private void NativePortMessageReceived(object sender, MidiPacketsEventArgs e)
 {
     foreach (var packet in e.Packets)
     {
         var bytes = new byte[packet.Length];
         Marshal.Copy(packet.Bytes, bytes, 0, packet.Length);
         OnMessageReceived(bytes, 0, bytes.Length, TimeSpan.FromMilliseconds(packet.TimeStamp));
     }
 }
Ejemplo n.º 2
0
 void OnMessageReceived(object sender, MidiPacketsEventArgs e)
 {
     if (MessageReceived != null)
     {
         foreach (var p in e.Packets)
         {
             if (dispatch_bytes.Length < p.Length)
             {
                 dispatch_bytes = new byte[p.Length];
             }
             Marshal.Copy(p.Bytes, dispatch_bytes, 0, p.Length);
             MessageReceived(this, new MidiReceivedEventArgs()
             {
                 Data = dispatch_bytes, Start = 0, Length = p.Length, Timestamp = p.TimeStamp
             });
         }
     }
 }
Ejemplo n.º 3
0
		void MidiMessageReceived (object sender, MidiPacketsEventArgs midiPacketArgs)
		{
			var packets = midiPacketArgs.Packets;

			for (int i = 0; i < packets.Length; i++) {
				var packet = packets [i];
				byte[] data = new byte[packet.Length];
				Marshal.Copy (packet.Bytes, data, 0, packet.Length);
				var midiStatus = data [0];
				var midiCommand = midiStatus >> 4;

				if (midiCommand == 0x09) {
					var note = data [1] & 0x7F;
					var velocity = data [2] & 0x7F;

					int noteNumber = ((int)note) % 12;
					string noteType;
					switch (noteNumber) {
					case 0:
						noteType = "C";
						break;
					case 1:
						noteType = "C#";
						break;
					case 2:
						noteType = "D";
						break;
					case 3:
						noteType = "D#";
						break;
					case 4:
						noteType = "E";
						break;
					case 5:
						noteType = "F";
						break;
					case 6:
						noteType = "F#";
						break;
					case 7:
						noteType = "G";
						break;
					case 8:
						noteType = "G#";
						break;
					case 9:
						noteType = "A";
						break;
					case 10:
						noteType = "Bb";
						break;
					case 11:
						noteType = "B";
						break;
					default:
						throw new NotImplementedException ();
					}

					samplerUnit.MusicDeviceMIDIEvent ((uint)midiStatus, (uint)note, (uint)velocity);

					label.InvokeOnMainThread (delegate {
						label.Text = String.Format ("Playing: {0}: {1}", noteType, noteNumber);
					});
				}
			}
		}
Ejemplo n.º 4
0
        void MidiMessageReceived(object sender, MidiPacketsEventArgs midiPacketArgs)
        {
            var packets = midiPacketArgs.Packets;

            for (int i = 0; i < packets.Length; i++)
            {
                var    packet = packets [i];
                byte[] data   = new byte[packet.Length];
                Marshal.Copy(packet.Bytes, data, 0, packet.Length);
                var midiStatus  = data [0];
                var midiCommand = midiStatus >> 4;

                if (midiCommand == 0x09)
                {
                    var note     = data [1] & 0x7F;
                    var velocity = data [2] & 0x7F;

                    int    noteNumber = ((int)note) % 12;
                    string noteType;
                    switch (noteNumber)
                    {
                    case 0:
                        noteType = "C";
                        break;

                    case 1:
                        noteType = "C#";
                        break;

                    case 2:
                        noteType = "D";
                        break;

                    case 3:
                        noteType = "D#";
                        break;

                    case 4:
                        noteType = "E";
                        break;

                    case 5:
                        noteType = "F";
                        break;

                    case 6:
                        noteType = "F#";
                        break;

                    case 7:
                        noteType = "G";
                        break;

                    case 8:
                        noteType = "G#";
                        break;

                    case 9:
                        noteType = "A";
                        break;

                    case 10:
                        noteType = "Bb";
                        break;

                    case 11:
                        noteType = "B";
                        break;

                    default:
                        throw new NotImplementedException();
                    }

                    samplerUnit.MusicDeviceMIDIEvent((uint)midiStatus, (uint)note, (uint)velocity);

                    label.InvokeOnMainThread(delegate {
                        label.Text = String.Format("Playing: {0}: {1}", noteType, noteNumber);
                    });
                }
            }
        }