663 |
event.Param.Note.Channel = channel; |
event.Param.Note.Channel = channel; |
664 |
break; |
break; |
665 |
case VirtualMidiDevice::EVENT_TYPE_CC: |
case VirtualMidiDevice::EVENT_TYPE_CC: |
666 |
event.Type = Event::type_control_change; |
switch (devEvent.Arg1) { |
667 |
event.Param.CC.Controller = devEvent.Arg1; |
case 0: // bank select MSB ... |
668 |
event.Param.CC.Value = devEvent.Arg2; |
SetMidiBankMsb(devEvent.Arg2); |
669 |
event.Param.CC.Channel = channel; |
continue; // don't push this event into FIFO |
670 |
|
case 32: // bank select LSB ... |
671 |
|
SetMidiBankLsb(devEvent.Arg2); |
672 |
|
continue; // don't push this event into FIFO |
673 |
|
default: // regular MIDI CC ... |
674 |
|
event.Type = Event::type_control_change; |
675 |
|
event.Param.CC.Controller = devEvent.Arg1; |
676 |
|
event.Param.CC.Value = devEvent.Arg2; |
677 |
|
event.Param.CC.Channel = channel; |
678 |
|
} |
679 |
break; |
break; |
680 |
|
case VirtualMidiDevice::EVENT_TYPE_PITCHBEND: |
681 |
|
event.Type = Event::type_pitchbend; |
682 |
|
event.Param.Pitch.Pitch = int(devEvent.Arg2 << 7 | devEvent.Arg1) - 8192; |
683 |
|
event.Param.Pitch.Channel = channel; |
684 |
|
break; |
685 |
|
case VirtualMidiDevice::EVENT_TYPE_PROGRAM: |
686 |
|
SendProgramChange(devEvent.Arg1); |
687 |
|
continue; // don't push this event into FIFO |
688 |
default: |
default: |
689 |
std::cerr << "AbstractEngineChannel::ImportEvents() ERROR: unknown event type (" |
std::cerr << "AbstractEngineChannel::ImportEvents() ERROR: unknown event type (" |
690 |
<< devEvent.Type << "). This is a bug!"; |
<< devEvent.Type << "). This is a bug!"; |