Files
ableton-mcp-ai/docs/SPRINT_v0.1.19_NEXT.md

13 KiB

Sprint v0.1.19 - Coherence First, Anti-Loop, Creativity Recovery

Owner: Kimi via OpenCode
Reviewer: Codex
Fecha: 2026-04-01
Baseline real vigente: 2f53f3574d2d
Estado de cierre v0.1.18: no cerrado


1. Verdad operativa despues del review de Codex

El reporte [SPRINT_v0.1.18_VALIDATION_REPORT.md](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\SPRINT_v0.1.18_VALIDATION_REPORT.md) no puede usarse como verdad final del sistema por tres razones:

  1. toma como bloqueo principal una sesion 5b6a3df6e04a que no existe hoy en:
    • C:\Users\ren\.abletonmcp_ai\generation_manifests.json
  2. ignora que el baseline persistido real hoy es:
    • 2f53f3574d2d
  3. da por implementado el schema de coherencia, pero el wiring en server.py seguia leyendo shapes viejos del manifest

Codex ya corrigio dos problemas reales en codigo:

  • [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py) ahora:
    • resuelve generation_mode por intencion de pipeline y no solo por hook creado
    • consolida coherence_metrics desde el shape real de layer_selections.summary / pack_coherence
    • persiste manual_vocals_enabled=true y auto_vocal_layers_enabled=false de forma estable
  • [test_piano_forward.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py) ahora fija:
    • el mode library-first-hybrid aunque el hook aun no se haya materializado
    • el schema estable de coherence_metrics

Validado por Codex en este turno:

  • py_compile pasa
  • test_piano_forward.py pasa
  • test_selection_coherence.py pasa

Lo que sigue abierto y es la prioridad real:

  • coherencia insuficiente
  • exceso de loop/repeticion
  • perdida de creatividad entre secciones
  • tracks demasiado parecidos entre generaciones
  • hibrido MIDI + piano + libreria demasiado flojo o intermitente

2. Problema de producto real

La regresion actual no es solo de coherencia.

El sistema se volvio mas:

  • loopeado
  • conservador
  • repetitivo
  • similar entre generaciones

Y menos:

  • expresivo
  • seccional
  • contrastado
  • musicalmente memorable

En otras palabras:

  • v0.1.18 intento subir coherencia endureciendo seleccion y consolidacion
  • pero parte de esa dureza esta aplanando la cancion
  • el resultado no es una produccion mas solida, sino una produccion mas monotona

No quiero que resuelvas esto soltando todo de nuevo. No quiero volver al caos. Quiero:

  • coherencia alta
  • pero con variacion real por seccion
  • con una identidad armonica clara
  • y sin que todas las canciones suenen al mismo template

3. Reglas no negociables

  1. Trabajar solo en el arbol canonico:

    • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts
  2. No tocar wrappers ni config MCP salvo bug concreto y demostrado.

  3. Mantener modo instrumental:

    • auto_vocal_layers_enabled = false
    • no seleccionar vocals automaticas
    • no materializar vocals automaticas
    • no usar voces grabadas como chops, textura o truco de color
  4. No mejorar coherencia a costa de matar variacion.

    • si una mejora sube pack_coherence pero aplana secciones, no sirve
  5. No aceptar como “creatividad” meter mas tracks.

    • primero variar mejor
    • despues densidad, solo si hace falta
  6. No aceptar como “coherencia” repetir el mismo loop 8 veces con otro nombre.

  7. No cerrar el sprint si cualquiera de estas falla:

    • coherence_score < 6.5
    • generation_mode != library-first-hybrid
    • mandatory_midi_hook.materialized != true
    • auto_vocal_layers_enabled != false
    • layer_selections.summary.total_layers == 0
    • variant_summary.total_layers_with_variants < 3
    • variant_summary.total_variants < 6
    • piano_presence.piano_layer_count < 1
  8. No inventar session ids.

    • todo session_id citado debe existir en:
      • C:\Users\ren\.abletonmcp_ai\generation_manifests.json

4. Hipotesis tecnica principal

Hoy el retroceso hacia tracks mas loopeados probablemente viene de la combinacion de estos factores:

A. Consolidacion demasiado agresiva

En [server.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py) hay varios puntos que reducen fragmentacion:

  • _build_audio_pattern_positions(..., consolidate=True)
  • _consolidate_positions_to_loops(...)
  • _apply_clip_consolidation(...)
  • _consolidate_duplicate_layers(...)

Eso esta bien como idea, pero hoy puede estar:

  • reduciendo demasiado los cambios por seccion
  • convirtiendo patrones con intencion en loops largos demasiado uniformes
  • borrando micro-contrastes entre intro/build/drop/break

B. Hardening del bus music demasiado cerrado

En [reference_listener.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py) el endurecimiento de pack para music puede estar logrando coherencia a costa de diversidad funcional.

El objetivo no es volver a mezclar tres packs musicales. El objetivo es permitir:

  • un pack dominante claro
  • un secundario justificado
  • pero con funciones distintas reales por seccion y por rol

C. Variacion seccional insuficientemente materializada

En [song_generator.py](C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py) existen:

  • PhrasePlan
  • MusicalThemeGenerator
  • bancos de variantes para drums, bass y melodic
  • SectionVariationManager

Pero hoy hay que verificar si eso se traduce en:

  • diferencias reales entre secciones
  • o solo en metadata / nombres de variant mientras el audio final sigue siendo casi igual

5. Objetivo del sprint

Recuperar creatividad sin romper coherencia.

La salida esperada no es “mas random”. La salida esperada es:

  • una identidad armonica clara
  • variacion real entre secciones
  • menos sensacion de loop reciclado
  • menos sensacion de “la misma pista todas las veces”
  • hibrido instrumental consistente:
    • libreria del usuario
    • armonia MIDI
    • presencia de piano/keys cuando suma
    • sin vocals automaticas

6. Trabajo obligatorio

P0. No romper lo que Codex ya dejo estable

No reabras estas piezas salvo bug demostrado:

  • schema estable de coherence_metrics
  • politica manual-only de vocals
  • resolucion de generation_mode

Antes de tocar nada:

  • lee el codigo real en server.py
  • lee los tests nuevos en test_piano_forward.py
  • no reintroduzcas lecturas desde shapes viejos del manifest

P1. Anti-loop real, no cosmetico

Quiero que analices y corrijas la cadena de consolidacion para que siga reduciendo basura, pero no mate variacion musical.

Tareas:

  1. Auditar:

    • _build_audio_pattern_positions
    • _consolidate_positions_to_loops
    • _apply_clip_consolidation
    • _consolidate_duplicate_layers
  2. Separar reglas por tipo de rol:

    • drums anchor pueden tolerar mas loop
    • bass necesita repeticion controlada, no clonacion plana
    • music/harmonic layers no deben quedar reducidas a un unico loop largo por toda la cancion
    • FX deben mantener timing expresivo
  3. Introducir guardrails anti-aplanado:

    • no consolidar si la capa ya tiene section_variants reales
    • no consolidar si al hacerlo intro/build/drop/break quedan con la misma firma musical
    • no consolidar dos layers si la “duplicacion” en realidad representa contraste por seccion o registro
  4. Persistir metricas de repeticion en el manifest:

    • repetition_metrics.identical_section_signatures
    • repetition_metrics.harmonic_loop_reuse_ratio
    • repetition_metrics.music_source_reuse_ratio
    • repetition_metrics.verdict

No quiero opinion subjetiva solamente. Quiero metricas concretas para detectar si la cancion quedo monotona.

P2. Recuperar creatividad por seccion

Tenes que verificar que la variacion no quede solo en el plan sino tambien en el material final.

Tareas:

  1. Revisar en song_generator.py:

    • PhrasePlan
    • MusicalThemeGenerator
    • SectionVariationManager
    • pattern banks de drums, bass y melodic
  2. Verificar que:

    • intro, build, drop, break y outro no compartan exactamente la misma firma armonica
    • las variantes de bass y melodic cambien de verdad
    • las frases MIDI no sean solo el mismo motivo duplicado sin mutacion relevante
  3. Si hace falta, endurecer:

    • variant_summary
    • section_variant_summary
    • deteccion de secciones identicas
  4. Agregar una regla de producto:

    • una pista coherente puede repetir anclas
    • pero no puede tener la misma capa musical dominante resolviendo igual en todas las secciones

P3. Coherencia sin convertir todo al mismo template

Revisar el hardening del bus music en reference_listener.py.

Objetivo:

  • mantener coherencia
  • pero evitar que el sistema siempre caiga en la misma solucion facil

Tenes que evaluar:

  1. si el secundario musical esta demasiado penalizado
  2. si el criterio de complementariedad esta demasiado angosto
  3. si la seleccion same-pack esta premiando repeticion del mismo tipo de layer
  4. si el rerank final termina favoreciendo siempre el mismo pack / misma familia / mismo rol de soporte

Regla:

  • no quiero 3 packs musicales
  • pero tampoco quiero un bus music tan cerrado que mate contraste funcional

P4. Hibrido instrumental verdadero

El usuario remarco un problema concreto:

  • el sistema “se olvida” de generar armonias MIDI + piano + libreria

Quiero que lo tomes como requisito de producto.

La salida correcta es:

  • base desde libreria del usuario
  • una capa armonica MIDI real
  • piano/keys/rhodes cuando sumen coherencia
  • hook o ancla armonica materializada

No acepto:

  • solo loops de audio
  • o solo MIDI generico
  • o piano falso solo en metadata

Tenes que demostrar en codigo y manifest:

  • mandatory_midi_hook.materialized = true
  • piano_presence.piano_layer_count >= 1
  • layer_selections.summary.total_layers > 0
  • generation_mode = library-first-hybrid

P5. Modo instrumental sigue estricto

Esto no se negocia:

  • vocals automaticas siguen prohibidas
  • no uses folders vocales para “levantar creatividad”
  • no uses vocal_shot como FX encubierto

Si necesitas placeholders:

  • solo placeholders vacios
  • nunca retrieval ni materializacion automatica

7. Casos de test obligatorios

Minimo tenes que agregar o endurecer tests para esto:

  1. Un test donde una capa con section_variants reales no sea consolidada como si fuera redundante.
  2. Un test donde dos secciones no terminen con la misma firma musical despues de consolidacion.
  3. Un test donde generation_mode siga saliendo library-first-hybrid aunque el hook este planificado pero todavia no creado.
  4. Un test donde coherence_metrics siga estable y no dependa de shapes ambiguos.
  5. Un test donde manual-only vocals siga firme.
  6. Un test donde PhrasePlan o las variantes seccionales produzcan diferencia real entre al menos dos secciones armonicas.

8. Validacion final obligatoria

Al final del sprint tenes que hacer una validacion real.

Parametros:

  • genre = reggaeton
  • style = perreo duro vieja escuela tipo safaera
  • referencia:
    • libreria\reggaeton\ejemplo.mp3

Tenes que demostrar con session_id real persistido:

  • coherence_score >= 6.5
  • generation_mode = library-first-hybrid
  • mandatory_midi_hook.materialized = true
  • auto_vocal_layers_enabled = false
  • layer_selections.summary.total_layers > 0
  • piano_presence.piano_layer_count >= 1
  • variant_summary.total_layers_with_variants >= 3
  • variant_summary.total_variants >= 6
  • repetition_metrics.verdict != repetitive
  • repetition_metrics.identical_section_signatures <= 2
  • repetition_metrics.harmonic_loop_reuse_ratio < 0.75

Si no llegas a esos thresholds:

  • no cierres el sprint
  • no lo dibujes como PASS
  • explica exactamente donde sigue el cuello de botella

9. Formato obligatorio del validation report

El md final de cierre debe tener estas secciones, en este orden:

  1. Executive Summary
  2. Claims Verified Against Code
  3. Fresh Session Validation
  4. Manifest Truth
  5. Coherence Metrics
  6. Repetition Metrics
  7. Hybrid Truth (MIDI + Piano + Library)
  8. Instrumental-Only Compliance
  9. Open Issues
  10. Verdict

Y debe incluir:

  • session_id real
  • extracto de generation_manifests.json
  • lista exacta de archivos tocados
  • tests corridos
  • resultado de cada threshold

No acepto:

  • “todo bien”
  • “parece mejor”
  • “sin regresiones” sin evidencia
  • reportes apoyados en sessions inexistentes

10. Archivos probables a tocar

  • AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py
  • AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py
  • AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.py
  • tests:
    • AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_piano_forward.py
    • AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_selection_coherence.py

Toca menos archivos si podes. Pero si el problema real esta en song_generator.py, no lo esquives tocando solo docs o logging.


11. Criterio de cierre

Este sprint se cierra solo si Kimi demuestra simultaneamente:

  • coherencia mejor
  • menos loop plano
  • mas variacion real
  • hibrido instrumental verdadero
  • sin vocals automaticas
  • y sin romper MCP ni runtime

Si mejoras solo uno de esos ejes, el sprint no esta cerrado.