Files
ableton-mcp-ai/docs/SPRINT_v0.1.30_NEXT_KIMI.md

11 KiB

SPRINT v0.1.30 - NEXT FOR KIMI

Arrangement-backed Harmonic MIDI, Selective Snare, Fewer Empty Gaps

Owner: Kimi via OpenCode
Reviewer: Codex
Fecha: 2026-04-02
Baseline session: 7b65596ef69a
Reference for production quality: Ableton demo project reviewed live by Codex via MCP


1. Runtime Truth

Do not trust only docs/SPRINT_v0.1.29_VALIDATION_REPORT.md. Validate against:

  • C:\Users\ren\.abletonmcp_ai\generation_manifests.json
  • current Live session via MCP
  • active code in:
    • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py
    • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py
    • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py
    • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py

Baseline truth:

  • session_id = 7b65596ef69a
  • generation_mode = library-first-hybrid
  • coherence_score = 4.9
  • family_adherence_rate = 0.5
  • repetition_metrics.verdict = repetitive
  • music_source_reuse_ratio = 1.0
  • mandatory_midi_hook.track_name = HARMONY_PIANO_MIDI

Critical runtime truth found by Codex in Live:

  • HARMONY_PIANO_MIDI exists
  • it has device_count = 1
  • but in the current Live session it has session_clip_count = 1
  • and arrangement_clip_count = 0

That means:

  • the report over-read the hook as solved
  • the harmonic MIDI exists as a concept
  • but in Arrangement playback it is not actually carrying the song

This matches the user's audible complaint:

  • the MIDI does not really sound in the song
  • the song still has good 4-second islands followed by empty space

2. What Codex Fixed In This Turn

These fixes are already in code and must not be reverted.

2.1 Snare selectivity bug

The snare penalty logic in reference_listener.py had a real bug:

  • aggressive snare penalty was computed
  • but the final return clamped the multiplier to minimum 1.0
  • so penalties never actually applied

Codex fixed:

  • penalties can now go below 1.0
  • snare/clap section context is now aggregated across intro/build/drop/break instead of only reading the first energetic section

Interpretation:

  • SS_RNBL_Me_Gustas_One_Shot_Snare.wav is no longer protected by a math bug
  • do not reintroduce that clamp

2.2 Harmonic MIDI hook planning bug

The hook planner was too section-local.

Codex fixed song_generator.py so the hook plan now stores:

  • per-section hook notes for the role itself
  • plus arrangement_notes
  • plus arrangement_length_beats

Meaning:

  • HARMONY_PIANO_MIDI can now be materialized as a song-long harmonic line
  • not only as a local section clip

2.3 Arrangement MIDI materialization bug

Codex fixed the path in server.py to:

  • prefer arrangement_notes
  • create a long arrangement clip
  • retry note insertion instead of falling back immediately

Also fixed the runtime in:

  • abletonmcp_init.py
  • AbletonMCP_AI/abletonmcp_runtime.py

The runtime now caches newly created arrangement clips so add_notes_to_arrangement_clip can find them reliably.

2.4 Manifest / validation truth bugs

Codex fixed:

  • mandatory_midi_hook.materialization_mode was lying with "created" instead of the real mode
  • actual_runtime was missing totals
  • senior validation was under-reading family_adherence_rate from stale paths

Do not undo these fixes.

2.5 Tests added / hardened

Codex added or tightened tests for:

  • snare penalty below 1.0 in soft context
  • hook planning across the full phrase plan

3. Read This User Clarification Correctly

The user comes from FL Studio and says:

  • piano roll
  • piano armonico

In this project that means:

  • harmonic MIDI content
  • HARMONY_PIANO_MIDI
  • song-wide harmonic support or phrase identity

It does not mean:

  • only AUDIO PIANO MELODY
  • only piano loops from the library

The correct product goal is:

  • HARMONY_PIANO_MIDI across the song
  • blended with library audio
  • used to fill and unify harmonic space

4. Code Review Of v0.1.29

4.1 What Kimi improved

Kimi did improve one real thing:

  • Arrangement structure is less cloned than older versions
  • visually it looks more like a song and less like the exact same layout every time

That improvement is real and should be preserved.

4.2 What remained wrong

  1. The hook was reported as solved too early. In runtime it was still Session-backed, not Arrangement-backed.

  2. The snare issue was not really solved. The code had a penalty path, but the math clamp cancelled it.

  3. The song still relies too much on clip islands. It creates a nice fragment, then leaves too much empty space.

  4. The MIDI harmony is still under-used in audible continuity. This is the main missing glue.

  5. The report still leaned too much toward "need piano audio melody". That is not the main blocker.

4.3 Main design failure now

The current generator still behaves too much like:

  • one good loop
  • then space
  • then another good loop

Instead of:

  • one coherent harmonic spine
  • with audio layers entering and leaving around it

That is the central issue of v0.1.30.


5. Production Target From Ableton Demo

Copy the production discipline, not the genre.

What the demo showed:

  • long phrases
  • role clarity
  • MIDI carrying a lot of identity
  • atmosphere and support tracks keeping continuity
  • section evolution by arrangement, not by constant reset

Translate that into our generator:

  • HARMONY_PIANO_MIDI must behave like a structural role
  • not like a decorative extra
  • the song should stay alive between loops because harmonic content remains present

6. Required Work In v0.1.30

P0. Restart Live before validating

Codex changed:

  • abletonmcp_init.py
  • AbletonMCP_AI/abletonmcp_runtime.py

These runtime changes require reloading Live.

Do not validate v0.1.30 against a Live session that still has the old runtime loaded.

P0. Make HARMONY_PIANO_MIDI Arrangement-backed and audible

This is the top priority.

Required outcome:

  • HARMONY_PIANO_MIDI must have arrangement clips
  • it must not be only a Session clip
  • it must cover the song in musically useful form

Required evidence:

  • MCP get_track_info() for HARMONY_PIANO_MIDI
  • arrangement_clip_count > 0
  • report actual clip spans or arrangement note coverage

Not acceptable:

  • session_clip_count = 1 and arrangement_clip_count = 0
  • calling that "materialized"

P0. Use the harmonic MIDI to reduce empty spaces

The user explicitly said:

  • there are still holes
  • it feels like 4 seconds of something good and then 3 seconds empty

Required logic:

  • HARMONY_PIANO_MIDI should fill continuity gaps
  • it must survive across intro/build/drop/break in transformed form
  • it should act as glue when audio loops thin out

Acceptable transformations:

  • lower density
  • higher density
  • voicing changes
  • register changes
  • shorter response version in breaks

Not acceptable:

  • disappearing for long stretches without replacement

P0. Add continuity metrics for harmonic coverage

The current metrics are not enough. Add at least one of these, preferably both:

  • harmonic_coverage_ratio
  • max_harmonic_gap_beats

Definition:

  • evaluate the union of active harmonic support across:
    • HARMONY_PIANO_MIDI
    • AUDIO KEYS SUPPORT
    • AUDIO SYNTH LOOP
    • AUDIO SYNTH PEAK
    • any other harmonic layer

Goal:

  • detect whether the song has long empty harmonic holes

Suggested threshold:

  • max_harmonic_gap_beats <= 8

If there is a section with a longer gap, Kimi must justify it musically.

P1. Keep the aggressive snare selective, not banned

Target sample:

  • SS_RNBL_Me_Gustas_One_Shot_Snare.wav

Rules:

  • do not blacklist it
  • do not filename-ban it
  • do not special-case it with a hard if

Required:

  • prove that contextual scoring now makes it lose in softer contexts
  • if it still wins, show the ranking and explain why

This time the evidence must be from the actual ranking flow, not just from a helper.

P1. Do not solve continuity by adding random sounds

Do not react to monotony by making the music bus noisy.

The right fix is:

  • stronger harmonic spine
  • more phrase variation
  • fewer dead gaps

Not:

  • more unrelated layers
  • more random packs

P1. Keep auto vocals disabled

Still mandatory:

  • no vocal layers auto-generated
  • no vocal fallback
  • no vocal shots

The user will record vocals manually.


7. Files Kimi Must Review

Required:

  1. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py
  2. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py
  3. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py
  4. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py
  5. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\abletonmcp_runtime.py
  6. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.29_VALIDATION_REPORT.md

Optional but recommended:

  1. C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.29_NEXT_KIMI.md

8. Exit Criteria

Do not close the sprint without a new persisted session.

Required:

  • generation_mode = library-first-hybrid
  • mandatory_midi_hook.track_name = HARMONY_PIANO_MIDI
  • mandatory_midi_hook.materialized = true
  • mandatory_midi_hook.materialization_mode = arrangement or embedded
  • mandatory_midi_hook.arrangement_backed = true
  • coherence_score > 4.9
  • family_adherence_rate > 0.5
  • music_source_reuse_ratio <= 1.0 with honest explanation
  • vocal_layers_auto = 0

Continuity criteria:

  • HARMONY_PIANO_MIDI is audible through the song
  • fewer empty harmonic gaps than 7b65596ef69a
  • no obvious "good loop then empty hole" behavior

Snare criteria:

  • aggressive snare no longer wins by default
  • if it wins, evidence must show why the context justified it

9. Validation Report Required

Kimi must produce:

C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.30_VALIDATION_REPORT.md

It must include:

  1. real session_id
  2. comparison against 7b65596ef69a
  3. MCP evidence for HARMONY_PIANO_MIDI
  4. get_track_info() summary for HARMONY_PIANO_MIDI
  5. arrangement_clip_count
  6. session_clip_count
  7. mandatory_midi_hook.materialization_mode
  8. mandatory_midi_hook.arrangement_backed
  9. piano_presence
  10. harmonic_coverage_ratio and/or max_harmonic_gap_beats
  11. repetition_metrics
  12. snare/clap ranking evidence
  13. explicit confirmation that automatic vocals remain disabled

The report is invalid if it says:

  • hook solved while it is still Session-only
  • "missing piano" while HARMONY_PIANO_MIDI exists
  • "snare selectivity implemented" without ranking evidence

10. Final Instruction To Kimi

Think like a senior producer-engineer.

The next improvement is not:

  • more audio clutter
  • more random variation
  • more empty breaks

It is:

  • Arrangement-backed harmonic MIDI
  • less silence as fake variation
  • more continuity
  • more disciplined snare context

If the next result still sounds like one good loop followed by empty space, the sprint is not closed.