A ball of thread for making sounds with your agent.
You write a score in MUS, a plain-text notation, or ask your agent to write one with you. The score does not call an oscillator. It touches a persistent physical world (strings, a wooden top, the air inside the box, a room) called Ariadne, and the world does the sounding. A pluck puts energy in; the energy travels from string to bridge to top to air to room, and some of it is lost on the way.
Every render prints a receipt with an energy ledger: what the hands put in, what the fretting hand paid, what was lost inside, what was radiated, and what is left over when you add it up. On this page the books close to about one part in 1016, and the page shows the number.
THE BENCH
LIVE · YOUR BROWSER · WEBASSEMBLYA simulated electric guitar, and a guitarist who never repeats, played into one Ariadne World. Tap a string, pick what the guitarist plays, and drag across the configuration map from the six-course string body to the B♭ brass bore. The residual readout is the World's own ledger, live. Starts quiet; nothing sounds until you press start.
KEYS (CLICK THE BENCH FIRST): Z X C V B N PLUCK THE OPEN STRINGS (SHIFT HARDER) · 1–8 SOFTKEYS · SPACE START/STOP · ↑ ↓ OR WHEEL TURN THE LIT KNOB · 0 RESET WORLD · − = MASTER · \ MUTE · ESC BACK
THE TRACT
A VOCAL TRACT MADE OF THE WORLDA throat you can play: a tongue, lips, a velum and a glottis, after Neil Thapen's Pink Trombone (2017).
LISTENING ROOM
Rendered on 2026-10-20 from a fresh clone of the repository, on an Intel i9 laptop: pieces written for this page, pieces that ship with the repository, and the bench's guitarist recorded offline. Each one has its score, its receipt, a waterfall of its spectrum and, for the guitar-shaped worlds, where the energy was (strings, box, room) every 10 ms. Levels are matched after the World for listening; the numbers are the World's, before that.
GET IT
RUST STABLE · MACOS / LINUXgit clone https://github.com/sophia-labs/ovillo.git cd ovillo/mus-rs && cargo build --release -p mus-cli ./target/release/mus render ../examples/tab/steel_string_tour.mus -o tour.wav --json
The receipt is JSON on stdout: look at badTokens (should be empty) and at ariadneWorlds[] for the ledger. --energy trace.json keeps every body's energy every 10 ms. The bench is a native app in ovillo/ (cargo run -p ovillo-app --release), with an MCP server so an agent can play it.
Agents: start at AGENTS.md, or read this site's llms.txt. The rule there is the rule here: every claim about how something sounds cites a spec section or a receipt field.
SAID PLAINLY
RESEARCH · PRE-ALPHA- The steel-string is young: no damping at note-off yet, so staccato, lifted fingers and dead notes are heard as ordinary rings and plucks.
- 24 partials per string, a linear model (no tension modulation, no fret buzz); the back, ribs and neck are rigid; radiation has no directivity, so these renders are close to mono.
- High frequencies cross the bridge weakly; the band-rising bridge rate is a fit, not a law. The guitar is warm.
- Harmonics are checked against pitch but played as ordinary plucks.
- Everything you hear here comes out of an Ariadne World. The bench's simulated guitar only excites its World; the tract follows Ariadne's constitution in its own crate (a branching tube does not fit the World runtime's modal bodies yet), and its page says which parts are approximations.
- A successful render is not by itself a theorem about transport, a biological reconstruction, intelligible speech, or listener perception.