private void sendTest() { var channel = (byte)(0 | 1 | 2); var noteOn = (byte)(NoteOn | channel); var eventData = new MidiData(noteOn); eventData.Parameter1 = 127 / 2; eventData.Parameter2 = 127; var note1 = eventData.Data; _outPort.ShortData(eventData.Data); }
private void readInput() { MidiData midiData = new MidiData(); try { while (true) { byte[] command = mahPort.getCommand(); if (Monitor.TryEnter(outLock)) { try { if (outPort.IsOpen) { if (command.Length == 3) { midiData.Status = command[0]; midiData.Parameter1 = command[1]; midiData.Parameter2 = command[2]; outPort.ShortData(midiData); } else if (command.Length == 2) { midiData.Status = command[0]; midiData.Parameter1 = command[1]; midiData.Parameter2 = 0; //unused outPort.ShortData(midiData); } } } finally { Monitor.Exit(outLock); } } } } catch (TeVirtualMIDIException) { clearOtherMIDIout(); } }
private void MapData(int data) { MidiData eventData = new MidiData(data); byte status = eventData.Status; List <MidiNoteMapItem> items = null; #if DEBUG if (status == 0xFE) { return; } #endif // Note On if (status == _inNoteOn) { if (OutChannel > 0) { eventData.Status = _outNoteOn; } items = _index.Find(eventData.Parameter1); if (items != null && eventData.Parameter2 > 0) { if (eventData.Parameter2 + VelocityOffset <= 127) { eventData.Parameter2 += VelocityOffset; } else { eventData.Parameter2 = 127; } } } // Note Off if (status == _inNoteOff) { if (OutChannel > 0) { eventData.Status = _outNoteOff; } items = _index.Find(eventData.Parameter1); } if (items != null) { foreach (MidiNoteMapItem item in items) { eventData.Parameter1 = item.NoteOutNumber; // output mapped event _outPort.ShortData(eventData.Data); } } else if (MidiThru) // output unmapped event { _outPort.ShortData(eventData.Data); } }