Fully Renaming a Wwisebank for safe re‐use [LE2 LE3] - ME3Tweaks/LegendaryExplorer GitHub Wiki
Introduction
This is a guide to fully renaming an existing audio bank so that it can be re-used (mostly) safely. This is applicable to LE2 and LE3.
Please see this guide for information on authoring brand new audio banks in Wwise. This is the preferred solution where possible. However, we do not currently have access to all audio buses or real time parameter controls (such as dynamically adding helmet filters) and cannot add these to newly created banks in Wwise. This tutorial outlines a method to reuse banks containing these effects.
Please be aware that while this method is more reliable than simply using a bank from a different part of the game and hoping for the best, it is a brute force solution which will hopefully become outdated as the toolset continues to develop.
Required:
- Legendary Explorer
- Tajfun's Wwise Bank ID Change tool, which can be downloaded here: https://github.com/Tajfun403/WwiseBankIDChange [No longer needed for conversations, still needed for other audio banks]
- Willingness to hex edit stuff. So much stuff. [No longer needed for conversations, still needed for other audio banks]
Clean and rename a conversation in the Package Editor [ONLY works for Conversations]
First we will prepare our "donor conversation" for use. This is not a detailed tutorial on adding new dialogue or on basic operations with LEX - please see this tutorial for more detailed discussion of adding lines to conversations via a "donor conversation".
This process will result in a lot of trashed exports and so it is best to create a temporary package file to clean and prepare the conversation.
Open the Package Editor. Select File --> Create New --> New Empty Package, then choose the appropriate game. Save the new package file - the name is unimportant, this file is just a temporary workspace.
Open the package file containing the conversation with the audio bank you wish to reuse. Clone the conversation across to your temporary file
Figure 1
Drag and drop the conversation into the temporary file. Then choose "Clone All References."
Figure 2
The example used for this tutorial is a short conversation from the Citadel DLC in LE3 - cit003_return_from_casino_m_D
. You should now have a temporary file containing only one conversation. Next we will clean the conversation and rename some elements using an experiment available in LEX.
Under the Debugging menu, make sure Experiments are enabled. Select the BioConversation export. Now select Experiments --> Other People's Box of Legos --> Clean BioConversation for Cloning.
Several dialogue boxes will now open and you will need to enter new values. First it will ask you for a new conversation name. See the arrow in Figure 3 - this is what you are renaming. Pick any unique name, but it's strongly recommended to be something that sensibly identifies it as part of your mod.
Figure 3
Next it will ask for a new ConvResRefID
. This is the box outlined in blue. Vanilla values are in the 4 digit range generally. You will need to add a new, unique number. I generally add several digits to the existing ID at either the start or end. This pushes it out of the vanilla range while also allowing me to reverse engineer the original ID if required.
Next it will ask for a new ConvNodeID
base range. You need to enter a number which will be used to create new unique ID numbers for each conversation node. It will count up sequentially from the number you enter. Vanilla IDs are usually 6 digits. Using an 8 digit string works fine. Much like TLK strings, we do not have a good method of tracking this across mods, but the likelihood of 8 digit strings conflicting in modded conversations that are loaded at the same time is quite low.
Next it will ask if you want to update the IDs of the WWiseBank. Select Yes.
It will ask if you want to discard unneeded objects. This will clear the dialogue nodes of animation data, lighting tracks, prop information, sound effects, etc. If you only want to keep the conversation as a place to store audio lines in order to get access to specific audio filters, then choose "yes". If you're working on a project where it would be better to keep this data, then don't. You know your project!
You will now have a clean conversation that has been partially renamed. See Figure 4.
Figure 4
As you can see I have renamed this to test_mod_conversation
and the conversation name has been replaced in all relevant exports. The name of the Wwisebank has also been changed, and this includes the ID in hex, inside the bank.
Previous versions of this tutorial warned that there were limitations to this experiment that required further hex editing. Fortunately the experiment will now fully rename the internal IDs within the WwiseBank and you have now successfully renamed your conversation for reuse. However, this experiment only works on conversations.
Update IDs within a WwiseBank using Tajfun's tool [Non-Conversation Audio]
The Clean BioConversation experiment only works with conversations. To clean and reuse other audio banks (such as weapon sound effects, ambient audio etc) you will still need to clone your "donor bank" across with references (as outlined above). You will also need to manually rename the exports for the audio banks and any WwiseEvents or WwiseStreams within the package editor.
However, renaming the exports in the package editor does not rename the IDs within the WwiseBank and will not make your bank unique for reuse.
To do that, we need to use Tajfun's WwiseBank ID tool to update the unique IDs within the WwiseBank itself (it does not include WwiseStreams; not all banks have WwiseStreams, some only have embedded audio).
This broadly follows the instructions given on the github page but not entirely.
Firstly, right click on the WwiseBank for the conversation, and choose Export... --> Binary Data Only.
Figure 5
Save the .bin
file. I find it convenient to do so in the same place as the WwiseBankIDChange.exe
file, though this is not required.
Drag and drop the .bin
file onto the WwiseBankIDChange.exe
file in your file explorer. This should automatically run the programme in a terminal, and after only a few seconds new files will appear in the folder, and you can close the terminal. You should now have two new files - Diff results.txt
and new bank.bin
. These will be generated in the directory of the source file.
Figure 6
Right-click again on the WwiseBank for your conversation, this time choosing Import... --> Binary Data Only*. Choose new_bank.bin
.
We can skip the instruction to update the ID of the bank itself as the Conversation Cleaning experiment in the previous step already covered this.
So the next thing we need to do is manually update the WwiseEvent exports so that their IDs match the new IDs we just imported into the bank. Open the Diff results.txt
file. Now go to the first WwiseEvent.
Figure 7
As you can see, above, the WwiseEvent has an ID. In this case it's 1513467936
. In brackets you can see this in hex - in Big Endian - 5A35B020
. Now, click the Binary Interpreter tab.
Figure 8
As you can see, the hex - this time in Little Endian (i.e. bytes in reverse order) - so 20B0355A
- is present on line 60. We need to replace this so that it matches the new ID that's been imported into the bank. We need to find this hex in the Diff results.txt
file and replace it with the corresponding value.
Figure 9
Here you can see the Little Endian hex for the vanilla ID on the left - 20B0355A
, and the corresponding new value on the right, in the red box - BB01F8F3
. We need to paste the new value into the Binary Interpreter. Copy the new value from the .txt file. Highlight the vanilla value in the Binary Interpreter, right-click and choose Paste.
Figure 10
Then click Save Hex Changes at the top of the pane.
Figure 11
Repeat this for every WwiseEvent.
Rename WwiseStreams Manually [Non-Conversation Audio]
The next step is to rename all the WwiseStreams (if they are present). You should have already updated their plain text names in the package editor. But their IDs have not been updated and we must do this, both in the exports in the package editor and within the WwiseBank.
Right-click on the WwiseBank and choose Open in WwiseEditor. Keep both the Package Editor and WwiseEditor open. You will be making changes in both.
Select the first WwiseStream. Make a note of the existing ID and corresponding hex value in Little Endian. We will need it later.
As seen in Figure 12, the vanilla ID is 91376226
. The hex value in Big Endian is 05724A62
. The value in Little Endian is 624A7205
. You can calculate this using the Hex Calculator in LEX, or by going to the Binary Interpreter tab and finding the ID. In this case it's on line 3C. It's usually fairly easy to pick out visually.
Figure 12
In the properties tab, change the ID to something else. As noted previously, this is a best effort at a unique value until a more reliable solution is available via LEX. Personally I tend to increment a specific digit or add one, so that I can reverse engineer the original value if necessary. This is useful when manually editing hex, as you can work out the original value again if you mess something up.
Here, I have changed the first digit from 9 to 8 - when I hit "Set" the ID and corresponding hex value will change. Now we also need to make a note of the new hex value in Little Endian.
In this case, the new ID is 81376226
, the hex value in Big Endian is 04D9B3E2
, and the hex value in Little Endian is E2B3D904
.
We have updated the export. We next need to update the WwiseBank. Move across to WwiseEditor. In the search field, paste the vanilla hex value in Little Endian.
Figure 13
You should find either one or two locations where this exists. This depends on whether the line has both a male and female version or only one version. Always check. You need to update the hex everywhere you find it.
When you have found the hex, as before, copy the new value, highlight the old value in WwiseEditor, right-click and choose Paste.
You must then select Save Hex Changes, followed by Commit (this is greyed out in Figure 14 because I have not yet saved the hex changes, but it will become available once I do).
Figure 14
Neither of these steps actually saves the package itself, so I recommend a quick Ctrl+S for safety!
Repeat this process for every WwiseStream.
Copy from the Temporary Package File
Your conversation/audio bank is now fully renamed! You should now be able to copy it - again with references! - from your temporary workspace to your target location, and the trashed exports will not travel with it. It is now ready to be used as a resource or donor conversation.
The WwiseStreams have filters applied by the bank - so you can now replace the WwiseStreams using Sound Explorer, but the bank filters (such as dynamically adding a helmet filter) will persist into the new lines.