-
Notifications
You must be signed in to change notification settings - Fork 41
Audio Authoring with ISACT in LE1
Note: This article describes upcoming changes to LEX. I'll remove this note when they become available in nightly.
- Audacity or another way to create WAV files.
-
ISACT 1.64. ISACT.exe is not needed, but
BankBuilder.exeis still used for final compression. - Latest Legendary Explorer Nightly.
This guide explains how to use Sound Explorer in LEX to build and maintain ISACT Content Bank (.icb) and ISACT Sample Bank (.isb) pairs for LE1. It replaces the stages that previously required manually authoring banks in ISACT Production Studio.
This page doesn't repeat the underlying LE1 audio concepts. For an explanation of streaming audio, non-streaming audio, SoundCues, SoundNodeWaves and BioSoundNodeWaveStreamingData, read Editing LE1 Audio.
This workflow covers streaming audio used by:
- BioConversation voiceover
- Codex voiceover
- Character Soundsets
- Music
It does not cover non-streaming sound effects stored directly inside some SoundNodeWave exports.
Your source audio should be signed 16-bit PCM WAV. If a WAV uses another format, LEX can create a compatible temporary copy before passing it to BankBuilder. Your source files are not modified.
Place all the WAVs for one operation into a single folder. Only WAVs directly inside that folder are processed; subfolders are ignored. Do not mix files intended for different banks or content types.
LEX uses WAV filenames to generate Sound Events in the ICB. The required part of each name depends on the selected content type.
Even where the entire name is not technically required, matching BioWare's naming conventions is strongly recommended. It makes the purpose and localisation of loose source files considerably less mysterious six months later.
Filenames cannot contain spaces.
Source WAVs should use the following locale prefixes unless they are music:
| Language | WAV prefix |
|---|---|
| English | EN_ |
| German | DE_ |
| French | FR_ |
| Italian | IT_ |
| Polish | PLPC_ |
| Russian | RA_ |
English WAVs use EN_, not INT_. INT is the game localisation used for English audio, including when the game is displaying Spanish or Japanese text.
The filename prefix does not select the output localisation (example: if you're outputting to a _LOC_DE.pcc file for German VO). Choose the matching localisation separately in the Build or Rebuild window.
Recommended format:
[locale]_[BioConversation name]_00[string ID]_M.wav
Example:
EN_nor20_ian_ferguson_00121875_M.wav
LEX reads the numeric string ID from the end of the filename and generates both conversation Sound Events inside the ICB:
VO_121875
VO_121875_M
Use _M as the default suffix for ordinary NPC dialogue. BioConversations expect both male and female Sound Event names even when the spoken audio is identical.
Use _F for a FemShep line. When a player line has separate male and female recordings, provide both WAVs with the same string ID:
EN_example_conversation_00121875_F.wav
EN_example_conversation_00121875_M.wav
The _F sample is linked to VO_121875, while the _M sample is linked to VO_121875_M.
Intended recommended format:
[locale]_vo_codex_[entry name].wav
Example:
EN_vo_codex_organizations_mercenaries_eclipse_entry.wav
Codex entries do not use BioConversation's male/female duplication. Each WAV creates one Sound Event using the Codex name.
Recommended format:
[locale]_[soundset name]_[cue code][two-digit index].wav
Example:
EN_eclipsemerc_atg00.wav
LEX reads the cue code and two-digit index from the end of the filename. The example above generates:
VO_AttackGrunt_00
This is a full list of the cue codes I was able to find in the game. Unknown cue codes are rejected rather than being cheerfully invented so if any are missed, let me know and we can add support for them:
| Code | Sound Event name |
|---|---|
acl |
Allclear |
alr |
Alert |
atg |
AttackGrunt |
bfa |
BuffActivated |
dth |
DeathCry |
gcf |
GiveCommandFollow |
hpn |
HoldingPosition |
hsq |
HealingSquad |
idl |
Idle |
igr |
IncomingGrenade |
jmp |
Jump |
lkf |
LOSunavailable |
lnd |
Land |
lse |
LOSestablished |
lwh |
LowHealth |
mov |
Move |
mtf |
MoveToFailure |
mts |
MoveToSuccess |
pae |
PerceptionAttackedByEnemy |
phe |
PerceptionHearEnemy |
png |
PainGrunt |
prc |
PlayerRecovery |
sb |
SpecialAbilityRacial; see below |
shd |
ShieldsDown |
smv |
StartMoveToConfirmation |
tbd |
TechBeaconDeployed |
tdr |
TacticalDeathRecovery |
tgd |
TargetDown |
tgr |
ThrowGrenade |
vdm |
VehicleDamaged |
vsd |
VehicleShieldsDown |
Racial ability cues use sb, followed by a one-digit variant and a two-digit index:
EN_example_sb100.wav -> VO_SpecialAbilityRacial1_00
EN_example_sb200.wav -> VO_SpecialAbilityRacial2_00
Recommended format:
mus_[track name].wav
Example:
mus_normandy_ambient.wav
The filename without .wav becomes the Sound Event name. The bank name must also begin with mus_.
Open Sound Explorer and select ISACT > Build ISACT Banks.
This is what each field does:
- WAV source folder selects the folder containing the source WAVs for this bank.
- Content type controls how filenames are converted into Sound Event names. Choose BioConversation, Codex, Soundset or Music.
- Create a looping Sound Queue is shown for Music. Enable it only when the bank requires a looping queue; ordinary music Sound Events do not require it.
-
Bank name sets the base name of the ICB and ISB. For BioConversation voiceover, this should normally match the BioConversation name. Music bank names must begin with
mus_. - Localisation selects the LE1 audio localisation. This adds the correct suffix to the ISB and package objects. INT has no suffix.
- Output folder receives the final compressed ICB and ISB.
- BankBuilder.exe points to the copy supplied with ISACT 1.6.4. LEX attempts to find the default installation automatically.
-
Stream packet (ms) controls the streaming packet duration. LE1 dialogue commonly uses
2500; selecting Music changes the default to2000. -
Vorbis quality controls BankBuilder's Ogg Vorbis compression quality.
0.8is the usual LE1 value. - Convert incompatible WAVs allows LEX to make temporary signed 16-bit PCM copies when necessary. It preserves the source WAVs, sample rate and channel count.
-
Copy the finished ISB into a DLC Content folder optionally installs the ISB directly into your mod. Select
DLC_MOD_Example/Content, which sits next toCookedPCConsole. - Create or update BioSoundNodeWaveStreamingData in a package optionally imports the compiled bank metadata into an LE1 PCC.
- Package file selects the package to update.
-
BioStreamingData export selects an existing
BioSoundNodeWaveStreamingDataexport. If the package does not contain one, choose Create new BioStreamingData.
Press Build. LEX creates the source banks, runs BankBuilder, validates the compressed result and writes the final ICB and ISB to the output folder.
No source WAVs are modified or deleted. Existing output files with the same names may be replaced, so do not point the output at your only copy of something precious. You have been warned!
The final ISB contains the compressed audio and must be installed in your DLC mod's Content folder:
DLC_MOD_Example
├── Content
│ └── example_bank.isb
└── CookedPCConsole
It does not need to be nested inside Content/Packages/ISACT despite basegame handling it this way.
The final ICB and the ISB's playback metadata are stored in a BioSoundNodeWaveStreamingData export. If the selected package does not already contain one, LEX creates the required export hierarchy automatically.
The BioStreamingData must be updated whenever the external ISB changes. The package stores sample sizes and offsets used to locate audio inside the ISB; an old copy can therefore point at the wrong data even when the ICB itself has not changed.
If the same BioStreamingData is duplicated across several packages, update every copy. This is most common with Soundsets and occasionally occurs with BioConversations. Updating one package does not psychically update its siblings.
This tool does not generate the SoundCues or SoundNodeWaves that reference the BioStreamingData. Those must already exist or be created separately.
Rebuild ISACT Banks functions similarly to building new banks, except it appends new samples and Sound Events to an existing final bank pair. Only the new WAVs are sent through BankBuilder, so a large bank does not get recompressed every time one new line is added.
Complete the fields in order:
- WAV source folder must contain only the new WAVs being appended.
- Existing ISB selects the compiled sample bank being expanded. The bank name and localisation are inferred from its filename.
- Content type must match the kind of Sound Events being added.
- Output folder receives the rebuilt ICB and ISB. It may be the same location as the originals if you intend to update them in place.
- BankBuilder.exe, Stream packet, Vorbis quality and Convert incompatible WAVs work as described in the Build tutorial.
-
Copy the finished ISB optionally updates the copy in your DLC
Contentfolder. - Package file and BioStreamingData export select the package metadata that should be updated.
- Existing ICB (optional) selects a saved copy of the matching final ICB.
Your WAV source folder should not contain all the old source WAVs. Rebuild is an append operation, not a clean build from source. If old files generate Sound Events already present in the ICB, LEX rejects them as duplicates. To change the audio for an existing sample, use the individual replacement workflow instead.
If you kept the existing ICB, select it in Existing ICB. This allows LEX to rebuild the bank pair without first recovering the ICB from a package.
If the ICB was discarded after import or you lost it, leave the field blank. Select a package and its matching BioStreamingData export instead; LEX extracts the embedded ICB and confirms that its recorded ISB title matches the selected external ISB.
After rebuilding, update every package containing a copy of that BioStreamingData by replacing the export data, just as with a new build.
If you want to replace individual WAVs in vanilla files, or just update them in your existing banks, you can now finally use the Replace button that's been unavailable in LE1 for years.
- Open Sound Explorer.
- Open the final
.isbfile. - Select the sample you want to replace.
- Click Replace in the Soundpanel.
- Select the replacement WAV.
- Choose whether to select a package containing the matching BioStreamingData.



