# Sprint v0.1.8 Next

Ultima revision: 2026-03-30

## Objetivo

Pasar de "micro stems que ayudan a rerankear audio" a "remake guiado por referencia con identidad armonica real".

El foco de este sprint es coherencia melodica.

## Contexto real

Lo ya demostrado:

- `reference_listener.py` ya construye `micro_stems`
- `micro_stem_summary` ya entra al `build_arrangement_plan(...)`
- ya no hay contaminacion vocal en `synth_loop`
- `ejemplo.mp3` ya tiene evidencia guardada en `temp\ejemplo_micro_stems_report.json`
- el pack dominante validado ya sale como `ss_rnbl`, no como carpeta generica

Lo que sigue faltando:

- el sistema sigue siendo audio-first
- `piano/keys` siguen fuera del flujo real porque viven mayormente en `MIDI` y presets
- el remake todavia no materializa frases cortas, solo sesga la seleccion global

## Trabajo a hacer

### 1. Ingesta de activos no-audio

Objetivo:

- indexar `MIDI` y presets relacionados con familias detectadas por micro stems

Fuentes obvias dentro de la libreria:

- `sounds presets`
- `MIDI PACK`
- carpetas `MIDI` dentro de sample packs

Criterio:

- crear metadata minima por asset
- no intentar cargar `.fst` en Ableton todavia si el runtime no lo soporta
- primero dejar el catalogo y la relacion familia -> asset armonico

### 2. Resolver instrumento armonico

Objetivo:

- si `micro_stem_summary` dice `pluck`, `pad`, `harp`, `piano`, `keys` o `guitar`
- el plan debe resolver un `instrument_hint` armonico

Resultado esperado:

- nuevo campo en plan, por ejemplo:
  - `harmonic_instrument_hint`
  - `harmonic_asset_candidates`

### 3. Phrase plan real

Objetivo:

- dejar de pensar solo en loops largos
- representar frases cortas del hook armonico

Minimo aceptable:

- lista ordenada de frases con:
  - `start`
  - `end`
  - `kind`
  - `role`
  - `family`
  - `instrument_hint`

### 4. Materializacion hibrida

Objetivo:

- permitir que una parte del remake use:
  - audio loops
  - MIDI clips
  - hints de preset/instrumento

No hace falta cerrar carga automatica de plugins en este sprint.

Si el runtime no puede cargar preset:

- al menos debe crear el track MIDI correcto
- nombrarlo con el instrumento sugerido
- escribir el contenido armonico correcto

### 5. Validacion contra referencia

Objetivo:

- generar una nueva cancion guiada por `ejemplo.mp3`
- comparar el resultado con esta checklist:

Checklist:

- usa menos familias que antes
- aparece un hook armonico claro
- no suena a collage de samples
- mantiene dembow y low-end consistentes
- usa `pluck/keys/piano` si el analisis lo pide

## 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\sample_manager.py`
- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.py`

## Archivos a leer antes

- `C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs\MICRO_STEMS_APPROACH.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`

## Criterio de salida

El sprint se considera cerrado solo si:

1. existe evidencia runtime de una generacion nueva
2. esa generacion usa un hook armonico intencional
3. hay menos sensacion de loop infinito
4. el resultado se parece mas a la referencia que a un collage random
