View Issue Details
|Plugins / VST
|x86 / x64
|OpenMPT 1.28.08.00 / libopenmpt 0.4.9 (upgrade first)
|0001281: Cannot change preset bank in Synth1
I try to use Synth1 (https://daichilab.sakura.ne.jp/softsynth/index.html) version 1.13 beta3.
These versions of wine have been tested:
|Steps To Reproduce
The issue is not reproducible on Windows 10.
I was able to get the preset bank selection to work on wine by running the plugin in the bridge.
The preset bank selection also work in the following VST hosts running on the same version of wine:
|No tags attached.
|Has the bug occurred in previous versions?
|Tested code revision (in case you know it)
Synth1 is (sadly) known to be a trouble maker with wine (it runs more stable and less troubling on a native Windows installation, so if you have the resources, install Windows inside a virtual machine and use OpenMPT in there). You can use 64bit version and bridge it. This gives you a black window, if you drag it around behind other windows you might get something visible. Only in this constellation changing the preset in the overlay works.
Generally OpenMPT is not involved with either drawing the plugin UI or executing a bank switch. Of course it is possible that there are differences in hosts which would cause Synth1 to behave differently, but such differences would have to be on a very low level that we most likely don't have any influence over (e.g. MFC's window message loop). At the end of the day this is a Wine bug because the plugin works correctly in Windows, so I suggest that you report this bug to the Wine development team.
Note that you can still change Synth1's program and bank without resorting to its UI:
I checked and this used to work in OpenMPT 1.26 and older; I do not think that there were any relevant changes in our own code in OpenMPT 1.27 that could cause this break (at least the changelog doesn't reveal anything) but we made a significant upgrade in our toolchain (from VS2008 + VS2010 to VS2015) which also implies a newer version of the underlying window toolkit (MFC); I believe that these changes are most likely causing the difference in behaviour. Hermann Seib's VSTHost also uses a much older MFC version if I remember correctly.
This doesn't change anything about my recommendation, though: Report the error to the Wine people.
I dug a bit deeper and I know now which change broke this; unfortunately it's not one that we would want to undo: OpenMPT 1.27 and later are compiled with Unicode support; OpenMPT 1.26 and earlier are not. OpenMPT 1.27 and later can still be compiled as an ANSI application (OpenMPT-ANSI.sln) and then Synth1's bank selector also works.
The problem is probably that Synth1 itself is compiled as ANSI rather than Unicode, and thus creates ANSI windows (while OpenMPT's windows are Unicode windows). I guess that there might be a bug in Wine somewhere that only manifests when mixing ANSI and Unicode windows. Both NanoHost and VSTHost are ANSI applications, too, so that's why they don't expose this bug.
I reported a Wine bug and will thus close this issue: https://bugs.winehq.org/show_bug.cgi?id=48073
|(version plz) => 4.0.2
|Additional Information Updated
|Note Added: 0004142
|related to 0001270
|Note Added: 0004146
|Note Added: 0004147
|Note Edited: 0004146
|Note Added: 0004153
|new => closed
|open => not fixable