Repository navigation
Usage
Dekr0 edited this page Oct 31, 2024
·
38 revisions
- This page provide a detailed walk through on how to use the experimental features I expand from Evelyn's build of
hd2-audio-modder. I will explain through an example of making three variants of SFX mods for Adjudicator. - The experimental features mainly try to improve the workflow of audio modding by automating manual works and integrating all the existing label into
hd2-audio-modderitself. - You can still use this version of
hd2-audio-modderlike the way you use Evelyn's build ofhd2-audio-modder. - As the name "experimental" suggested, this build of
hd2-audio-modderwill be less stable since it's not battle-tested by multiple users. Bugs will appear but most of them will be related to user interface.
- Before getting a copy of this version of
hd2-audio-modder, make sure you have Wwise 2023 install. - To use this version of
hd2-audio-modder, please go to the release page downloadhd2-audio-modder. - Unzip the archive at a location where you have a convenience access. Please avoid moving the following content since they are crucial to the normal operation of the executable.
-
vgmstream-win64folder (vgmstream-linuxif you're on Linux) -
hd2_audio_db.dbfile -
AudioConversionTemplatefolder -
themefolder -
azure.tclfile
-
- Locate the executable (
audio_modder.exeon Windows,audio_modderon Linux) and run it. - If this is your first time using
hd2-audio-modder, a window that similar to File Explorer will show up, and ask you to locate your Helldivers 2 game data folder. This process should only happen once, which is at initial install. - If you don't know where your Helldivers 2 game data folder locates at,
- Open your Steam client, click on "Library" tab to go to "Library" page
- Locate and select Helldivers 2 from all games you have, displayed in the left menu
- Right click on the entry you selected, click on "Properties" in the pop up menu
- Click on "Installed Files"
- Click on "Browse", this will open up File Explorer at the location of Helldivers 2 game directory in your PC
- For example,
D:\Program Files\Steam\steamapps\common\Helldivers 2
- For example,

- After locating your Helldivers 2 game data folder, click on "Select Folder". This will serve as a reference place for the modding tool to locate vanilla game archives.
- Now, you should see the main user interface of
hd2-audio-modder.

- Here's an example walk through on how to use experimental features to automate and formalize your workflow.
- Specifically, I will be making three variants of SFX mods for Adjudicator.
- AKM from Insurgency Sandstorm
- G3A3 from Insurgency Sandstorm
- Mk14 from Insurgency Sandstorm
- There's also a folder called
Exampleafter you unzip the release zip file. This folder contains all the audio sources and finalized specification file (spec.json) used in this example. - For learning purpose, we will write a brand new specification file instead of using the one (
spec.json) already inExamplefolder. I highly recommend to only usespec.jsonif you do something wrong during the walk through tutorial, and you're not sure where it goes wrong.

- First, we need to locate and open the game archive for Adjudicator. There are two ways to do it. I will explain both.
- Hover mouse cursor onto "File" tab. Under "File" tab, go to "Open". Inside of "Open", click on "From HD2 Data Folder".

- A window that similar to "File Explorer" will show up. This is the game data folder of Helldivers 2 in your PC.
- The game archive that is associated Adjudicator is
a66d7cf238070ca7. If you're working with other audio archives, please refer this spreadsheet for more information.

- Select the one without a file extension, and click on "Open" to load the archive.
- You can directly search for the vanilla game archive in the archive search bar. You can either enter keywords or the full game archive ID (In this case,
a66d7cf238070ca7).- As you enter more keywords, a list of suggestions will show up at the bottom.
- Use arrow key up and down navigate different suggestions.

- In our example, there's only one suggestion result that matches up what we want. Hit "Enter" to load the game archive.
- Once the game archive is loaded, you should see the following

- In the middle of tree view, click the arrow to expand and show all audio sources that are associated with Adjudicator.

- There are number of audio sources that are associated with Adjudicator. Each audio source has an unique number ID associated with it.
- Since I have modded Adjudicator before, there are four audio sources that are related to main body (the loud and punchy part) of the sound when Adjudicator is firing.
- The four audio sources we need to change have the following IDs attached to them:
87209261394715428281887028101340640
- Instead of scrolling through the list of audio sources, you can use the search bar on the top right to locate a specific audio source.
- Paste in
872092613in the search bar, and hit enter. This should highlight the first audio source (There's only one) whose ID matches the search query.

- The next three audio sources are come right after each other under
872092613. We don't need to search for the next three. - You can click on one of the audio source (Let say
872092613) to play its audio. - You can also use arrow key (up and down) to navigate the list of audio sources when you're focus in the tree view that sits on the middle. Click anywhere on the tree view to focus it. Hit "Enter" to play the audio of the current blue highlighted audio source.
- If you're modding a game archive that you haven't modded before, you will need to go through the list of audio sources to figure out what each audio source is correspond to.
- These four audio sources we located at Step 2 will be randomly selected among four, and play when you fire the Adjudicator. There's no guarantee which will be selected so we need to changes all four of them.
- Instead of keep tracking the unique IDs of these four audio sources we located Step 2, let give them human-readable names instead. They will be useful in the later part of this tutorial.
- For
872092613, let name ittransient_01 - For
947154282, let name ittransient_02 - For
81887028, let name ittransient_03 - For
101340640, let name ittransient_04
- For
- If you're wondering why I name them with
transient, you can quickly take a look on this guide on how to make gun SFX. - This is my workflow on labelling and transcribing different audio source, specifically working with weapons and stratagems. If you have a workflow that fit you better, feel free to change it, or leave a message if the current user interface cannot achieve and I will take a look on how to improve the implementation of the user interface.
- Editor such as Notepad++, Emacs, Vim, Neovim, VSCode, and Nano all support this type of feature.
- Some editors like Vim and Neovim even allow you generate a sequence of incremental number very quickly.
- In this step, I will be using the audio sources that comes with installation. I will mod G3A3 SFX into Adjudicator first.
- The audio sources for G3A3 are in the
Example/G3A3folder. I already name and organize them in the following manner before releasing the installation:

- As you can see, the naming of each of my audio source match up the labels we made at Step 3. Keep this in mind as well as the directory path in this image (
C:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3, or something else if you unzip the installation in a different place) when you're moving into Step 5.
- We will write a specification file to tell the audio modding tool how to import my four audio sources in directory
C:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3(or somewhere else for you) shown at Step 4, and patch them into the four vanilla audio sources we located at Step 3. - Let's create a new specification file called
adjudicator.jsonin the folderExample. Make sure it has a file extension of.jsonor file type ofJSON Fileshown in the File Explorer.

- A specification file will starts with a opening curly bracket
{and ends with a closing curly bracket}. - Inside the opening curly bracket and closing curly bracket, it must starts with a key-value pair of
"v": 2,.
{
"v": 2,
}- In the next line, it must have this key-value pair of
"specs": []
{
"v": 2,
"specs": []
}- Inside of the pair of square bracket
[]for fieldspecs, we will add the following
{
"workspace": "C:\\Users\\Dekr0\\Desktop\\experimental-0.0.0\\Example\\G3A3",
"mapping": {
"transient_01": "872092613",
"transient_02": "947154282",
"transient_03": "81887028",
"transient_04": "101340640"
}
}- The above essentially tells the audio modding tool to locate the directory path specified by field
workspace(In this case,C:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3, or something else for you).- The double backslashes is a syntax requirement for JSON format files. Make sure to append an extra backslash whenever there's a single backslash in the path.
- After the audio modding tool locate the directory path in field
workspace, it then reads a list of key-value pairs in fieldmapping. - For each key-value pair, the audio modding will look for a
.wavfile with the name specified by the key, inside the directory path specified byworkspace. Then, it will import and patch it into an audio source with the unique ID specified by the value into the Adjudicator game archive. - Here full explanations to clear out the confusion.
- The audio modding tool will look for
transient_01.wavin directoryC:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3, and will import and patch it into audio source with unique ID872092613in the Adjudicator game archive. - The audio modding tool will look for
transient_02.wavin directoryC:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3, and will import and patch it into audio source with unique ID947154282in the Adjudicator game archive. - The audio modding tool will look for
transient_03.wavin directoryC:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A33, and will import and patch it into audio source with unique ID81887028in the Adjudicator game archive. - The audio modding tool will look for
transient_04.wavin directoryC:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3, and will import and patch it into audio source with unique ID101340640in the Adjudicator game archive.
- The audio modding tool will look for
- At this point, our specification file should look like the following:
{
"v": 2,
"specs": [
{
"workspace": "C:\\Users\\Dekr0\\Desktop\\experimental-0.0.0\\Example\\G3A3",
"mapping": {
"transient_01": "872092613",
"transient_02": "947154282",
"transient_03": "81887028",
"transient_04": "101340640"
}
}
]
}- Lastly, we can add the following optional field
write_patch_to. The value of this field can be a path anywhere in your PC. This field tells the audio modding tool to immediately generate a patch to the specified destination, right after patching all my audio source into the corresponding vanilla audio source in the current opened game archive (In this case, the Adjudicator game archive).
{
"v": 2,
"specs": [
{
"workspace": "C:\\Users\\Dekr0\\Desktop\\experimental-0.0.0\\Example\\G3A3",
"mapping": {
"transient_01": "872092613",
"transient_02": "947154282",
"transient_03": "81887028",
"transient_04": "101340640"
},
"write_patch_to": "D:\\Program Files\\Steam\\steamapps\\common\\Helldivers 2\\data"
}
]
}- Here, I specify to generate a patch in the Helldivers 2 game data directory.
- Alternatively you can replace with field
workspacewithG3A3. This is the same as "C:\Users\Dekr0\Desktop\experimental-0.0.0\Example\G3A3" since the audio modding tool use the path ofadjudicator.jsonas a reference path to look for folderG3A3.- This rule is same to field
write_patch_to.
- This rule is same to field
- At this point, your
adjudicator.jsonspecification file should look like this.

- In the audio modding tool, make sure that the audio modding tool still has the Adjudicator game archive loaded.
- Hover mouse cursor on the "File" tab. Under "File" tab, go to "Import". Inside "Import", click on "From spec.json (.wav)"
- It will show up "File Explorer" to ask you select a given specification file to import your audio sources into the currently opened game archive (In this case, the Adjudicator game archive).

- Locate the specification file you have written and save at Step 5. Once you locate it, click on "Open" to start the import process.

- If everything goes smoothly, you should see four audio sources in the tree view highlighted with white colour. That indicates there are changes happen to those audio sources.

- Play that four white highlighted audio sources to confirm the results.
- Go to your Helldivers 2 game data folder. Confirm that a new patch with name
a66d7cf238070ca7.patch_0is also generated.

- Before move onto Step 7, open Helldivers 2 and test the patch result of Adjudicator in game.
- You might see where the direction of this step is going to be. Currently, we only make one single variant of SFX for Adjudicator using G3A3 from Insurgency Sandstorm. We still have to two more to go.
- Since we already have our labelling and specification file prepare, we can reuse them whenever we want to use different external audio sources, as long as you use the same filename for your external audio sources as your labels do.
- I will be using the audio sources that comes with installation in the
Examplefolder again but they are for AKM and MK14 from Insurgency Sandstorm. - If you look at the three folders (
G3A3,AKMandMK14) in theExamplefolder, they all have the same structure and filenames (same as the labels we give at Step 3.

- Now, we can reuse our specification file
adjudicator.jsonwith some copy & paste and some minor tweaks on thewrite_patch_toandworkspacefields. Here's our specification fileadjudicator.jsonlooks like after modification.

- Since my audio sources for AKM and MK14 are in different directories, I need to change the workspace so the audio modding tool can locate them.
- Also, I change the
write_patch_tofield for each variant of SFX mod for Adjudicator to prevent overwriting each other when generating each respective patch at the same place. - Now, you can repeat the same process at Step 6. If you done every correctly, you should see there are three patches, each of them is at different destination.
- If something goes wrong and you believe you write something wrong with specification file, you can use the specification file I wrote beforehand (called
spec.json) for this walk through to import audio sources and generate patches.
- If something goes wrong and you believe you write something wrong with specification file, you can use the specification file I wrote beforehand (called

- You can locate and load each patch in the audio modding tool through here, and verify all three patches have distinct fire SFXs.

- This concludes end of the walk through tutorial.
- If you want to learn more about syntax and rules of specification files, they're using JSON format.
- The audio modding tool will look for following structure when parsing a specification file.
{
"v": 2, # Version number for compatibility, currently is must be 2
"specs": [ # A list of description blocks that describe how to import wave files into a game archive
{
"workspace": "...", # It can be relative path or absolute path. If omit, it will use the location where this specification is at
"mapping": {
# A list of key-value pairs
# key is the name of import wave file in the directory of `workspace`
# value is the unique id of an audio source in the currently opened game archive
"imported_wav_1": "audio_source_1", # `import_wav_1` in `workspace` will write to `audio_source_1`
# It can also be an array of unique audio source ID. This means `import_wav_2` will write to 3 different audio sources.
"imported_wav_2": ["audio_source_2", "audio_source_3", "audio_source_4"],
...
}
"write_patch_to": "...", # It can be relative path or absolute path. If omit, no patch will be generated
},
# You can have as many as blocks like the first one you want
{ ... },
{ ... }
],
"write_patch_to": "..." # Root level patch generation. It can be relative path or absolute path. If omit, no patch will be generated.
}{
"v": 2,
"specs": [
{
"workspace": "D:\\constitution\\spring_field_ping",
"mapping": {
"fire_transient_01_01": "169029097",
"fire_transient_01_02": "1015211601",
"fire_transient_01_03": "442290325",
"fire_transient_01_04": "898053678",
"fire_transient_01_05": "506455856",
"round_insert_01": "33862804",
"round_insert_02": "328988751",
"round_insert_03": "953907177",
"round_insert_04": "713793748",
"round_insert_05": "851446662",
"round_insert_06": "181469959"
},
"write_patch_to": "D:\\Program Files\\Steam\\steamapps\\common\\Helldivers 2\\data"
},
{
"workspace": "D:\\constitution\\spring_field_eject_ping",
"mapping": {
"bolt_backward_eject_round_01": "472775222",
"bolt_backward_eject_round_02": "942907321",
"bolt_backward_eject_round_03": "787517884",
"bolt_backward_eject_round_04": "710200241",
"bolt_backward_eject_round_05": "1029055137",
"bolt_backward_eject_round_06": "406717457"
}
},
{
"workspace": "D:\\constitution\\spring_field_reload_ping",
"mapping": {
"reload_bolt_backward_01": "186588060",
"reload_bolt_backward_02": "114340262",
"reload_bolt_backward_03": "1050768173"
}
}
],
"write_patch_to": "D:\\constitution\\spring_field_ping_everywhere"
}- This example demonstrate two behaviours.
- One is you can use audio sources that are in different workspace / directory, and import them together into a game archive
- Another thing is that you can generate two (you can do as many as you want) variants of SFX mods where one variant will have some audio sources, and then another variant will have all the audio sources from the previous variant plus other audio sources the previous variant doesn't have.
- In this example, I generate one patch where constitution will play the M1 Ping sound when firing. And then, I generate another patch where constitution will play the M1 Ping sound whenever it's firing, ejecting round, or reloading.
- The process behind this is that as the audio modding tool will generate a patch whenever it encounters the
write_patch_tofield based on what's being import at that point. It happen twice in here. - The first one is at after importing all audio sources from workspace
D:\\HD2_SFX\\hd2-sfx-project\\constitution\\spring_field_ping. The patch is generated at my Helldivers 2 game data folder. - The second one is at after importing all audio sources from another two workspace. The audio modding tool will retain the audio data after importing all audio sources from the first workspace without telling it to do a reset (coming soon).
- This might come in handy when you work with audio archive where you have different groups of audio sources that are belong to different in-game entity.