bnnm / wwiser

wwiser - Wwise .bnk explorer and audio simulator.
180 stars 9 forks source link

Code license #24

Closed Mgamerz closed 2 years ago

Mgamerz commented 2 years ago

Hi,

Great work on your project, we are using it to try to figure out how to add new audio to Mass Effect 2 and 3 Legendary Edition since we need to figure how to connect to the busses in init.bnk. Our project, Legendary Explorer, is based in C#, along with all of our audio handling code. I'm wondering what the license for this project is, since for us to effectively use this, we will probably need to port a bunch of it to C# so we can do some reverse engineering on a bunch of WwiseBanks to figure out the IDs of the audio busses we need to use so that it respects proper environmental and user settings.

In the readme it says feel free to use the info, but wanted to check and know the license, as our project is GPL.

Thanks, Mgamerz

bnnm commented 2 years ago

There is no explicit license b/c I haven't devoted enough time to decide on one. Guess you could treat it right now as GPL-ish compatible.

However for your exact case, not sure if you really need wwiser as-is. Porting wwiser's parser to C# wouldn't be very effective, specially if you intend to modify banks, since was coded in a certain (clunky) way to ease prototyping and extracting/comparing info from SDKs from a huge range of versions.

It may be better to understand the structure (as output) and make one that better suits your purpose. Or just modify existing audio objects, rather than updating the whole bank, that would only values at offsets (printed in the xml output) and probably enough for basic modding.

And since wwiser's printed field info is derived from Audiokinetic's SDKs don't think learning from it would really be protected by a license, thus "feel free to use info here to make other programs".

It would be nice and polite to link to this project somewhere and mention what you used it for, though.

Mgamerz commented 2 years ago

Yeah we credit every program and resource we use. We currently can use Wwise 2019.1.7110 to generate bank 134 versions, which is what the game uses. The issue we face is that we don't know how to hook up to the in-game audio busses so it just blasts at full volume - though to be fair most of us have no idea what we're doing as nobody on this project is an audio engineer.

I found the https://github.com/xyx0826/WwiseParser which seems like a good starting point since a bunch of the scaffolding is done. Mostly we need this to figure out which Ids we need to use to hookup audio properly. We make the bank in Wwise, and then import it to the game files, then adjust the banks to point to the correct Init.bnk stuff.

Anyways, thanks again for the info!

bnnm commented 2 years ago

Busses are just linked by ID to some existing bus in init.bnk, probably you can put the same ID in the "OverrideBusId field as other similar audio objects (there may be multiple buses if game uses one per music/voice/sfx/etc). Audio objects may also inherit some ancestor's bus in the hierarchy instead, too. There is also a type of aux-busses that game may use instead but those are less common.

Some self-notes while playing around with Wwise's editor, may give you some hints: https://github.com/bnnm/wwiser/blob/master/doc/EDITOR.md

xyx0826 commented 1 year ago

Yeah we credit every program and resource we use. We currently can use Wwise 2019.1.7110 to generate bank 134 versions, which is what the game uses. The issue we face is that we don't know how to hook up to the in-game audio busses so it just blasts at full volume - though to be fair most of us have no idea what we're doing as nobody on this project is an audio engineer.

I found the https://github.com/xyx0826/WwiseParser which seems like a good starting point since a bunch of the scaffolding is done. Mostly we need this to figure out which Ids we need to use to hookup audio properly. We make the bank in Wwise, and then import it to the game files, then adjust the banks to point to the correct Init.bnk stuff.

Anyways, thanks again for the info!

Most Wwise object IDs, including bus IDs, are FNV hashes of their names. One workaround is to name your new bus after a hash collision so it hashes to the same ID.

Glad that you found WwiseParser useful.