MetaphorAudioFix is a Windows ASI plugin that fixes the faint, hollow, echo-like dialogue bug in Metaphor: ReFantazio on Wine and CrossOver.
The game uses ISpatialAudioClient and builds a 12-channel static object bed even when the real endpoint is stereo. On CrossOver/macOS that path leaves dialogue-heavy channels mixed incorrectly. This plugin keeps the spatial API alive for the game, intercepts ActivateSpatialAudioStream, and explicitly mixes the static spatial objects down to stereo before they hit the real output stream.
This repo contains the working fix that was validated in-game on CrossOver for macOS with the dialogue issue reproduced beforehand.
src/: plugin sourceexternal-minhook/: vendored MinHook dependencyscripts/package-release.sh: creates a GitHub-friendly zip from the built package.github/workflows/release.yml: builds and publishes release zips on tagsdocs/WINE_SPATIAL_AUDIO_NOTES.md: root-cause write-up for Wine or CodeWeavers
Install a Windows cross-compiler toolchain such as mingw-w64, then run:
./build-windows.shThat produces:
build/windows/package/MetaphorAudioFix.asibuild/windows/package/MetaphorAudioFix.inibuild/windows/package/libwinpthread-1.dllbuild/windows/package/winmm.dllbuild/windows/package/Ultimate-ASI-Loader-LICENSE.txt
The packaged fix now includes a bundled winmm.dll ASI loader, so all required files ship together.
- Open the game install directory in Steam:
Metaphor: ReFantazio->Properties...->Installed Files->Browse... - Copy these four files into the same directory as
METAPHOR.exe:winmm.dllMetaphorAudioFix.asiMetaphorAudioFix.inilibwinpthread-1.dll
- Make sure Wine/CrossOver loads
winmmasnative,builtin.
If you launch the game through Steam inside Wine, Proton, or a CrossOver Steam bottle, set the DLL override directly on the game in Steam:
- In Steam, right-click
Metaphor: ReFantazio. - Click
Properties.... - Stay on the
Generaltab. - Find the
Launch Optionsbox near the bottom. - Paste this exactly:
WINEDLLOVERRIDES="winmm=n,b" %command%
- Close the Properties window.
- Launch the game from Steam normally.
n,b is Wine shorthand for native,builtin, which makes Wine try the bundled winmm.dll in the game folder first and fall back to Wine's builtin winmm only if needed.
If you prefer to set the override in the bottle itself instead of using a Steam launch option, add the DLL override in the bottle registry:
- Open CrossOver.
- Select the bottle that contains Steam and
Metaphor: ReFantazio. - Choose
Run Command...for that bottle. - Run
regedit. - In Registry Editor, go to:
HKEY_CURRENT_USER\Software\Wine\DllOverrides
- If
DllOverridesdoes not exist, create it:- Right-click
Wine New->Key- Name it
DllOverrides
- Right-click
- With
DllOverridesselected, create a new string value:- Right-click in the right pane
New->String Value- Name:
winmm
- Double-click the new
winmmvalue and set its data to:
native,builtin
- Close Registry Editor.
- Fully quit Steam inside the bottle, then start Steam again before launching the game.
If you prefer the command-line form, the same registry override can be created with:
reg add "HKEY_CURRENT_USER\Software\Wine\DllOverrides" /v winmm /t REG_SZ /d native,builtin /f
Do not set both a conflicting registry override and a conflicting Steam launch option. If both exist with the same native,builtin value, that is fine.
After building, create a distributable zip with:
./scripts/package-release.sh v0.1.0That creates:
dist/MetaphorAudioFix-v0.1.0-win64.zipdist/MetaphorAudioFix-v0.1.0-win64.zip.sha256
The included GitHub Actions workflow supports two paths:
- push a tag like
v0.1.0 - run the
Releaseworkflow manually and provide a version string
The workflow:
- installs
mingw-w64 - builds the plugin
- packages the zip
- uploads the zip as a workflow artifact
- publishes a GitHub release automatically for tag pushes
See docs/WINE_SPATIAL_AUDIO_NOTES.md for the issue write-up you can attach to a Wine bug or send to CodeWeavers.
This project is under the MIT license. MinHook remains under its own license in external-minhook/. The bundled winmm.dll comes from Ultimate ASI Loader, which is also MIT licensed; its license text is included as Ultimate-ASI-Loader-LICENSE.txt.