Sync: Complete project state with all MEGA SPRINT V1-V3 features and Codex stubs

This commit is contained in:
renato97
2026-04-08 17:58:47 -03:00
parent c9d3528900
commit 6d080d43b3
372 changed files with 189715 additions and 8590 deletions

View File

@@ -0,0 +1,442 @@
# 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:
7. `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.