Skip to content

DirectAudio v1.3.1 — live in-game config

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Aug 23:49
· 5 commits to main since this release

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 games
  • i386-windows/winedirectaudio.drv — loaded by 32-bit (wow64) guest games
  • aarch64-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 devices
  • directaudio-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 devices
  • directaudio-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/).