initialize method
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();
}
}