From 9d7caff14fc33fca2e8ffab551f7f64b3fa30e75 Mon Sep 17 00:00:00 2001 From: probonopd Date: Mon, 28 Apr 2025 20:57:01 +0200 Subject: [PATCH] Enable/disable operators by calling m_pSynthesizer->setOPMask --- src/mididevice.cpp | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/mididevice.cpp b/src/mididevice.cpp index d657103..0695245 100644 --- a/src/mididevice.cpp +++ b/src/mididevice.cpp @@ -718,14 +718,20 @@ void CMIDIDevice::HandleSystemExclusive(const uint8_t* pMessage, const size_t nL default: if(sysex_return >= 300 && sysex_return < 500) { - LOGDBG("SysEx voice parameter change: Parameter %d value: %d",pMessage[4] + ((pMessage[3] & 0x03) * 128), pMessage[5]); - m_pSynthesizer->setVoiceDataElement(pMessage[4] + ((pMessage[3] & 0x03) * 128), pMessage[5],nTG); - switch(pMessage[4] + ((pMessage[3] & 0x03) * 128)) - { - case 134: - m_pSynthesizer->notesOff(0,nTG); - break; - } + uint8_t param = pMessage[4] + ((pMessage[3] & 0x03) * 128); + if(param == 155) { + LOGDBG("Operators enabled: %d%d%d%d%d%d", (pMessage[5] & 0x20) ? 1 : 0, (pMessage[5] & 0x10) ? 1 : 0, (pMessage[5] & 0x08) ? 1 : 0, (pMessage[5] & 0x04) ? 1 : 0, (pMessage[5] & 0x02) ? 1 : 0, (pMessage[5] & 0x01) ? 1 : 0); + m_pSynthesizer->setOPMask(pMessage[5], nTG); + } else { + LOGDBG("SysEx voice parameter change: Parameter %d value: %d",pMessage[4] + ((pMessage[3] & 0x03) * 128), pMessage[5]); + m_pSynthesizer->setVoiceDataElement(pMessage[4] + ((pMessage[3] & 0x03) * 128), pMessage[5],nTG); + switch(pMessage[4] + ((pMessage[3] & 0x03) * 128)) + { + case 134: + m_pSynthesizer->notesOff(0,nTG); + break; + } + } } else if(sysex_return >= 500 && sysex_return < 600) {