(fix) FX units not working on all samplers #15971
Open
+18
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #15799
-> this PR: enjoy the noise : )
-> 2.5: no echo. toggle Fx1 Off and On before engaging Echo & Co, then it works.
The root cause:
short: the fx I/O routing table is not updated instantly when additional samplers are added to the engine (or any inputs actually).
long:
EffectsManagerm_pEffectsManager->setup()which initializes all EngineEffectChains with the registred inputs/outputsEffectsManager, then in each (standard) effect chain and the Fx routing CO states are also restored correctly (see GUI, FX1 on sampler 5)-> BUT the I/O maps used by
EngineEffectChains are not updated, hence engaging an effect has no ..effect for those new inputs-> the I/O maps are extended for the new key, but
ChannelHandleMap::maybeExpandabviously can't initialize the outputs mapThe fix:
EffectsManager::setup()-- afaict)ChannelHandleMap[input]as before but then assign the stored output mapMaybe alternatively we could add a method
EngineEffectChain::registerInputChanneland use a newEffectsRequest::MessageTypeto send the request via the message pipe.But I doubt it has any benefits over the current fix. Does it?