Assets

  • If the bank references non-streamed sample data, call Bank_LoadSampleData(bank)  to request that sample data be loaded into memory.

  • If assets are marked as streaming, they are streamed from disk and Bank_LoadSampleData  won’t pull them fully into RAM; streaming behavior is separate.

  • Whether sample data is streamed or not is set by the sound designer in FMOD Studio, and cannot be changed at runtime

Non-Streaming Assets (embedded)

  • loaded into RAM when you call Bank_LoadSampleData .

  • Non-streamed = audio IS stored in the .bank (or in an assets bank)

  • .fsb  file = FMOD Sample Bank

    • They store raw/compressed audio data when FMOD decides to externalize samples instead of embedding them into .bank  files.

    • Old FMOD workflows β†’ .bank  + .fsb

    • New FMOD Studio workflows β†’ .bank  + .assets.bank  OR embedded data.

    • Today, .fsb  files appear only in specific build configurations.

    • They store:

      • PCM / ADPCM / Vorbis / Opus / etc audio data

      • Used for streaming or shared sample pools

      • Not event graphs, not metadata

  • Usual file system:

    • Inside the my_project/Build/Desktop/

    Master.bank
    Master.strings.bank
    Master.assets.bank
    Music.fsb
    SFX.fsb
    
  • Why the .bank  can be smaller than the original MP3s :

    • FMOD re-encodes audio during build

      • FMOD does NOT embed your MP3 as-is.

      • During bank build it usually:

        • Decodes MP3 β†’ PCM

        • Re-encodes into FMOD’s chosen codec (often Vorbis or ADPCM)

        • Applies mono conversion / resampling / trimming

        • Removes MP3 container overhead

      • So the final encoded data can be smaller than the original MP3.

      • MP3 has container + metadata overhead.

      • Vorbis often compresses short SFX better than MP3.

    • Multiple sounds share compression efficiency

      • If you have multiple short sounds, FMOD may pack them efficiently into one binary block.

  • If the data is actually inside the .bank file, why does the sound play without calling Bank_LoadSampleData? :

    • Because System_LoadBankFile  loads the compressed audio bytes, and FMOD is allowed to decode/load samples lazily when an event is first played.

    • Bank_LoadSampleData  does not load the bank file β€” it only prepares sample data in advance.

Streaming Assets

  • Streaming .

  • read from disk at runtime, not loaded into RAM by Bank_LoadSampleData .

  • Stream = audio is NOT stored in the .bank