Selecting JX10 preset applies change to existing voices
JX10 (and possibly other synth plugins) may have its sound changed in a couple of ways. An internal program may be selected, e.g. via MIDI program change or its voice parameters may be set, e.g. via JALV preset change. Both methods will change the voice parameters affecting currently sounding voices. This has a few notable effects:
- A sound being played / held will change characteristics immediately which is unlikely to be desired behaviour
- A sound with long release may appear to trigger the new sound, e.g. changing from a patch with long envelope release that has been released can apply a louder, more noticeable sound.
I observe in the source code a note suggesting silencing voices during program change with a concern it may interfere with "snapshots" but I believe the current behaviour would impact such a mechanism similarly, i.e. restoring a snapshot or patch during playback has a mostly undesirable effect. Applying the fix here would not fix a preset change applied by hosts such as jalv because they do not send program change message.
I suggest during program / preset change silencing voices, maybe only those that have been released, though it may be beneficial to do all voices. I tried to do this but am using jalv as the host so hit the issue with identifying when a preset change has occurred. (I can test with program changes but that is not the full solution and does not resolve the issue on the platform I use, Zynthian.) I observe that jalv sends an LV2 event with body type = 9 after setting the parameters during a preset change. I have not been able to figure out whether this is a reliable trigger to detect preset change nor how to best describe the event within the source code.
If the LV2 event were described I may be able to submit a patch to resolve this issue.