Skip to content

@web-engine-dev/audio

Game audio engine with spatial audio, buses, and adaptive music for web-engine-dev.

Features

  • Spatial Audio: 3D positioned sound sources
  • Audio Buses: Hierarchical mixing with effects
  • Adaptive Music: Dynamic music systems
  • Sound Pooling: Efficient sound instance management
  • Web Audio API: Native browser audio support
  • Audio Sprites: Multiple sounds in single file

Installation

bash
npm install @web-engine-dev/audio
# or
pnpm add @web-engine-dev/audio

Quick Start

typescript
import { AudioManager, SoundEmitter, AudioBus } from '@web-engine-dev/audio';

// Initialize audio manager
const audio = new AudioManager();

// Load sounds
await audio.load('explosion', 'sounds/explosion.mp3');
await audio.load('music', 'sounds/background.mp3');

// Play 2D sound
audio.play('explosion', { volume: 0.8 });

// Play 3D spatial sound
audio.playAt('explosion', position, {
  maxDistance: 50,
  rolloff: 'linear',
});

// Play background music
audio.playMusic('music', { loop: true, fadeIn: 2.0 });

API Overview

Audio Buses

typescript
// Create bus hierarchy
const masterBus = audio.createBus('master');
const sfxBus = audio.createBus('sfx', { parent: masterBus });
const musicBus = audio.createBus('music', { parent: masterBus });

// Adjust bus volume
sfxBus.setVolume(0.7);
musicBus.setVolume(0.5);

// Add effects
sfxBus.addEffect(new ReverbEffect());

Spatial Audio

typescript
const emitter = new SoundEmitter({
  position: Vec3.ZERO,
  maxDistance: 100,
  rolloffModel: 'inverse',
  innerAngle: 45,
  outerAngle: 180,
});

emitter.play('footstep');
emitter.setPosition(newPosition);

Adaptive Music

typescript
const musicSystem = new AdaptiveMusicSystem({
  layers: [
    { name: 'base', file: 'music_base.mp3' },
    { name: 'combat', file: 'music_combat.mp3' },
    { name: 'drums', file: 'music_drums.mp3' },
  ],
});

// Crossfade layers based on game state
musicSystem.setLayerWeight('combat', inCombat ? 1 : 0);

Peer Dependencies

  • @web-engine-dev/math - Vector math for spatial audio

Proprietary software. All rights reserved.