SoundWeaver
52 real sounds ~900 KB total MIT licensed No Tone.js · no Web Audio synths

Real sounds for real interfaces. No synthesis.

SoundWeaver is a richly labeled library of 52 pre-rendered UI sound effects — clicks, toggles, success, error, notifications, rewards — plus a drop-in React hook or a framework-agnostic manager. Every sound plays through HTMLAudioElement. Nothing is generated at runtime.

Every sound, grouped by category

Hover or focus a tile to preload it, click (or press Enter) to play the real file. Nothing loads until you touch it.

Loading sound library…

Why SoundWeaver

Built so audio UX stops being the thing every project skips.

Real audio only, by design

Every sound is pre-rendered offline into an ordinary WAV file and played back with HTMLAudioElement. No Tone.js, no Web Audio oscillators, no AI audio generated at runtime — so playback is instant, predictable, and free of browser audio-policy surprises.

52 richly labeled sounds

Tone, character, intensity, duration, and feeling for every sound — enough to pick the right one for a checkout button versus a destructive-delete confirm.

Drop-in integration

A React SoundProvider + useSound hook, or a framework-agnostic SoundManager for vanilla JS. Both ship volume control and a mute toggle out of the box.

Accessible by default

Global mute, per-sound volume, master volume, prefers-reduced-motion respected, preferences persisted to localStorage.

Self-contained

Real WAV files ship alongside an inline base64 SOUND_MAP, so there are no missing-file or hosting problems — it cannot 404.

MIT licensed

Use it commercially, swap in your own recorded CC0 files (Kenney, Material) any time — just replace the file and relabel it.

Drop it in

The real integration code — copy what fits your stack.

App.jsx
import { SoundProvider, useSound, useSoundControls } from "./assets/useSound.jsx";
import { SOUND_MAP, VOLUME_MAP } from "./assets/sounds.inline.js";

function App() {
  return (
    <SoundProvider soundMap={SOUND_MAP} volumeMap={VOLUME_MAP} defaultVolume={0.5}>
      <PayButton />
    </SoundProvider>
  );
}

function PayButton() {
  const click = useSound("click-crisp-primary");
  const success = useSound("success-warm-chime");
  const error = useSound("error-soft-thud");
  return (
    <button onClick={async () => { click(); (await submit()) ? success() : error(); }}>
      Pay now
    </button>
  );
}

function SoundSettings() {
  const { masterVolume, setMasterVolume, muted, toggleMute } = useSoundControls();
  return (
    <>
      <button onClick={toggleMute} aria-pressed={muted}>{muted ? "Unmute" : "Mute"}</button>
      <input type="range" min="0" max="1" step="0.05" value={masterVolume}
             aria-label="Sound volume"
             onChange={(e) => setMasterVolume(Number(e.target.value))} />
    </>
  );
}

Install

Add it as a Claude Code plugin, or clone the repo directly.

As a Claude Code plugin

/plugin marketplace add uaredumb/SoundWeaver
/plugin install soundweaver@uaredumb

Clone the repo

git clone https://github.com/uaredumb/SoundWeaver.git