LegendaryExplorer icon indicating copy to clipboard operation
LegendaryExplorer copied to clipboard

Feature: add support for exporting ICB+ISB pairs from ME1/LE1 packages

Open modusc896d352 opened this issue 2 years ago • 9 comments

Is your feature request related to a problem? Please describe. so, there's this class on ME1/LE1 packages called BioNodeSoundWaveStreamingData. i tried to export a few files from that class just for fun (by opening up the Package Editor and having it open BIOG_StreamingAudioData.upk) and then attempted to analyze what they looked like through an hex editor (i use HxD very often for just about any file really).

after spending some time looking at them i realized i'd need to take out individual ICB+ISB pairs from them. it can be done by hand but it's a time-consuming process and i'm not sure i have all the patience necessary to do such a thing especially when i'm dealing with these kinds of files which, given the size of the game could be in the thousands depending on the package you're looking at.

Describe the solution you'd like for BioNodeSoundWaveStreamingData files, i'd like to see the file sizes for the ICB and ISB files being calc'd individually based on those RIFF-like chunks that have size values on them (like this). https://files.catbox.moe/3l1q09.png and i'd like to see the pointers for these files being prepped up as well. Package Editor can show up some info regarding ICB+ISB files through the Binary Interpreter tab if you click on an BioNodeSoundWaveStreamingData entry but i'm kind of at a dead end at this point. i'd like to see ICB+ISB pairs exported over into individual files of their own (like music_bank.icb and music_bank.isb for example).

Describe alternatives you've considered aside from extracting them by hand i don't think i know of any.

Additional context OK, so this is the icb file. https://files.catbox.moe/m6io9t.png and this is the isb file. https://files.catbox.moe/j3lbw3.png they're all within an BioNodeSoundWaveStreamingData file that i just exported. on another note, there's also the SoundNodeWave which for the most part seems to store sound stuff into single ICB+ISB pairs as well.

modusc896d352 avatar Jul 15 '22 01:07 modusc896d352

You should be able to extract these by right clicking the export and exporting, I added support for this about a year ago. The issue with audio replacement we have is that we don't know what that ISB pair is, since it doesn't have any data.

Mgamerz avatar Jul 15 '22 01:07 Mgamerz

oh, there's that feature from Package Editor that allows you to extract a single sound to an isb file. thanks. although, that one seems to be only available if an package contains tons of SoundNodeWave files. i can't extract an icb file from there either. i'm not really looking to "replace" anything though but i'd be glad to help with that "ISB pair" thing.

modusc896d352 avatar Jul 15 '22 01:07 modusc896d352

I see you are a contributor to vgmstream. That has been quite helpful with our work in audio for these games!

If you're looking for the actual ISB data, they are externally stored in BioGame\Content\Packages\ISACT. The game uses a lookup system based on the export name to determine which file to use, but we don't fully understand how that works.

Some small audio sound effects are embedded locally but the majority aren't. You can see a small embedded piece of audio in LE1's SFXGame.pcc 35236 snd_vfx:c_snd_grenade.

Mgamerz avatar Jul 15 '22 02:07 Mgamerz

Extracting the pair can be done this way: image

Mgamerz avatar Jul 15 '22 02:07 Mgamerz

omg, thank you! i do try to help out with vgmstream from time to time as i feel it needs an update of sorts, and that "embedded file" thing was just what i was looking for! that said, the extracted isb file does look a little off, like it just gained an additonal 4 bytes at the start of a file. on another note, there are also some icb files that were extracted without an assigned extension to them.

for example. with los40_trig_b i can extract both pairs just fine but only the isb file was extracted with an assigned extension to it. the extracted icb file didn't seem to have any extension assigned to it.

i only have ME1 to explore the packages though, but either way it'd be interesting to dig deeper into this ISACT sound system. maybe someday.

modusc896d352 avatar Jul 15 '22 02:07 modusc896d352

This was mostly an experiment. I didn't do too much because the info I gained from extracting it didn't really seem useful. The ICB is part of what links to the sound in game but I never could figure out how to replace audio as the paired ISB in the SoundNodeWaveStreamingData seems to be required but I don't know how it's generated, it's not the same as the external one (that contains the actual audio).

I have a copy of ISACT that is almost the same as the one this game uses, but ISACT has virtually no documentation beyond it's help file and it barely runs these days on Windows 10 (though I have been given new info recently on how to make it more stable).

Mgamerz avatar Jul 15 '22 02:07 Mgamerz

i guess it's a matter of finding out which ICB connects with which ISB then... i'm not too sure what to do tbh.

wait a second, you got a copy of what? is it ISACT itself, with a DAW-like interface and all that stuff? did you just get it recently or something?

modusc896d352 avatar Jul 15 '22 02:07 modusc896d352

https://archive.org/details/CreativeLabs-ISACT-163

mirh avatar Jul 18 '22 13:07 mirh

oh, that.

modusc896d352 avatar Jul 18 '22 15:07 modusc896d352

Extension not being included is fixed in 47e15b012e7b5c1f0bfe52d151c126b745f98220.

Mgamerz avatar Sep 07 '22 14:09 Mgamerz