Driver packages — complete, both ABIs
Packaging refreshed: this release now attaches complete 3-file driver sets for both Wine majors (the earlier zips were Wine-11-only and missing the 32-bit PE). The driver code is unchanged v1.3.1.
| download | Wine | for these Proton layers |
|---|---|---|
directaudio-wine11-arm64ec-sdk28.zip / -sdk35.zip |
11 | Proton 11.0-1 / 11.0-3 / 11.0-5 |
directaudio-wine10-arm64ec-sdk28.zip / -sdk35.zip |
10 | Proton 10.0-4 |
sdk28 = 4 KB-page devices, sdk35 = 16 KB-page. Each zip is the full driver — three files dropped onto lib/wine/:
aarch64-windows/winedirectaudio.drv— loaded by 64-bit guest gamesi386-windows/winedirectaudio.drv— loaded by 32-bit (wow64) guest gamesaarch64-unix/winedirectaudio.so— the unixlib (shared by both; all AAudio logic lives here)
Which PE loads follows the guest game's bitness, not the Proton build — ship all three or 32-bit titles silently keep whatever driver the layer already had. One Wine-11 build serves all three 11.0-x point releases (they're ABI-compatible); Wine 10 needs the separate wine10 build.
Proton layers with DirectAudio built in: 11.0-1 · 11.0-3 · 11.0-5 · 10.0-4.
(*-diagnostics-*.zip = the same driver with per-callback logging, for field debugging.)
DirectAudio v1.3.1 — live in-game config
DirectAudio settings can now change while a game is running, no relaunch.
The driver normally reads its config from the environment at stream open, so a host UI change needed a relaunch. BANNER_AUDIO_DIRECT_RUNTIME=<file> opts into a "mailbox": a flat KEY=VALUE file the host rewrites in-game (keys MS / MAXMS in milliseconds, PERF as 0/1/2). A lazy 1-second watcher thread (off the real-time audio path) stats it and, on change, re-reads and rebuilds the stream via the existing reopen worker — a ~77 ms swap the guest's ring buffer covers, so it's inaudible. Values ≤ 0 or an absent key revert to the launch config. Unset = feature off, byte-identical to v1.3.0.
In Bannerlator this powers the in-game audio cog: change the DirectAudio latency or preset and Save, and the running driver reopens live.
Also fixed a mailbox PERF bug caught on device: the override set the raw 0/1/2 instead of the AAudio enum (NONE=10/POWER_SAVING=11/LOW_LATENCY=12), so a PERF=0 write opened an invalid mode and stalled. Now mapped correctly, and stress-proven (PERF toggles + background/foreground cycles, zero stalls).
Carries forward everything from v1.3.0 — soft-knee limiter, honest exclusive-mode reporting, daprobe, the 12 ms / 33 ms default, adaptive decay.
Assets — complete driver sets, both Wine ABIs
These assets are now built for both Wine ABIs (a driver is ABI-matched to the mmdevapi unixlib vtable of the Wine version it loads into), and each is a complete 3-file set:
| file | what | loaded for |
|---|---|---|
aarch64-windows/winedirectaudio.drv |
arm64ec PE | 64-bit guest games |
i386-windows/winedirectaudio.drv |
32-bit PE | 32-bit guest games |
aarch64-unix/winedirectaudio.so |
bionic unixlib (the AAudio backend) | always |
Which PE loads is decided by the guest game's bitness, not the device — earlier assets shipped only the arm64ec PE, so 32-bit guests had no driver. A complete set carries both.
Wine 11.0 (ge-proton11-5-bionic-staging) — overlay onto Wine-11 (Proton 11.0-x) layers:
directaudio-wine11-arm64ec-sdk28.zip— 4 KB-page devicesdirectaudio-wine11-arm64ec-sdk35.zip— 16 KB-page devices
Wine 10.0 (proton_10.0, the tree Proton 10.0-4 shipped from) — overlay onto Wine-10.x layers:
directaudio-wine10-arm64ec-sdk28.zip— 4 KB-page devicesdirectaudio-wine10-arm64ec-sdk35.zip— 16 KB-page devices
Diagnostics (23 logcat probes, Wine 11.0):
directaudio-v1.3.1-diagnostics-arm64ec-sdk28.zip/-sdk35.zip
Match the ABI to your layer's Wine version and the page size (sdk28 = 4 KB, sdk35 = 16 KB) to your device, then drop the whole set onto the layer's lib/wine/ (it mirrors that layout: aarch64-windows/, i386-windows/, aarch64-unix/).