Fix #24630: Failure to load MuseSampler patches after instrument change #26275
+101
−56
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.
Resolves: #24630
In our current system, every
Drumset
we create starts off as an MS Basic patch and only becomes a MuseSampler patch once a mixer channel has been created for it (see usage ofshouldLoadDrumset
inPlaybackController
). Due to the fact that we don't create new channels for identical instruments in a given part, the knock-on effect is that the new drumset won't have a chance to load a MuseSampler patch.This PR does a couple of things:
Drumset
that already exists in the given part, we'll copy the patch from the existingDrumset
Drumset
(e.g. notehead changes) are copied for all identicalDrumsets
in a given part.In an ideal world, we could avoid this "manual syncing" by having
Instruments
share pointers to the sameDrumset
. Doing so would require an extensive overhaul of much of ourInstrument
/Drumset
logic, so we'll save this for another time.