From f03e3887213a2e3ad4f049d80d66edfa24318561 Mon Sep 17 00:00:00 2001 From: probonopd Date: Mon, 28 Apr 2025 21:10:07 +0200 Subject: [PATCH] Fix operator enable/disable (#896) Enable/disable operators, closes #872 by calling m_pSynthesizer->setOPMask --- src/mididevice.cpp | 22 ++++++++++++++-------- updater.py | 4 ++-- 2 files changed, 16 insertions(+), 10 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) { diff --git a/updater.py b/updater.py index a88228c..30e6749 100644 --- a/updater.py +++ b/updater.py @@ -1,5 +1,5 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- # Updater for MiniDexed