🚀 Quick Start Guide
Get up and running with Audio Channel Queue in just 5 minutes! This guide will walk you through creating your first multi-channel audio application.
📋 What We'll Build
By the end of this guide, you'll have:
- ✅ Background music playing on channel 0
- ✅ Sound effects playing on channel 1
- ✅ Volume controls for each channel
- ✅ Pause/resume functionality
- ✅ Event listeners showing real-time feedback
🎵 Step 1: Basic Audio Playback
Let's start with the simplest possible example:
import { queueAudio } from 'audio-channel-queue';
// Play a sound immediately
await queueAudio('./sounds/welcome.mp3');
console.log('Audio is now playing!');
That's it! Your first audio is playing. But let's make it more interesting...
🎛️ Step 2: Multiple Channels
Now let's use multiple channels to play different types of audio simultaneously:
import { queueAudio, setChannelVolume } from 'audio-channel-queue';
// Background music on channel 0 (quieter)
await queueAudio('./music/background.mp3', 0, {
loop: true, // Loop continuously
volume: 0.3 // 30% volume
});
// Sound effects on channel 1 (louder)
await queueAudio('./sfx/button-click.wav', 1, {
volume: 0.8 // 80% volume
});
console.log('Background music and sound effects playing!');
⏯️ Step 3: Add Pause/Resume Controls
Let's add some control over our audio:
import {
queueAudio,
pauseChannel,
resumeChannel,
pauseAllChannels,
resumeAllChannels
} from 'audio-channel-queue';
// Start some audio
await queueAudio('./music/background.mp3', 0, { loop: true });
await queueAudio('./sfx/explosion.wav', 1);
// Pause just the background music
await pauseChannel(0);
console.log('Background music paused');
// Resume it after 2 seconds
setTimeout(async () => {
await resumeChannel(0);
console.log('Background music resumed');
}, 2000);
// Emergency pause - stop everything!
// await pauseAllChannels();
🔊 Step 4: Volume Control
Control the volume of individual channels or all channels at once:
import { setChannelVolume, setAllChannelsVolume, getChannelVolume } from 'audio-channel-queue';
// Set individual channel volumes
setChannelVolume(0, 0.2); // Background music: 20%
setChannelVolume(1, 0.9); // Sound effects: 90%
// Check current volume
const bgVolume = getChannelVolume(0);
console.log(`Background volume: ${bgVolume * 100}%`);
// Set all channels to the same volume
setAllChannelsVolume(0.5); // All channels: 50%
📊 Step 5: Real-time Event Monitoring
Get real-time feedback about what's happening:
import {
queueAudio,
onAudioStart,
onAudioComplete,
onAudioProgress,
onQueueChange
} from 'audio-channel-queue';
// Listen for when audio starts playing
onAudioStart(0, (info) => {
console.log(`🎵 Started: ${info.fileName}`);
console.log(`⏱️ Duration: ${(info.duration / 1000).toFixed(1)}s`);
});
// Listen for when audio finishes
onAudioComplete(0, (info) => {
console.log(`✅ Completed: ${info.fileName}`);
console.log(`📊 Remaining in queue: ${info.remainingInQueue}`);
});
// Listen for real-time progress updates
onAudioProgress(0, (info) => {
const progressPercent = (info.progress * 100).toFixed(1);
console.log(`📈 Progress: ${progressPercent}%`);
});
// Listen for queue changes
onQueueChange(0, (snapshot) => {
console.log(`📋 Queue has ${snapshot.totalItems} items`);
});
// Now start some audio to see the events in action
await queueAudio('./music/song.mp3', 0);
🚨 Step 6: Priority Audio & Queue Management
Handle urgent audio that needs to play immediately:
import {
queueAudio,
queueAudioPriority,
stopCurrentAudioInChannel,
stopAllAudioInChannel
} from 'audio-channel-queue';
// Queue up some background music
await queueAudio('./music/song1.mp3', 0);
await queueAudio('./music/song2.mp3', 0);
await queueAudio('./music/song3.mp3', 0);
// Urgent announcement - play next!
await queueAudioPriority('./voice/important-announcement.mp3', 0);
// Stop current song and skip to next
stopCurrentAudioInChannel(0);
// Clear entire queue for emergency
// stopAllAudioInChannel(0);
🎮 Complete Example: Simple Game Audio
Here's a complete example showing how you might use Audio Channel Queue in a simple game:
import {
queueAudio,
queueAudioPriority,
setChannelVolume,
setVolumeDucking,
pauseAllChannels,
resumeAllChannels,
onAudioStart
} from 'audio-channel-queue';
class GameAudio {
constructor() {
// Set up volume levels
setChannelVolume(0, 0.4); // Background music
setChannelVolume(1, 0.8); // Sound effects
setChannelVolume(2, 1.0); // Voice/announcements
// Set up volume ducking - when voice plays, reduce other audio
setVolumeDucking({
priorityChannel: 2, // Voice channel
priorityVolume: 1.0, // Voice at full volume
duckingVolume: 0.1 // Reduce others to 10%
});
// Log when important audio starts
onAudioStart(2, (info) => {
console.log(`🎙️ Voice announcement: ${info.fileName}`);
});
}
async startGame() {
// Start background music
await queueAudio('./music/game-theme.mp3', 0, { loop: true });
console.log('🎮 Game started!');
}
async playerJump() {
// Quick sound effect
await queueAudio('./sfx/jump.wav', 1);
}
async playerExplode() {
// Explosion sound
await queueAudio('./sfx/explosion.wav', 1);
}
async gameOver() {
// Priority announcement (will duck background music)
await queueAudioPriority('./voice/game-over.mp3', 2);
}
async pauseGame() {
await pauseAllChannels();
console.log('⏸️ Game paused');
}
async resumeGame() {
await resumeAllChannels();
console.log('▶️ Game resumed');
}
}
// Use it in your game
const gameAudio = new GameAudio();
// Start the game
await gameAudio.startGame();
// Simulate some game events
setTimeout(() => gameAudio.playerJump(), 1000);
setTimeout(() => gameAudio.playerExplode(), 2000);
setTimeout(() => gameAudio.gameOver(), 3000);
🎯 What's Next?
Congratulations! You now have a solid foundation with Audio Channel Queue. Here's what to explore next:
📚 Core Concepts
Understand how channels, queues, and the audio lifecycle work
📖 API Reference
Complete documentation of all available functions
🎯 Examples
Real-world examples for gaming, podcasts, and interactive apps
🔥 Advanced Features
Volume ducking, priority queuing, and progress tracking
💡 Quick Tips
🎵 Audio File Tips:
- Use MP3 for music and voice (good compression)
- Use WAV for short sound effects (no compression delay)
- Keep file sizes reasonable for web loading
🎛️ Channel Organization:
- Channel 0: Background music/ambient
- Channel 1: Sound effects/UI sounds
- Channel 2: Voice/announcements
- Add more channels as needed
⚡ Performance Tips:
- Preload important audio files
- Use volume ducking instead of stopping/starting
- Monitor memory usage with many audio files
Ready to build something amazing? Check out our real-world examples for inspiration! 🚀