blipsmith
An agent-playable lo-fi synthesizer. There is no model inside: an LLM turns the knobs over MCP and a deterministic C++ core renders the bytes, identical on every platform.
Product
The shipped product: live link, the problem it solves, and the stack it runs on.
The problem
Game and app builders need short lo-fi sound effects without sample licensing, a sound designer, or a generative audio model, and a coding agent cannot produce audio at all. Generative audio is non-deterministic, opaque, and license-murky. blipsmith gives the agent a real instrument instead: a C++ DSP core it plays one typed setter at a time over MCP, while a human drives the same engine from a terminal and gets the same bytes. Because the agent cannot hear, every render comes back with six measured acoustic features, so it steers by numbers.
Stack
Preview
$ blipsmith render blip.spec.json ✓ blipsmith-out/blip.wav → 220 ms · peak -1.0 dBFS · f0 653 Hz ✓ 35 goldens match · linux + macos
How I built it
Product requirements
Open the PRDThe full PRD lives in the repo. Open it above.
blipsmith went from a rough idea doc to a feature-complete v1 in three days, one spec at a time. The idea was grilled across seven rounds with /prd-grill-me until every open design question was resolved, written up as a DEFINED PRD, then decomposed into a thirteen-item dependency-ordered backlog that was implemented and verified item by item. One constraint drove the whole architecture: no libm transcendentals anywhere on the audio path, because IEEE-754 guarantees only + - * / sqrt and fma exactly, and everything else is a given platform's choice of approximation. So sine comes from a wavetable built by a fixed-term Taylor polynomial, filter coefficients are recombined from that same table through the double-angle identities, and the FFT behind the brightness measurement is forty lines of radix-2 reading exact twiddles rather than a vendored library that would have called cos. The ban is enforced rather than intended: a script reads the compiled core's undefined symbols and fails the gate on any transcendental, and the suite compiles a probe that calls sin() to prove that gate can actually fail. CI renders 35 golden specs on Linux x86_64 and macOS arm64 and diffs the SHA-256 manifests, so the determinism claim is measured, not argued. The README is executable too: a test lifts the documented spec out of its heredoc, runs it in an empty directory, and compares the printed output to the documented block, so the docs cannot quietly drift from the tool.
Continuous integration
Every push runs the seven-step gate on Linux x86_64 and macOS arm64, then a join job diffs the two hash manifests. One diverging byte across the 35 golden renders fails the build. This badge is live.
Timeline
- milestoneJul 25, 2026
Corpus frozen at 35 goldens; two-platform CI green and bit-identical across Linux x86_64 and macOS arm64
- milestoneJul 25, 2026
The two surfaces ship: a 30-tool MCP server over stdio and a five-command CLI, both over the same 13-preset library
- milestoneJul 24, 2026
Deterministic C++ core: SoundSpec contract, oscillators, modulation, filter, lo-fi, effects, master bus, measured features
- prdJul 24, 2026
Idea grilled to a DEFINED PRD over seven rounds, then cut into a 13-item dependency-ordered backlog
Recent commits
All commitsLive from GitHub, as of Aug 8, 2026
- f0131b9Jul 26, 2026
- 4d40ca1Jul 25, 2026
- 190e1d7Jul 25, 2026
feat: composition engine, preset library, CLI, and MCP server
- 0f7ec71Jul 25, 2026
feat: modulation, filter/lo-fi/effects, master bus, acoustic features
- 73668eeJul 24, 2026
feat: deterministic core, SoundSpec contract, and audible render path
- b227e72Jul 24, 2026
Metrics
Each metric carries an honesty tag. Verified numbers read solid; targets and placeholders read muted.
Built the same way, every time.
Every exhibit runs the same loop: spec, implement, verify, ship. If you want this kind of work on your team, full-time or freelance, let's talk.