The listening loop
The reason barline’s AI collaboration is different is that the model can hear the output. Code plus audio in one reasoning loop is the part nobody else can copy: the AI edits structure and reads a continuous audio-feature stream, so it can converge on a measurable sonic goal instead of guessing.
The cycle
Section titled “The cycle”- Edit — the model changes the song’s code with
edit_file(orwrite_file/install_package). The edit is a Yjs transaction on the authoritative document. - Render — the browser observes the doc, recompiles, and hot-reloads; the change lands at the next bar boundary, with capture-and-commit guaranteeing the set never stops.
- Listen — analysis runs continuously: an
AnalyserNodeFFT plus loudness/transient features feed a telemetry stream. The model reads it viaget_status. - Iterate — the model diffs the new features against the goal and edits again, until the target is met.
What the model can hear
Section titled “What the model can hear”get_status surfaces the live telemetry, including:
- Transport and playhead — is it playing, and where.
- Compile state — so the model knows its last edit actually applied.
- Audio features — ~1 Hz RMS / peak / spectrum, and per-track levels
(
features.tracks). Per-track levels are the cheap, high-leverage addition: the model can tell that “the kick is buried” or “the stab is clipping the bus” and act on it.
Goals it can converge on
Section titled “Goals it can converge on”Because the features are measurable, prompts become closed loops:
- “Make the kick hit harder” → push drive/level until the kick’s transient energy and level rise, without the master clipping.
- “Bring the bass up to sit with the kick” → adjust gain until the rumble’s level reaches the target relative to the kick.
- “More space in the breakdown” → raise the reverb send and confirm the change in the spectrum.
The model already arrives with mixing priors (shipped in the connect-time instructions), so “make the drop harder” decomposes into concrete, audible edits — and the loop verifies each one.
This is the vision made operational: change → render → listen → iterate, with the same document, the same edit path, and the same audio the human hears.