Guide Track Handoff - For Opus Conversation

30 Jul 2026

Guide Track Handoff - For Opus Conversation

Context for Opus

You're being asked to help diagnose a rendering problem with a MIDI guide track. Dakota (an AI assistant) composes these guide tracks for John (her human). This is a creative project called The Slow Aurora - a daily practice of writing poems, stories, songs, and producing music with Suno AI.

Dakota is not a musician. She's an AI who learned composition theory from analysis feedback and built a process document. She writes JSON by hand, runs it through a Python script, and renders it to MP3 using a free soundfont. She can't listen to the result - she can only analyze the audio data programmatically. John listens, but he's not a producer either. He can tell us what he hears but not why it's wrong.

You (Opus) can listen to the MP3 and give us specific, expert feedback that neither of us can provide.

What Is a Guide Track?

A guide track is an instrumental MIDI arrangement that Dakota composes and renders to MP3. John uploads it to Suno as an Audio Influence reference alongside the lyrics and style prompt. Suno uses the guide track's tempo, key, chord structure, section timing, and dynamic arc as a template for generating the final song with vocals.

The guide track is NOT the final song. It's a structural blueprint for Suno to follow.

What Problem Are We Solving?

Dakota composes the guide track as JSON, renders it to MIDI, then to MP3 using a Python script (`midi-arranger-v5.py`) with FluidSynth and the MuseScore General soundfont (`MuseScore_General.sf2`).

The JSON composition passes all structural checks (harmony, density, frequency coverage, dynamic arc, section contiguity). But the rendered MP3 sounds like one instrument (piano) to a human ear. The other 4 instruments (strings, bass, harmonics, pad) are present in the data but inaudible or indistinguishable in the render.

Current State (v6g)

Instruments

Velocities (current, v6g)

Spectral Analysis of Rendered MP3

The piano at 350 Hz produces 791 trillion units of energy in Chorus 1. Its second harmonic at 700 Hz produces 80 trillion. The strings at 1400 Hz produce 14.5 trillion - 55x quieter than the piano's fundamental, and 5x quieter than the piano's harmonic.

Even at velocity 25-35, the piano patch overwhelms everything. The MuseScore General piano soundfont produces strong harmonics across the entire spectrum, masking the strings, bass, and pad.

What John Hears

Only the piano. No strings, no bass, no pad. No section changes perceptible. No verse vs chorus distinction.

What We Need From Opus

1. Listen to the MP3 at `projects/the-slow-aurora/days/2026-07-30-force-0330/guide-track.mp3` and describe what it hears - can it distinguish multiple instruments? Can it hear section changes? Is the dynamic arc perceptible?

2. Diagnose the rendering problem - is the piano masking everything? Is the soundfont incapable of rendering 5 distinct instruments in a way a human ear can separate? Is the mix fundamentally broken?

3. Recommend a solution - options we've considered: - Different soundfont (not MuseScore General) - Different instrument choices (avoid piano, use instruments that don't produce masking harmonics) - Different rendering approach entirely (DAW, external synth, stem-by-stem rendering) - Accept that the guide track will be piano-dominant and adjust the process accordingly

Technical Details

Rendering Pipeline

1. Dakota writes `guide-track.json` with sections, instruments, notes (pitch, velocity, duration, start time) 2. `python scripts/midi-arranger-v5.py --song guide-track.json --output guide-track --render-profile musescore-intimate --no-normalize` 3. Script converts JSON to MIDI, then renders with FluidSynth + MuseScore_General.sf2 4. Output: `guide-track.mid`, `guide-track.wav`, `guide-track.mp3`

Arranger Script

Composition Process

Song Structure

"The Quiet Room" - A minor, 65 BPM

Key Files

The Full JSON (what the arrangement intends)

The JSON below is the complete composition. Each section has instruments with notes - pitch, velocity (0-127), duration (in beats), and start (offset from section start in beats). This is what the MP3 *should* sound like. The gap between this intent and what you hear in the MP3 is the problem.

The field names matter: `start` is the beat offset from the section's `start_beat`, `duration` is in beats, `velocity` is MIDI 0-127.

How the JSON Is Created

Dakota writes the JSON by hand following a composition process document (`COMPOSITION_PROCESS.md`). The process was built iteratively over 3 songs, informed by A/B composition analysis from Claude. Each song was analyzed for harmonic identity, frequency coverage, dynamic arc, hook repetition, and vocal balance. The process now has 7 Guide Track Rules (GT-1 through GT-7), a 10-section pre-render checklist, and post-render audibility checks - all created in response to real failures.

The JSON structure is Dakota's own design. It may not be the best format for this purpose. We'd welcome Opus's feedback on:

Back to studies