Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/kunitoki/sonic-skills/webaudio-guidenpx skills add kunitoki/sonic-skills --skill webaudio-guidegit clone --depth 1 https://github.com/kunitoki/sonic-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kunitoki/sonic-skills/webaudio-guide)<a href="https://agentmods.dev/skills/kunitoki/sonic-skills/webaudio-guide"><img src="https://agentmods.dev/badge/skills/kunitoki/sonic-skills/webaudio-guide.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00098 | $0.00913 |
| Opus 5 | $0.00049 | $0.00456 |
| Sonnet 5 | $0.00020 | $0.00183 |
| Haiku 4.5 | $0.00010 | $0.00091 |
Grade A, and why
webaudio-guide scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 50 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Web Audio Processing Guide
Step 1 — Set up AudioContext and load worklet module
- Create
AudioContextinside a user gesture handler (click, keydown) to satisfy autoplay policy. - Call
await audioContext.audioWorklet.addModule('path/to/processor.js')before creating nodes. - The module path is resolved relative to the page; bundlers may require special config (e.g. Vite's
?worker&urlimport). - Check
audioContext.stateand callaudioContext.resume()if it is'suspended'.
Step 2 — Write the AudioWorkletProcessor
- Subclass
AudioWorkletProcessorin a separate file; callregisterProcessor('name', Class)at module scope. - Implement
process(inputs, outputs, parameters)—inputs[n][channel]andoutputs[n][channel]areFloat32Arrayviews for the current render quantum. Use.lengthin loops instead of hardcoding 128. - Pre-allocate all working buffers in
constructor(); never create objects or arrays insideprocess(). - Declare custom
AudioParams viastatic get parameterDescriptors()returning an array of{ name, defaultValue, minValue, maxValue, automationRate }descriptors. - Return
truefromprocess()to keep the processor alive;falseor no return shuts it down.
Step 3 — Wire up the node graph
- Instantiate the node on the main thread:
new AudioWorkletNode(ctx, 'name', options). - Use
node.connect(destination)andsource.connect(node)to build the signal path;AudioContext.destinationis the hardware output. - Access
AudioParams vianode.parameters.get('paramName')— set.valuefor immediate changes. - Schedule smooth automation with
.linearRampToValueAtTime(),.setTargetAtTime(), or.setValueCurveAtTime()on theAudioParam. - Tear down cleanly:
node.disconnect(), thensource.stop(), thenaudioContext.close().
Step 4 — Worklet ↔ main thread communication
- Use
this.port.postMessage()/node.port.onmessagefor low-frequency control (meters, state changes, error reporting). - Batch postMessage calls; avoid sending one per render quantum (currently ~344/sec at 44.1 kHz with 128-frame quanta).
- For high-frequency or low-latency control (e.g. live gain, pitch), share a
SharedArrayBufferand read/write integer views withAtomics.load()/Atomics.store(). Scale floats to integers or bit-cast through a private buffer;Atomicsdoes not operate onFloat32Array. - Cross-origin isolation (
COOP: same-origin+COEP: require-corpresponse headers) is required forSharedArrayBuffer.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 50 lines · 98 tokens per session scan A 38c9985fca1b
webaudio-guide is a skill published in the GitHub repository kunitoki/sonic-skills (18 stars, last pushed 3mo ago), licensed Unlicense. It adds 98 tokens to every session and 913 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
omnivoice
Local TTS, voice cloning, voice design, and video dubbing via the OmniVoice Studio MCP server (open-source ElevenLabs alternative; nothing leaves the machine, runs on MPS/CUDA/CPU). Use when: (1) generating speech from text in any of 646 languages, (2) cloning a voice from a 3-second reference clip, (3) designing a…
talkback
Speak an explanation out loud while working in any project — tiered text-to-speech with a pluggable backend (ElevenLabs by default and quota-guarded, macOS say via --fast for free instant local speech, local OmniVoice as an unlimited private tier). Markdown-aware, so code fences, URLs and deep paths collapse to short…
livecoding
Algorave-grade livecoded music workflow — TidalCycles patterns (Haskell DSL driving SuperDirt over OSC) + Hydra-synth visuals (browser or VS Code Simple Browser via a local HTML page that loads hydra-synth from CDN). Wraps the boot ritual (SuperCollider → SuperDirt → Tidal → Hydra), a vibe-descriptor pattern generator…
AudioMind
Tired of juggling multiple audio APIs? This skill gives you one-command access to TTS, music generation, sound effects, and voice cloning. Use when you want to generate any audio without managing multiple API keys.
Audio Transcriber
Transform audio recordings into professional Markdown documentation with intelligent summaries using LLM integration.
seedance-audio
This skill should be used when the user asks for Seedance 2.0 audio, dialogue, lip-sync, music, sound effects, ambience, beat-sync, audio-reference mapping, desync troubleshooting, or sound-driven visual timing.