https://bugs.winehq.org/show_bug.cgi?id=48073
Bug ID: 48073 Summary: ANSI plugin window breaks in Unicode host (Synth1 / OpenMPT) Product: Wine Version: 4.0.2 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: wine@sagagames.de Distribution: ---
An OpenMPT user has observed an issue with the Synth1 VST which does not happen in Windows. It boils down to OpenMPT being compiled with Unicode support. Compiling it as an ANSI application instead makes the Synth1 feature in question work again.
Downloads: Synth1: https://daichilab.sakura.ne.jp/softsynth/#down OpenMPT: https://openmpt.org/download (use the 32-bit version) Last official OpenMPT ANSI version: https://download.openmpt.org/archive/openmpt/1.26/OpenMPT-1.26.14.00.zip
To reproduce:
Steps to reproduce: 1) Create a new module in OpenMPT. 2) Open the plugin manager ("Select" button at the bottom of the created module's window) and add Synth1 VST.dll (or Synth1 VST64.dll if you installed the 64-bit version of OpenMPT) 3) Click "Put in FX01" to load the plugin. 4) Click the "Edit" button next to the "Select" button to open the plugin's UI. 5) Click the "opt" button in the Synth1 UI to configure at least two sound banks. There is one valid soundbank in the "soundbank00" folder. For the sake of testing, you can copy the sy1 files in that folder to e.g. "soundbank01" and then add that folder as a second bank. 6. Next to the "opt" button is the bank switcher. Click on the text field to open the bank switcher and try switching between the two banks by selecting them in the treeview on the left, then choosing a patch from that bank on the right side (another unrelated bug can be observed here: you cannot see the patch names in Wine, wine bug 24945)
If you are using the latest OpenMPT version (Unicode), the last step should fail and you will always stay in the bank that was already selected. With OpenMPT 1.26, the bank switch will happen as intended. I have verified that compiling later OpenMPT version as ANSI applications make them work as expected as well, so I assume that there must be a bug in Wine that is related to mixing ANSI and Unicode window classes.
https://bugs.winehq.org/show_bug.cgi?id=48073
--- Comment #1 from Nikolay Sivov bunglehead@gmail.com --- Any chance you could make a small test application out of this?
https://bugs.winehq.org/show_bug.cgi?id=48073
--- Comment #2 from Johannes wine@sagagames.de --- How simple does it need to be? I'd have to extract most of OpenMPT's VST handling code into a separate project, which is a few thousand LOC.
https://bugs.winehq.org/show_bug.cgi?id=48073
--- Comment #3 from Johannes wine@sagagames.de --- Created attachment 65623 --> https://bugs.winehq.org/attachment.cgi?id=65623 Minimal VST host for Synth1 with ANSI and Unicode mode
https://bugs.winehq.org/show_bug.cgi?id=48073
--- Comment #4 from Johannes wine@sagagames.de --- Here's two minimal VST hosts, one with an ANSI window, the other with a Unicode window. Place the exe in the same folder as Synth1 VST.dll to run, then repeat everything starting from step 5.
https://bugs.winehq.org/show_bug.cgi?id=48073
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, source
--- Comment #5 from Ken Sharp imwellcushtymelike@gmail.com --- Are you really using 4.0.2? Have you tried in 4.19 (or later)?
https://bugs.winehq.org/show_bug.cgi?id=48073
--- Comment #6 from Johannes wine@sagagames.de --- Yes, I am really using the current stable version. The user who reported the issue mentioned that they reproduced the bug with Wine 4.14 and 4.17.