
Melonjs Audio
Use this skill for sound and music in melonJS, loading audio, playing effects...
Install
npx skills add melonjs/melonJS --skill melonjs-audio -g -a claude-code -y- Repository
- melonjs/melonJS6.4k
- Category
- Media
- Updated
- 3d ago
- License
- MIT
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Use this skill for sound and music in melonJS, loading audio, playing effects, background tracks, audio sprites, volume and muting, spatial audio, procedural tone/noise generation, and effects such as reverb or a compressor on the whole mix. Covers the mandatory audio.init format list, the directory-not-file src convention, playTrack versus play, the fixed listener and pixel-scale distances of positional sound, and browser autoplay unlocking. Triggers on: audio, sound, audio.init, audio.play, playTrack, stopTrack, audio.load, sfx, music, volume, mute, fade, rate, pitch, sprite audio, stereo, panner, position, listener, refDistance, reverb, echo, delay, compressor, distortion, filter, audio effect, audio.tone, audio.noise, getAudioContext, getMasterGain, hasAudio, hasFormat, autoplay, no sound, sound stopped working, context suspended, silent after idle, clips silent but tones play.
Audio
Two setup rules
import { audio, loader } from "melonjs";
audio.init("mp3,ogg"); // 1. BEFORE preloading any audio
await loader.preload([
{ name: "cling", type: "audio", src: "data/sfx/" }, // 2. a PREFIX, not a file
]);
audio.init(format)must run before any audio asset is preloaded, and lists the formats you actually ship. Preloading first throwstarget audio extension(s) should be set through me.audio.init() before calling the preloader.It returnsfalsewhen no audio backend is available, so it is worth checking. The format list defaults to"mp3".srcis a prefix, not a file. The loader appends the assetnameplus each configured extension and uses the first that loads, sodata/sfx/+cling+mp3→data/sfx/cling.mp3. Passing a full filename gives you a 404. Adata:audio/...URL is the one exception: it is used verbatim, prefix and extension skipped.
audio.hasAudio() says whether the browser can play audio at all, and
audio.hasFormat("ogg") whether it can play one codec, useful for choosing
the init list or hiding a sound toggle on a device with no audio.
Order matters, melonJS tries the listed formats left to right, so put the
preferred one first. Two formats ("webm,mp3" or "mp3,ogg") is the usual
belt-and-braces for codec coverage. Accepted tokens: mp3, mpeg, opus,
ogg, oga, wav, aac, caf, m4a, m4b, mp4, weba, webm, dolby,
flac.
Effects versus music
audio.play("cling"); // fire and forget
audio.play("cling", false, null, 0.5); // loop, onend, volume
const id = audio.play("engine", true); // looping; keep the id to stop it
audio.playTrack("theme"); // background music
audio.stopTrack();


