setOperatorMask

more-midi-functions
probonopd 5 days ago committed by GitHub
parent 86bdc6f173
commit ce6f3348fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 23
      src/minidexed.cpp

@ -2185,17 +2185,28 @@ unsigned CMiniDexed::getModController (unsigned controller, unsigned parameter,
}
void CMiniDexed::setOperatorMute(uint8_t operatorIndex, unsigned nTG) {
if (nTG >= CConfig::AllToneGenerators || operatorIndex >= 6) {
LOGERR("Invalid tone generator or operator index: TG=%u, Operator=%u", nTG, operatorIndex);
void CMiniDexed::setOperatorMask(uint8_t operatorMask, unsigned nTG) {
if (nTG >= CConfig::AllToneGenerators) {
LOGERR("Invalid tone generator: TG=%u", nTG);
return;
}
// Toggle the operator mask for the specified operator
m_uchOPMask[nTG] ^= (1 << operatorIndex);
// According to Yamaha DX7/TX SysEx format:
// Bit 0 = OP6, Bit 1 = OP5, Bit 2 = OP4, Bit 3 = OP3, Bit 4 = OP2, Bit 5 = OP1
// For MiniDexed: Bit 0 = OP1, Bit 1 = OP2, etc. - need to reverse the bit order to match
LOGDBG("Operator %u mute toggled for TG %u. New mask: 0x%02X", operatorIndex, nTG, m_uchOPMask[nTG]);
uint8_t reversedMask = 0;
for (int i = 0; i < 6; i++) {
if (operatorMask & (1 << i)) {
reversedMask |= (1 << (5 - i));
}
}
m_uchOPMask[nTG] = reversedMask;
LOGDBG("Set operator mask for TG %u: Yamaha=0x%02X, Reversed=0x%02X", nTG, operatorMask, reversedMask);
// Apply the updated operator mask to the tone generator
if (nTG < m_nToneGenerators) {
m_pTG[nTG]->setOPAll(m_uchOPMask[nTG]);
}
}

Loading…
Cancel
Save