[TOOL] Sound Editing Tools for The Witcher 3
This is not a sound editor by definition, but it allows you to prepare a wave for Wwise and then cache it into the game as a soundspc.cache file.
Requirements: Python 2 (2.6 or above)
Instructions:
1) Convert your song(s) to the WAVE format. WAVE must be 16-bits or greater, uncompressed and have no cue chunk.
2) Run prepare_wave.py to prepare your WAVE for Wwise.
3) Open Wwise, create a new project, change project settings/source to Vorbis High, import your prepared WAVE and convert all audio files.
4) Go to your Wwise project folder/.cache and copy all your new WEM files to a folder.
5) Run compare_wem.py for each WEM file (comparing them against an original WEM file from The Witcher 3) and answer yes to the request to merge headers.
6) Copy all merged files to an empty folder and remove ".merged" from their names.
7) Run create_sounds_cache.py on the folder with the merged files.
8) Apply the new generated soundspc.cache to <The Witcher 3 Folder>/Mods/modMyMod/content.
Update 1.10:
Added 64-bits support for cache files (works even under Python 32-bits).
Extra script for replicating sounds (useful for replacing multiple entries with the same sound) added. It reads the sounds file from soundbanksinfo.xml.
If a cache file contains more than one file with the same data, the data will be added only once and all files within the cache will reference their data to this single offset.
prepare_wave.py script can now add extra loops into the prepared WAVE. Useful to prevent engine enforced silences between loops if the duration of the sound is too short.
Added license.
Update 1.20:
Added a new script for rebuilding soundbanks (non-streamed files need to be included within a soundbank).
Fixed some bugs through the scripts.
Update 1.30:
rebuild_soundbank.py can now be used to increase or decrease the length of music within the soundbank.
Some minor fixes.
Update 1.31:
Added an option for rebuilding music segments with only one track.
Update 1.32:
Fixed objects quantity for when rebuilding soundbanks for music.
Update 1.33:
Fixed some issues with reading soundbank data.
Fixed invalid __len__ method for SBMusicSegmentObject class.
Update 1.34:
Improved some of the music segment fields as to have replaced music have close to default values.
Update 1.35:
Fixed corrupt bank on replacement of multiple tracks in music segment.
Update 1.36:
It now replaces every reference containing tracks for the music ID.
Update 1.40:
Every single bnk file from the game now works with rebuild_soundbank.py.
Update 1.50:
Added the ability to add new songs to an already defined in-game playlist.
Added the ability to debug the Init.bnk file through --debug.
Added more detailed output to stdout.
Fixed an issue where it would not recalculate the data offsets while building music.
Fixed an issue with reading the bank's header.
Update 1.51:
Ensures that custom object ids don't conflict with other previously added custom object ids.
Update 1.52:
Added the ability to remove songs from an already defined in-game playlist.
Update 1.60:
Added the ability to export and reimport playlist definitions as to allow modders to customize the games' playlists more freely.
Download: http://chrissnoeren.nl/mxtemp/sound_editor_160.7z
This is not a sound editor by definition, but it allows you to prepare a wave for Wwise and then cache it into the game as a soundspc.cache file.
Requirements: Python 2 (2.6 or above)
Instructions:
1) Convert your song(s) to the WAVE format. WAVE must be 16-bits or greater, uncompressed and have no cue chunk.
2) Run prepare_wave.py to prepare your WAVE for Wwise.
3) Open Wwise, create a new project, change project settings/source to Vorbis High, import your prepared WAVE and convert all audio files.
4) Go to your Wwise project folder/.cache and copy all your new WEM files to a folder.
5) Run compare_wem.py for each WEM file (comparing them against an original WEM file from The Witcher 3) and answer yes to the request to merge headers.
6) Copy all merged files to an empty folder and remove ".merged" from their names.
7) Run create_sounds_cache.py on the folder with the merged files.
8) Apply the new generated soundspc.cache to <The Witcher 3 Folder>/Mods/modMyMod/content.
Update 1.10:
Added 64-bits support for cache files (works even under Python 32-bits).
Extra script for replicating sounds (useful for replacing multiple entries with the same sound) added. It reads the sounds file from soundbanksinfo.xml.
If a cache file contains more than one file with the same data, the data will be added only once and all files within the cache will reference their data to this single offset.
prepare_wave.py script can now add extra loops into the prepared WAVE. Useful to prevent engine enforced silences between loops if the duration of the sound is too short.
Added license.
Update 1.20:
Added a new script for rebuilding soundbanks (non-streamed files need to be included within a soundbank).
Fixed some bugs through the scripts.
Update 1.30:
rebuild_soundbank.py can now be used to increase or decrease the length of music within the soundbank.
Some minor fixes.
Update 1.31:
Added an option for rebuilding music segments with only one track.
Update 1.32:
Fixed objects quantity for when rebuilding soundbanks for music.
Update 1.33:
Fixed some issues with reading soundbank data.
Fixed invalid __len__ method for SBMusicSegmentObject class.
Update 1.34:
Improved some of the music segment fields as to have replaced music have close to default values.
Update 1.35:
Fixed corrupt bank on replacement of multiple tracks in music segment.
Update 1.36:
It now replaces every reference containing tracks for the music ID.
Update 1.40:
Every single bnk file from the game now works with rebuild_soundbank.py.
Update 1.50:
Added the ability to add new songs to an already defined in-game playlist.
Added the ability to debug the Init.bnk file through --debug.
Added more detailed output to stdout.
Fixed an issue where it would not recalculate the data offsets while building music.
Fixed an issue with reading the bank's header.
Update 1.51:
Ensures that custom object ids don't conflict with other previously added custom object ids.
Update 1.52:
Added the ability to remove songs from an already defined in-game playlist.
Update 1.60:
Added the ability to export and reimport playlist definitions as to allow modders to customize the games' playlists more freely.
Download: http://chrissnoeren.nl/mxtemp/sound_editor_160.7z
Last edited: