toggling MIDI input loses all changes to synthesizer & effects

• Apr 16, 2019 - 16:10
Reported version
3.x-dev
Type
Functional
Frequency
Many
Severity
S3 - Major
Reproducibility
Always
Status
active
Regression
Yes
Workaround
No
Project

Steps to reproduce:

  1. Go to View -> Synthesizer and do one or more of the following:
    a. Replace MuseScore_General.sf3 with a different SoundFont.
    b. Change any of the master effects, such as setting "Effect A" to "NoEffect".
  2. Click the "Toggle 'MIDI Input'" button to turn off MIDI input, then click to turn it on again.

Result: All of the changes made in step 1 are lost, and the SoundFont and all effects are reset to default. However, the Synthesizer window still shows the changes made in step 1, even though this information is no longer accurate.

I ran a git bisect, which narrowed the bug down to the following commit:


commit 32a6b128ebac6fb6ff11596385c5088825c65a5d
Author: Mark McKay
Date: Mon Nov 26 19:29:14 2018 -0500

fix #276194 Allow MIDI device refreshed without restart of MuseScore

Fixed memory leak/lack of handle closing when deleting Port Audio engine.

Can now have MIDI devices be discovered by pressing button in Prefs/IO or by toggling the MIDI enabled button.

:040000 040000 580dbd0d10c83c7d93d2b93ff2eab4fa1d2ee924 d063746a404c59255a979be3cbb6c4ed69fb207e M mscore


As expected, the "Restart Audio and MIDI Devices" button in Preferences -> I/O also causes the same bug, so it would seem the issue is that restarting the audio/MIDI engine isn't taking user changes to the synthesizer settings into account.

That being said, why does toggling MIDI input need to reset the whole synthesizer? When this happens, it causes a big lag while the SoundFont is re-loaded.