I am studying Studio at the moment and I have a question about the possibilities to create an event from audio files which are located in different Banks.
The reasons I need this are:
Sample rate management. E.g. if I want to create an event with audio files with different sample rate I assume a have to store these files in different Banks, since there is only “per bank” sample rate option (and not per file). Or I can somehow alter sample rate for files inside one bank?
Large data management with modular approach. If I will have hundreds of files and want to use them across an entire game in different events. I assume the only way to do that it is to assemble events from files which a stored in different banks.
I read about “programmer sound” in API documentation (I am not a programmer) but it looks like there is not really much said about that in there. As far as I understood I can use them in cooperation with “audio tables” to solve my question?
There’s not much point changing the sample rate in banks, as if you use a bitrate based format, the file comes out the same size even if the sample rates are different. ie 128kbps = 128kbps, it doesnt change due to sample rate. If you use PCM vs ADPCM you would have to use different banks, but updates are coming to this screen. Ie keep original rate, and per sound rate adjustment.
you can reuse your sounds from the audio bin, if thats your only requirement. programmer sounds are good if you want 1 event for 10,000 wavs, like dialog for example. It lets the programmer supply the wav to the event through a callback.
I thought about the need for sample rate management for such things like weapons for example when they are constructed from separate modules.
My idea was:
they play fast, a lot and there are many of them and therefore it would be better to use PCM or FADPCM format in banks;
if you have a lot of weapons (modules) you have a lot of data and some of this data could be with lower sample rate to save HDD space;
And here I think I have made a mistake in understanding of playback principles.
Since there is an option to force samples to decompress them into memory when they are loaded permanently. I guess I can use even Vorbis format and decompress all weapon sounds when they loaded and have minimum CPU consumption and maximum HDD economy?
2.My idea was - to have a lot of samples and the possibility to use them in different events on various game stages (like aforementioned example with weapons).
And my concern was:
how to store a lot of samples in banks;
use them in various events;
not loading all banks at once but also not duplicating data in banks;
I guess the solution then could be to create one big bank for all weapons and load data selectively for chosen events only, with (Studio::EventDescription::loadSampleData) function?
Yes, with PCM and FADPCM you can adjust the sample rate to affect the quality vs size trade-off. We generally recommend FADPCM over PCM, because it achieves ~3.5 compression ratio over PCM and still has excellent performance. And yes, you do have the option to decompress selected sound banks in to memory on load, making for fast playback while saving HDD space. Just be mindful of memory usage.
If certain sounds are referenced by events in different banks, then they will be pulled in to each bank, and thus be duplicated on disk. They won’t be duplicated in memory though, as the runtime keeps a reference count for each sound and skips sounds that are already loaded. The solution you proposed, creating a big bank for all the “common” sounds, is feasible. As you said, you can still load the sound data for selected events with Studio::EventDescription::loadSampleData.
As Brett mentioned, we plan to add a lot more options to Studio’s bank screen in the near future, which will allow you more control over these things.