loadSound
loadSound(id: string, url: string, signal?: AbortSignal): Promise<void>;
Load a single sound by its ID and URL. The sound is loaded into memory and can be played immediately. Use loadSounds to load multiple sounds at once.
An optional AbortSignal can be passed to cancel an in-flight load — useful when a component unmounts before a pending load completes. This prevents uncaught promise rejections; an AbortError propagates as-is without triggering error logging or ERROR events.
| Parameter | Type | Description |
|---|---|---|
id | string | Unique identifier for the sound |
url | string | URL or path to the audio file |
signal | AbortSignal (optional) | Signal from an AbortController to cancel the load |
Example
// @ts-ignore
import tokyoTrain from "../../assets/sounds/tokyo-train-melody.mp3";
import { SoundHub } from 'soundhub';
const soundHub = new SoundHub();
// Load a single sound
await soundHub.loadSound('tokyo-train', tokyoTrain);
// Or use a URL directly:
// await soundHub.loadSound('tokyo-train', 'https://example.com/tokyo-train-melody.mp3');
// Now play it
soundHub.play('tokyo-train', { loop: true });
AbortSignal Example
import { SoundHub } from 'soundhub';
const soundHub = new SoundHub();
const controller = new AbortController();
soundHub.loadSound('bg', '/audio/bg.mp3', controller.signal)
.catch(err => {
if (err.name !== 'AbortError') throw err;
// AbortError is silently handled — no error logging, no ERROR event
});
// Cancel on cleanup (e.g. when component unmounts):
controller.abort();
Load Sounds
Tip: Use
loadSound(id, url) to load a single sound or loadSounds([]) to batch-load multiple sounds. Loaded sounds can be played immediately. Use unloadSound(id) to free memory.