Skip to main content

WD1 SPK Sound Package Format

The .spk format is Ubisoft's Disrupt engine wrapper for Wwise audio. It packages a header (Wwise PlayEvent/Resource descriptors + audio metadata) with raw audio data (PCM or OGG Vorbis). Used by Watch Dogs 1 for all in-game sounds.

Structure​

SPK = header (template-based, ~0x368 bytes) + body (raw audio data).

Header Layout​

OffsetSizeFieldDescription
+0x004MagicTemplate-dependent (not validated)
+0x084PlayEventDescriptor[0:4]MD5 hash bytes 0-3 (little-endian)
+0x0C4ResourceDescriptor[0:4]MD5 hash bytes 4-7
+0x104sndData[0:4]MD5 hash bytes 8-11
+0x384PlayEventDescriptor[4:8]MD5 hash bytes 12-15
+0x684delayTimef32 — delay before playback (Song = 1.2s)
+0x844ResourceDescriptor[4:8]MD5 hash bytes 16-19
+0xC04ResourceDescriptor[8:12]MD5 hash bytes 20-23
+0xC84m_volume_dBf32 — volume offset (Song = -12 dB)
+0x1044ulLoopByteu32 — loop point (commented out in tool)
+0x1141CompressionFormatu8 — 1=PCM, 4=OGG Vorbis
+0x1184ulNbChannelsu32 — channel count
+0x11C4ulFrequ32 — sample rate (Hz)
+0x1244ulNbBytesu32 — audio data size in bytes
+0x1344sndData[4:8]MD5 hash bytes 24-27 (copy)
+0x1444busIdu32 — Wwise bus ID (see table below)
+0x1584ulAttackLengthByteu32 — attack length (commented out in tool)
+0x1644sndDataTotalSizeu32 — audio data size + 28

Wwise Bus IDs​

BusIDVolumeDelay
SFX0x0004C4C90 dB0s
Voice0x00020ECD0 dB0s
Song0x00127698-12 dB1.2s
Music0x0001825A0 dB0s

Audio Format​

FormatValueDescription
PCM1Uncompressed WAV (RIFF header stripped)
OGG Vorbis4Compressed — tool converts non-WAV/non-OGG to OGG via ffmpeg

File Naming​

SPK files are named by the first 8 characters of the MD5 hash of the original audio filename (before the extension). Example: 000e9bd7.spk.

If the input filename is already a valid 8-character hex sound ID (e.g., 000b1d2c.mp3), the tool prepends the MD5 to it. Otherwise, a new ID is generated.

Audio Bus Assignment​

The bus determines how the engine routes the sound:

  • SFX (0x0004C4C9): Sound effects, UI sounds
  • Voice (0x00020ECD): NPC dialogue, narration
  • Song (0x00127698): In-game radio music (CR-FM, etc.) — gets volume/delay
  • Music (0x0001825A): Background/ambient music

Integration with Disrupt​

SPK files go into the soundbinary/ folder in the game's patch/ archive. The engine references them by the 8-char hex ID (CRC32-based hash of the path).

Music Library XML​

Custom songs also require entries in:

  • patch/generated/databases/generic/musiclibrary_*.obj.xml — song metadata
  • patch/music/music.xml — music library definitions
  • patch/worlds/windy_city/generated/windy_city_depload.dat — sound references
  • patch/languages/patch1_english.loc — song names/descriptions

Tools​

ToolWhatWhere
CONVERT2SPK.batAudio → SPK converter (The_Silver v0.6)hV_WD_ModdingKit_PLUS/Tools/CONVERT2SPK/
hV_WD1_AddCustomSongsGUI for adding songs to WD1 radiohV_WD_ModdingKit_PLUS/Tools/hV_WD1_AddCustomSongs/
FusionTools 2.0Wwise PCK/BNK/AESP editor (multi-game)Nexus Mods

Known Issues​

  • Loading screen music: Now possible (beta FP loading music mod, Aug 2026). Was "supposedly not possible before."
  • FusionTools bulk editing: One-by-one injection only. Bad for large projects (15+ sounds).
  • Song genres: WD2 leftover genres may be from WD1 (community speculation).
  • .wem decoding: Full WDL/WD2 .wem decoding still open on our end. FusionTools handles WD2 but tediously.

Source​

RE'd from CONVERT2SPK.bat (The_Silver, v0.6) and hV_WD1_AddCustomSongs.exe (.NET 4.8 WinForms, decompiled via monodis). Discord: □ΞnCrypTΞD□, Cobra, The Silver.