Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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);
            }
        }