diff --git a/source/backend/CarlaPlugin.hpp b/source/backend/CarlaPlugin.hpp index 1b7253276..56dd7c922 100644 --- a/source/backend/CarlaPlugin.hpp +++ b/source/backend/CarlaPlugin.hpp @@ -576,7 +576,7 @@ public: * \param sendCallback Send message change to registered callback * \param block Block the audio callback */ - virtual void setProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); + virtual void setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); /*! * Change the current MIDI plugin program to \a index. @@ -590,7 +590,7 @@ public: * \param sendCallback Send message change to registered callback * \param block Block the audio callback */ - virtual void setMidiProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); + virtual void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback); /*! * This is an overloaded call to setMidiProgram().\n diff --git a/source/backend/plugin/CarlaPlugin.cpp b/source/backend/plugin/CarlaPlugin.cpp index 8da774b1c..c791ba4df 100644 --- a/source/backend/plugin/CarlaPlugin.cpp +++ b/source/backend/plugin/CarlaPlugin.cpp @@ -1267,37 +1267,31 @@ void CarlaPlugin::setChunkData(const char* const stringData) (void)stringData; } -void CarlaPlugin::setProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) +void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) { - CARLA_ASSERT(index >= -1 && index < static_cast(pData->prog.count)); + CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast(pData->prog.count),); #ifdef BUILD_BRIDGE - if (! gIsLoadingProject) - { + if (! gIsLoadingProject) { CARLA_ASSERT(! sendGui); // this should never happen } #endif - if (index > static_cast(pData->prog.count)) - return; - - const int32_t fixedIndex(carla_fixValue(-1, pData->prog.count, index)); - - pData->prog.current = fixedIndex; + pData->prog.current = index; #ifndef BUILD_BRIDGE if (sendOsc) - pData->engine->oscSend_control_set_current_program(pData->id, fixedIndex); + pData->engine->oscSend_control_set_current_program(pData->id, index); #endif if (sendCallback) - pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, fixedIndex, 0, 0.0f, nullptr); + pData->engine->callback(ENGINE_CALLBACK_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); // Change default parameter values - if (fixedIndex >= 0) + if (index >= 0) { #ifndef BUILD_BRIDGE if (sendGui) - uiProgramChange(fixedIndex); + uiProgramChange(index); #endif if (getType() == PLUGIN_GIG || getType() == PLUGIN_SF2 || getType() == PLUGIN_SFZ) @@ -1330,36 +1324,30 @@ void CarlaPlugin::setProgram(int32_t index, const bool sendGui, const bool sendO #endif } -void CarlaPlugin::setMidiProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) +void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) { - CARLA_ASSERT(index >= -1 && index < static_cast(pData->midiprog.count)); + CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast(pData->midiprog.count),); #ifdef BUILD_BRIDGE - if (! gIsLoadingProject) - { + if (! gIsLoadingProject) { CARLA_ASSERT(! sendGui); // this should never happen } #endif - if (index > static_cast(pData->midiprog.count)) - return; - - const int32_t fixedIndex(carla_fixValue(-1, pData->midiprog.count, index)); - - pData->midiprog.current = fixedIndex; + pData->midiprog.current = index; #ifndef BUILD_BRIDGE if (sendOsc) - pData->engine->oscSend_control_set_current_midi_program(pData->id, fixedIndex); + pData->engine->oscSend_control_set_current_midi_program(pData->id, index); #endif if (sendCallback) - pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, fixedIndex, 0, 0.0f, nullptr); + pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); - if (fixedIndex >= 0) + if (index >= 0) { #ifndef BUILD_BRIDGE if (sendGui) - uiMidiProgramChange(fixedIndex); + uiMidiProgramChange(index); #endif if (getType() == PLUGIN_GIG || getType() == PLUGIN_SF2 || getType() == PLUGIN_SFZ) diff --git a/source/backend/plugin/FluidSynthPlugin.cpp b/source/backend/plugin/FluidSynthPlugin.cpp index 45ccadee9..0aa641312 100644 --- a/source/backend/plugin/FluidSynthPlugin.cpp +++ b/source/backend/plugin/FluidSynthPlugin.cpp @@ -445,57 +445,51 @@ public: if (std::strcmp(key, "midiPrograms") != 0) return carla_stderr2("FluidSynthPlugin::setCustomData(\"%s\", \"%s\", \"%s\", %s) - type is not string", type, key, value, bool2str(sendGui)); - if (! fUses16Outs) - return CarlaPlugin::setCustomData(type, key, value, sendGui); - - QStringList midiProgramList(QString(value).split(":", QString::SkipEmptyParts)); - - if (midiProgramList.count() == MAX_MIDI_CHANNELS) + if (fUses16Outs) { - uint i = 0; - foreach (const QString& midiProg, midiProgramList) - { - CARLA_SAFE_ASSERT_BREAK(i < MAX_MIDI_CHANNELS); + QStringList midiProgramList(QString(value).split(":", QString::SkipEmptyParts)); - bool ok; - uint index = midiProg.toUInt(&ok); - - if (ok && index < pData->midiprog.count) + if (midiProgramList.count() == MAX_MIDI_CHANNELS) + { + uint i = 0; + foreach (const QString& midiProg, midiProgramList) { - const uint32_t bank = pData->midiprog.data[index].bank; - const uint32_t program = pData->midiprog.data[index].program; + CARLA_SAFE_ASSERT_BREAK(i < MAX_MIDI_CHANNELS); - fluid_synth_program_select(fSynth, i, fSynthId, bank, program); - fCurMidiProgs[i] = index; + bool ok; + uint index = midiProg.toUInt(&ok); - if (pData->ctrlChannel == static_cast(i)) + if (ok && index < pData->midiprog.count) { - pData->midiprog.current = index; - pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); + const uint32_t bank = pData->midiprog.data[index].bank; + const uint32_t program = pData->midiprog.data[index].program; + + fluid_synth_program_select(fSynth, i, fSynthId, bank, program); + fCurMidiProgs[i] = index; + + if (pData->ctrlChannel == static_cast(i)) + { + pData->midiprog.current = index; + pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); + } } + + ++i; } - ++i; + CARLA_SAFE_ASSERT(i == MAX_MIDI_CHANNELS); } } CarlaPlugin::setCustomData(type, key, value, sendGui); } - void setMidiProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override + void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override { - CARLA_ASSERT(fSynth != nullptr); - CARLA_ASSERT(index >= -1 && index < static_cast(pData->midiprog.count)); - - if (index < -1) - index = -1; - else if (index > static_cast(pData->midiprog.count)) - return; - - if (pData->ctrlChannel < 0 || pData->ctrlChannel >= MAX_MIDI_CHANNELS) - return; + CARLA_SAFE_ASSERT_RETURN(fSynth != nullptr,); + CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast(pData->midiprog.count),); - if (index >= 0) + if (index >= 0 && pData->ctrlChannel >= 0 && pData->ctrlChannel < MAX_MIDI_CHANNELS) { const uint32_t bank = pData->midiprog.data[index].bank; const uint32_t program = pData->midiprog.data[index].program; diff --git a/source/backend/plugin/LinuxSamplerPlugin.cpp b/source/backend/plugin/LinuxSamplerPlugin.cpp index 08d4af44e..4bc8e792f 100644 --- a/source/backend/plugin/LinuxSamplerPlugin.cpp +++ b/source/backend/plugin/LinuxSamplerPlugin.cpp @@ -394,66 +394,60 @@ public: if (std::strcmp(key, "midiPrograms") != 0) return carla_stderr2("LinuxSamplerPlugin::setCustomData(\"%s\", \"%s\", \"%s\", %s) - type is not string", type, key, value, bool2str(sendGui)); - if (! fUses16Outs) - return CarlaPlugin::setCustomData(type, key, value, sendGui); - - QStringList midiProgramList(QString(value).split(":", QString::SkipEmptyParts)); - - if (midiProgramList.count() == MAX_MIDI_CHANNELS) + if (fUses16Outs) { - uint i = 0; - foreach (const QString& midiProg, midiProgramList) - { - CARLA_SAFE_ASSERT_BREAK(i < MAX_MIDI_CHANNELS); - - bool ok; - uint index = midiProg.toUInt(&ok); + QStringList midiProgramList(QString(value).split(":", QString::SkipEmptyParts)); - if (ok && index < pData->midiprog.count) + if (midiProgramList.count() == MAX_MIDI_CHANNELS) + { + uint i = 0; + foreach (const QString& midiProg, midiProgramList) { - const uint32_t bank = pData->midiprog.data[index].bank; - const uint32_t program = pData->midiprog.data[index].program; - const uint32_t rIndex = bank*128 + program; + CARLA_SAFE_ASSERT_BREAK(i < MAX_MIDI_CHANNELS); - if (pData->engine->isOffline()) - { - fEngineChannels[i]->PrepareLoadInstrument(pData->filename, rIndex); - fEngineChannels[i]->LoadInstrument(); - } - else + bool ok; + uint index = midiProg.toUInt(&ok); + + if (ok && index < pData->midiprog.count) { - fInstrument->LoadInstrumentInBackground(fInstrumentIds[rIndex], fEngineChannels[i]); - } + const uint32_t bank = pData->midiprog.data[index].bank; + const uint32_t program = pData->midiprog.data[index].program; + const uint32_t rIndex = bank*128 + program; + + if (pData->engine->isOffline()) + { + fEngineChannels[i]->PrepareLoadInstrument(pData->filename, rIndex); + fEngineChannels[i]->LoadInstrument(); + } + else + { + fInstrument->LoadInstrumentInBackground(fInstrumentIds[rIndex], fEngineChannels[i]); + } - fCurMidiProgs[i] = index; + fCurMidiProgs[i] = index; - if (pData->ctrlChannel == static_cast(i)) - { - pData->midiprog.current = index; - pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); + if (pData->ctrlChannel == static_cast(i)) + { + pData->midiprog.current = index; + pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); + } } + + ++i; } - ++i; + CARLA_SAFE_ASSERT(i == MAX_MIDI_CHANNELS); } } CarlaPlugin::setCustomData(type, key, value, sendGui); } - void setMidiProgram(int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override + void setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) override { - CARLA_ASSERT(index >= -1 && index < static_cast(pData->midiprog.count)); - - if (index < -1) - index = -1; - else if (index > static_cast(pData->midiprog.count)) - return; - - if (pData->ctrlChannel < 0 || pData->ctrlChannel >= MAX_MIDI_CHANNELS) - return; + CARLA_SAFE_ASSERT_RETURN(index >= -1 && index < static_cast(pData->midiprog.count),); - if (index >= 0) + if (index >= 0 && pData->ctrlChannel >= 0 && pData->ctrlChannel < MAX_MIDI_CHANNELS) { const uint32_t bank = pData->midiprog.data[index].bank; const uint32_t program = pData->midiprog.data[index].program;