I am using an MPESynthesiser derived class as the base for my synth. In it I have:
void notePitchbendChanged(MPENote changedNote) override {
DBG("NOTE PITCH BEND CHANGED IN SYNTHESISER " << changedNote.pitchbend.asSignedFloat());
DBG("NOTE PITCH BEND CHANGED IN SYNTHESISER " << changedNote.totalPitchbendInSemitones);
//===============
//LEGACY MODE
//===============
if (legacyOnOff) {
const ScopedLock sl(voicesLock);
for (auto* voice : voices) {
MPESynthesiserVoiceInherited* voiceInherited = (MPESynthesiserVoiceInherited*)voice;
voiceInherited->setLegacyPitchWheelAmount(changedNote.totalPitchbendInSemitones);
voiceInherited->notePitchbendChanged();
}
}
//===============
//MPE MODE
//===============
else {
MPESynthesiser::notePitchbendChanged(changedNote);
}
}
However, while it previously (on old versions of JUCE a few years ago) worked fine with changedNote.totalPitchbendInSemitones, this now returns 0 every time.
I have running on initialization to configure MPE vs. Legacy mode:
//UPDATE LEGACY MODE
void updateLegacyMode() {
DBG("UPDATE LEGACY MODE");
if (legacyOnOff) {
DBG("SYNTHESISER: MPE Legacy Mode || PITCH GLOBAL WHEEL" << mpePitchWheelGlobal);
enableLegacyMode(mpePitchWheelGlobal);
setPressureTrackingMode(MPEInstrument::allNotesOnChannel);
setPitchbendTrackingMode(MPEInstrument::allNotesOnChannel);
setTimbreTrackingMode(MPEInstrument::allNotesOnChannel);
}
else {
DBG("SYNTHESISER: MPE Mode");
MPEZoneLayout zoneLayout;
zoneLayout.setLowerZone(15, mpePitchWheelChannel, mpePitchWheelGlobal);
setZoneLayout(zoneLayout);
}
// update voices
for (auto* voice : voices) {
MPESynthesiserVoiceInherited* voiceInherited = (MPESynthesiserVoiceInherited*)voice;
voiceInherited->setLegacyPitchWheelMode(legacyOnOff);
}
}
I can see this is running and it is setting the Legacy Mode to a pitch wheel value of not 0.
Yet I can’t get anything useful out of changedNote.totalPitchbendInSemitones. It always reads 0, while changedNote.pitchbend.asSignedFloat() gives real data.
Did something change? This used to work. What might it be? I can just re-write it to use changedNote.pitchbend.asSignedFloat(), set that into my voices, and manage it in there, but I don’t know why this is not working.
Thanks for any help.
