522 |
VirtualMidiDevice* pDev = devices[i]; |
VirtualMidiDevice* pDev = devices[i]; |
523 |
// I think we can simply flush the whole FIFO(s), the user shouldn't be so fast ;-) |
// I think we can simply flush the whole FIFO(s), the user shouldn't be so fast ;-) |
524 |
while (pDev->GetMidiEventFromDevice(devEvent)) { |
while (pDev->GetMidiEventFromDevice(devEvent)) { |
525 |
event.Type = |
switch (devEvent.Type) { |
526 |
(devEvent.Type == VirtualMidiDevice::EVENT_TYPE_NOTEON) ? |
case VirtualMidiDevice::EVENT_TYPE_NOTEON: |
527 |
Event::type_note_on : Event::type_note_off; |
event.Type = Event::type_note_on; |
528 |
event.Param.Note.Key = devEvent.Key; |
event.Param.Note.Key = devEvent.Arg1; |
529 |
event.Param.Note.Velocity = devEvent.Velocity; |
event.Param.Note.Velocity = devEvent.Arg2; |
530 |
event.pEngineChannel = this; |
break; |
531 |
|
case VirtualMidiDevice::EVENT_TYPE_NOTEOFF: |
532 |
|
event.Type = Event::type_note_off; |
533 |
|
event.Param.Note.Key = devEvent.Arg1; |
534 |
|
event.Param.Note.Velocity = devEvent.Arg2; |
535 |
|
break; |
536 |
|
case VirtualMidiDevice::EVENT_TYPE_CC: |
537 |
|
event.Type = Event::type_control_change; |
538 |
|
event.Param.CC.Controller = devEvent.Arg1; |
539 |
|
event.Param.CC.Value = devEvent.Arg2; |
540 |
|
break; |
541 |
|
default: |
542 |
|
std::cerr << "AbstractEngineChannel::ImportEvents() ERROR: unknown event type (" |
543 |
|
<< devEvent.Type << "). This is a bug!"; |
544 |
|
continue; |
545 |
|
} |
546 |
|
event.pEngineChannel = this; |
547 |
// copy event to internal event list |
// copy event to internal event list |
548 |
if (pEvents->poolIsEmpty()) { |
if (pEvents->poolIsEmpty()) { |
549 |
dmsg(1,("Event pool emtpy!\n")); |
dmsg(1,("Event pool emtpy!\n")); |