fledge_audio

Full-featured audio plugin for Fledge games. Background music, sound effects, and spatial audio.

pub package

Features

  • Background Music: Play music with crossfading between tracks
  • Sound Effects: Play one-shot sounds with volume control
  • Spatial Audio: 2D positional audio based on entity positions
  • Volume Channels: Master, music, SFX, voice, and ambient channels
  • Auto-Pause: Pause audio when window loses focus

Installation

dependencies:
  fledge_audio: ^0.1.0

Quick Start

import 'package:fledge_ecs/fledge_ecs.dart';
import 'package:fledge_audio/fledge_audio.dart';

void main() async {
  final app = App()
    ..addPlugin(TimePlugin())
    ..addPlugin(AudioPlugin());

  // Load assets
  final assets = app.world.audioAssets!;
  await assets.loadSound('explosion', 'assets/sounds/explosion.wav');
  await assets.loadMusic('theme', 'assets/music/theme.mp3');

  // Play audio
  app.world.playSfx('explosion');
  app.world.playMusic('theme', crossfade: Duration(seconds: 2));
}

Spatial Audio

Add positional audio to your game:

// Add listener to player/camera
world.spawn()
  ..insert(Transform2D.from(0, 0))
  ..insert(AudioListener());

// Add audio source to entities
world.spawn()
  ..insert(Transform2D.from(100, 50))
  ..insert(AudioSource(
    soundKey: 'engine',
    looping: true,
    autoPlay: true,
  ));

The audio system automatically adjusts volume and panning based on the listener's position relative to audio sources.

Volume Channels

Control volume by category:

final channels = world.getResource<AudioChannels>()!;

// Set individual channel volumes (0.0 to 1.0)
channels.master = 0.8;
channels.music = 0.6;
channels.sfx = 1.0;
channels.voice = 1.0;
channels.ambient = 0.5;

Documentation

See the Audio Guide for detailed documentation.

License

Apache 2.0 - See LICENSE for details.

Libraries

fledge_audio
A full-featured audio plugin for the Fledge ECS game framework.