initialize method

Future<void> initialize([
  1. List<String>? bgmTracks
])

Initialize the Sound System

Must be called once during app/game startup, before any sound is used.

What it does:

  • Bootstraps AudioStorage and loads persisted settings
  • Initializes BGM, SFX, and Voice channels with their audio contexts
  • Wires voice-ducking hooks into BGM
  • (Optional) Preloads a default BGM playlist and resumes it

Params:

  • bgmTracks: Optional list of asset paths to seed the default BGM playlist

Example:

await FiftyAudioEngine.instance.initialize([
  'assets/bgm/title.mp3',
  'assets/bgm/level1.mp3',
]);

Implementation

Future<void> initialize([List<String>? bgmTracks]) async {
  await AudioStorage.instance.initialize();
  _storage = AudioStorage.instance;

  // Initialize individual audio managers
  BgmChannel.initialize(_storage, _bgmContext);
  bgm = BgmChannel.instance;

  SfxChannel.initialize(_storage, _sfxContext);
  sfx = SfxChannel.instance;

  VoiceActingChannel.initialize(_storage, _voiceContext);
  voice = VoiceActingChannel.instance;

  // Wire voice ducking behavior to BGM
  voice.onDucking = voiceOnDucking;
  voice.onRestore = voiceOnRestore;

  if (bgmTracks != null) {
    // Optional: Initialize default BGM playlist
    await bgm.loadDefaultPlaylist(bgmTracks);
    await bgm.resumeDefaultPlaylist();
  }
}