diff options
Diffstat (limited to 'src/osd/modules/midi/portmidi.cpp')
-rw-r--r-- | src/osd/modules/midi/portmidi.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/osd/modules/midi/portmidi.cpp b/src/osd/modules/midi/portmidi.cpp index 699dbf2c9c2..418295a7a5c 100644 --- a/src/osd/modules/midi/portmidi.cpp +++ b/src/osd/modules/midi/portmidi.cpp @@ -237,13 +237,19 @@ int osd_midi_device_pm::read(uint8_t *pOut) { if (status & 0x80) // sys real-time imposing on us? { - if ((status == 0xf2) || (status == 0xf3)) + if (status == 0xf2) { *pOut++ = status; *pOut++ = Pm_MessageData1(rx_evBuf[msg].message); *pOut++ = Pm_MessageData2(rx_evBuf[msg].message); bytesOut += 3; } + else if (status == 0xf3) + { + *pOut++ = status; + *pOut++ = Pm_MessageData1(rx_evBuf[msg].message); + bytesOut += 2; + } else { *pOut++ = status; @@ -302,14 +308,21 @@ int osd_midi_device_pm::read(uint8_t *pOut) break; case 2: // song pos - case 3: // song select *pOut++ = status; *pOut++ = Pm_MessageData1(rx_evBuf[msg].message); *pOut++ = Pm_MessageData2(rx_evBuf[msg].message); bytesOut += 3; break; + case 3: // song select + *pOut++ = status; + *pOut++ = Pm_MessageData1(rx_evBuf[msg].message); + bytesOut += 2; + break; + default: // all other defined Fx messages are 1 byte + *pOut++ = status; + bytesOut += 1; break; } break; |