# Sprint v0.1.9 Next

Ultima revision: 2026-03-30

## Objetivo

Pasar de "hints armonicos resueltos" a "generacion guiada por referencia con hook real".

La prioridad no es agregar mas capas.

La prioridad es que la cancion tenga:

- mismo centro tonal
- una familia armonica dominante clara
- menos tracks
- menos loops tirados al azar
- un hook reconocible que sobreviva entre secciones

## Punto de partida real

Ya esta demostrado:

- `ejemplo.mp3` fue analizado
- `reference_listener.py` devuelve `micro_stem_summary`
- `reference_listener.py` devuelve `harmonic_instrument_hints`
- `reference_listener.py` devuelve `synth_loop_hint`
- `reference_listener.py` devuelve `midi_preset_index_stats`
- el sistema puede resolver candidatos reales de `Bass`, `Pluck` y `Pad`

Todavia no esta demostrado:

- que la generacion use esos hints para crear un hook MIDI/preset dominante
- que `PhrasePlan` quede realmente reflejado en el audio final
- que el budget baje a un numero razonable de tracks

## Trabajo a hacer

### 1. Reference lock real

Objetivo:

- si se genera desde `ejemplo.mp3`, la generacion debe heredar:
  - key de referencia
  - BPM de referencia o BPM cercano justificado
  - token/familia armonica dominante

No aceptar:

- `Am` en la referencia y `Dm` en la generacion sin razon explicita

Criterio de salida:

- manifest y generacion muestran key alineada con la referencia

### 2. Hook armonico obligatorio

Objetivo:

- crear al menos un track musical principal que no sea solo audio loop
- ese track debe salir de `harmonic_instrument_hints` o `PhrasePlan`

Minimo aceptable:

- 1 track MIDI armonico dominante
- familia musical explicita: `piano`, `keys`, `pluck`, `pad` o `lead`
- el hook debe repetirse con mutaciones entre secciones

No aceptar:

- solo `AUDIO SYNTH LOOP`
- solo pads de fondo sin hook

### 3. Materializacion hibrida real

Objetivo:

- cerrar el camino entre:
  - `micro_stem_summary`
  - `harmonic_instrument_hints`
  - `PhrasePlan`
  - generacion real en Live

Esto significa:

- si el hint principal es `pluck` o `piano`, la generacion debe intentar materializarlo como contenido musical real
- si no puede cargar preset, igual debe crear track MIDI con nombre correcto y notas intencionales

Criterio de salida:

- evidencia runtime de al menos 1 pista MIDI util creada por este flujo

### 4. Budget duro

Objetivo:

- bajar el proyecto a un budget razonable

Target:

- ideal: 12 tracks
- aceptable temporal: 16 tracks maximos

No aceptar:

- 40, 80 o 200 tracks
- duplicados musicales que no agregan contraste real

Chequeos:

- contar tracks reales creados
- contar capas musicales redundantes
- revisar si `optional_slots` esta explotando

### 5. Coherencia musical por seccion

Objetivo:

- el hook no debe desaparecer en cada seccion
- intro/build/drop/break/outro deben sentirse como variaciones del mismo tema

Minimo aceptable:

- misma familia dominante en las secciones musicales
- misma idea melodica con mutaciones controladas
- drops no deben cambiar de "mundo" sonoro sin razon

### 6. Validacion contra referencia

Objetivo:

- generar una cancion nueva guiada por `ejemplo.mp3`
- guardar evidencia tecnica y auditiva minima

Archivos de evidencia esperados:

- `temp/v019_reference_locked_generation.json`
- `temp/v019_runtime_summary.json`
- `docs/SPRINT_v0.1.9_CHANGES.md`

## Archivos a tocar primero

- `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\server.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\midi_preset_indexer.py`

## Archivos a leer antes

- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\CONSOLIDADO_v0.1.8_PARA_CODEX.md`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\REFERENCE_TRACK_EJEMPLO_ANALYSIS.md`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\REFERENCE_TRACK_EJEMPLO_MICRO_STEMS.md`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\MICRO_STEMS_APPROACH.md`

## Criterio de salida

El sprint solo se cierra si hay evidencia de estas 5 cosas:

1. la generacion usa la key de referencia o una variacion justificada
2. existe al menos 1 track MIDI armonico principal
3. el track count final queda en 16 o menos
4. el hook se reconoce en mas de una seccion
5. hay una escucha nueva que suena mas cerca de `ejemplo.mp3` que el intento anterior

## Regla dura para Kimi

No declares "materializacion hibrida completa" solo porque existan clases o helpers.

Solo puedes declararlo si:

- el runtime creo la pista
- el clip MIDI existe
- las notas fueron escritas
- el resultado aparece en la sesion real
