SOURCE sound maker
Pick oscillator for clean tones, noise for clicks, static, taps, and rough effects.
PITCH height/move
Same start/end makes a steady note. Different values make zips, drops, chirps, and arcade sweeps.
TIMING custom length
DUR is the patch length. Attack/decay/release are fitted into that length so the export matches the preview.
FILTER tone cut
Lowpass softens, highpass thins, bandpass makes radio/toy tones. Q adds bite.
OUTPUT level/side
Gain is the patch loudness before global VOL. Pan moves it left/right for stereo flavor.
SPACE echo/room
Delay is echo. Verb is room. Small amounts keep UI sounds crisp.
MOD wobble
Mod adds motion: pitch wobble, pulsing volume, or filter shimmer. Off is safest.
ROUTE simple path
Clean is direct. Filtered shapes tone. Echo adds delay. Spacey adds room. Tight uses soft compression.
README
Soundsplainer is a sound-to-LLM translator. It is for people who can recognize the sound they want when they hear it, but do not want to manually explain oscillators, envelopes, filters, timing, and browser audio nodes.
Pick a swatch or build a custom patch, then copy the encoded recipe. Paste it into a coding chat and ask the LLM to decode it and implement the sound with the browser-native Web Audio API.
The Big Idea
Soundsplainer does not export an audio file. It exports a DECODE_BASE64_JSON: string. Inside that encoded JSON is a Web Audio API recipe: source, frequency, envelope, gain, filters, effects, simple route mode, safety notes, and direct instructions for the LLM.
The visible swatch names are just flavor labels for humans. The LLM does not need names like POPP, TICK, CHIR, or BUZZ. It gets the encoded Web Audio parameters.
Basic Workflow
- Swatches: click pads until you hear something useful.
- Custom: adjust the patch controls if you want to shape your own sound.
- Copy: copies the current
DECODE_BASE64_JSON:recipe. - Loop Gap: the small GAP checkbox beside LOOP adds a fixed half-second pause while preview looping. It is only for auditioning and is not part of the exported sound recipe.
- Swatch LEN: the LEN control beside LOOP only affects swatches. Custom patches use the Custom DUR control.
- Save: opens a name box. Names are limited to 12 characters and are only for your Bank list.
- Bank: replay, copy, delete, export, or import saved sounds.
Using It With An LLM
Paste the copied code into your coding chat and say something simple like: Decode this base64 JSON Web Audio API recipe and add this sound to my app when the menu button is clicked.
The encoded payload already tells the LLM that the recipe is meant for browser-native procedural sound and that values should be treated as implementation parameters, not poetic description.
Custom Glossary
- Source: the thing that makes sound. Oscillator is a tone. Noise is static-like texture.
- Wave: oscillator shape. Sine is smooth, triangle is soft, square is buzzy, sawtooth is sharper.
- Frequency / Hz: pitch. Lower numbers are deeper. Higher numbers are brighter.
- Envelope: the life of the sound. Attack starts it, decay drops it, sustain holds it, release fades it out.
- Gain / VOL: volume level. The friendly VOL control becomes real Web Audio gain values inside the recipe.
- Swatch LEN: the small length control near LOOP only stretches or shrinks swatch previews and their exported event layers.
- Custom DUR: the Custom tab has its own duration control inside the Timing node. Custom exports include fitted timing so envelope values cannot accidentally make a short patch much longer.
- Swatch shaping: swatches use fixed internal Web Audio values so the exported recipe matches the preview instead of exporting vague macro labels.
- Filter: tone shaping. Lowpass softens highs. Highpass removes lows. Bandpass focuses a range. Q/resonance makes the filter peak sharper.
- Pan: left/right stereo position.
- Delay: echo. Time controls echo spacing, mix controls how much echo is heard.
- Reverb: fake room/space around the sound.
- LFO / Mod: slow movement. It can wobble pitch, volume, or filter tone.
- Route: a beginner-friendly path choice. Clean is direct, Filtered shapes tone, Echo adds delay, Spacey adds room, Tight adds soft compression.
- Base64: a way to pack text data into a compact string.
- JSON: structured data inside the encoded string.
- localStorage: browser storage on your own device/profile.
Bank, Export, Import
Bank saves sounds in localStorage. Export creates a JSON bank backup containing your saved names and encoded recipes. Import reads that JSON and merges valid sounds back into the Bank. Export is how you move a bank between browsers or devices.
Privacy & Local Storage
Soundsplainer is intended to run entirely in your browser. It does not require a server, account, analytics, microphone access, upload, or internet connection to generate sounds.
- Saved Bank sounds and skin choices are stored locally in your browser.
- Soundsplainer does not send saved sounds anywhere by itself.
- Copied codes only leave your device if you paste them into ChatGPT, another LLM, GitHub, email, or somewhere else.
- Exported bank JSON may include your custom sound names, so avoid private info in names if you plan to share the file/text.
- Clearing browser site data can erase your Bank and skin choice.
Skins
The code has a simple default flag: SETSKIN = 1. Options lets you test skins while using the app. If you choose a skin in Options, that saved choice overrides the default until browser storage is cleared.
- 1 Basic
- 2 Light
- 3 Retro
- 4 Vibes
- 5 Baked
- 6 Moody
Reality Check
Procedural Web Audio should be close and reusable, but different browsers, devices, speakers, and volume settings can make tiny sounds feel slightly different. Soundsplainer is meant to explain the sound to an LLM clearly enough to rebuild it in code, not to create studio-perfect sampled audio.