sound-kit
sound-mixer
One audio context with real buses: levels above 1, ducking that reaches every voice, and a limiter at the end. A typed registry of sounds with variants and voice caps, streamed music, slow motion, and sounds placed in a scene. No dependencies.
bun add @zkmake/sound-mixer
Sounds
Engine
Music
—
Ambience
Whole mix
idle
Placed sound
Seen from above: you're the dot in the middle, facing up. Drag the engine around.The code
The panel on the right is sound-desk
A separate package,@zkmake/sound-desk: a dev panel for this mixer. It has
no demo page of its own; it needs a live mix to show, so it's mounted here.
- mix: a meter, level, mute and solo for each bus. Hold to duck and watch music and ambience dip.
- voices: what's playing, by sound, with a 30-second trend that flags a leak.
- log: drops and steals. Press Burst ×16 and the coins past the cap of 6 show up as steals.
- memory: each sample's decoded size, flagging anything that should stream.
- scenes: fire the meadow's emitters, set its bed, play and skip music.
import { mountSoundDesk } from "@zkmake/sound-desk";
mountSoundDesk(mixer, { scapes: { meadow }, playlists: { music } });