Windows-first Python GUI tools for working with Dying Light series audio.
Dying Light 1: edit.csbbundles, mix raw audio and existing.fsbfiles, preview entries, save rebuilt banks, and build modsDying Light 2 / The Beast (Experimental): read-only Wwise browser for named trees, preview, and exportOther: read-only AKPK /.pckbrowser with preview, export, and experimental replacement tools
- Install a normal Windows Python build with
tkintersupport. Python from the Microsoft Store alias alone is usually not enough. - Open the app once and let it remember your paths in
settings.json. - For DL1 raw-audio builds, point
DLDT Rootat the Dying Light Developer Tools folder. - For DL1 mod output, point
Mods Rootat your Dying LightModsfolder.
You can run from source with:
python -m pip install -e .
python -m dyingaudioOr with the included helper:
.\run_dyingaudio.batFor some editing behaviour, you will need to have Dying Light Developer Tools installed.
- Open the
Dying Light 1tab. - Click
Add Audio / FSB. - Pick raw audio files,
.fsbfiles, or a mix of both in the same browse dialog. - Select an entry in the list to review it in
Selected Entry. - Click
Apply Entry Changesafter editing any fields. - Use
Save CSB Fileto write a standalone bank, orBuild Modto create a mod folder.
- Click
Open CSB For Edit. - Select the entry you want to change.
- Click
Replace Audio / FSB. - Choose a raw audio file or an
.fsb. - Preview, adjust entry details if needed, then save or build.
- If you change selection while the current entry has unapplied edits, DyingAudio will ask whether to apply, discard, or keep editing.
- Press
Enterinside an editable field or clickApply Entry Changesto commit the change.
Raw Audio via DLDT: use this when any entry comes from raw audio and must be compiled into FSB during build/saveExisting FSB Files: use this when every entry already points at ready-made.fsbcontent
Replacing or adding raw audio keeps the project in raw-audio mode because DLDT is required to compile those files.
Preview: play the selected entry directly from the source file or extracted FSB dataInspect CSB: view entry names, channel info, duration, samples, and notes without opening for editExtract CSB: unpack embedded FSBs from an existing bundle- Right-click an entry for replace, export, duplicate, rename, or remove
- Search and sort the entry list without losing the original underlying entry indices
This workspace supports browsing and replacing Wwise audio in DL2 and DLTB AESP archives.
- Switching between
DL2andDLTB - Detecting available archive sets such as
baseandspeech_*(language packs) - Building a cached named workspace under
%LOCALAPPDATA%\DyingAudio\wwise_cache - Browsing
archive → bank → event - Previewing and exporting selected media
- Exporting selected event folders, selected bank files, or a full workspace dump
Replace any media entry in sfx, streams, or meta archives with custom audio:
- Install Wwise from Audiokinetic's website and install Wwise 2023.1.13.8732 (You can probably use a newer version, but this is the one DL2 uses.)
- Enable the "Enable experimental AESP replacement" checkbox
- Select one or more media rows in the media tree
- Click Replace Selected Audio (or right-click → Replace)
- Pick a
.wem,.wav,.ogg,.mp3, or other audio file - Non-WEM files are automatically converted via a local Wwise installation
Multi-replacement: Select multiple rows (Ctrl+Click or Shift+Click) to replace them all with the same audio file in one operation. Useful for replacing grouped or duplicate entries.
Hide warnings: Check "Hide replacement warnings" to skip sample-rate, duration, and confirmation dialogs. A one-time warning explains what this disables before it takes effect. The setting persists across sessions.
Backups: A .bak file is created on the first modification to each archive. Use Restore Original AESP to undo all replacements at once. BNK metadata in meta.aesp is also patched and backed up automatically.
Speech archives: Language packs (e.g. speech_en) appear as separate archive sets and support the same replacement workflow as base.
This is an experimental workflow, but it shows promising results in-game.
The Other tab targets AKPK / .pck packs.
It supports:
- building or refreshing a cached browser workspace
- browsing packs and media rows
- previewing and exporting selected media
- exporting mixed audio where supported
- optional experimental AKPK replacement tools via local Wwise installation
- Default experimental cache root:
%LOCALAPPDATA%\DyingAudio\wwise_cache - The app remembers install roots, cache roots, and last-used output paths in
settings.json - If a path box is empty,
Browsefirst tries auto-discovery before falling back to manual selection - Raw formats beyond
.wavand.oggcan use FFmpeg for preview/build helpers when available - Preview prefers direct playback tools when possible and falls back to cached WAV generation when needed
- Retail
DW\Databanks using CSB magic0x00000002are supported for inspect, edit, and save - Dark mode combobox dropdowns are styled for readability across the app
This repo includes:
DyingAudio.specscripts\build_exe.ps1
After installing PyInstaller:
pwsh -ExecutionPolicy Bypass -File .\scripts\build_exe.ps1The packaged build still requires a Windows Python environment with Tcl/Tk available while building so tkinter can be bundled correctly.