# Sprint v0.1.6 - Coherencia Musical Real

Fecha: 2026-03-30

Este sprint reemplaza a `docs/SPRINT_v0.1.5_NEXT.md` como sprint activo.

## Problema principal

Las ultimas generaciones ya crean pistas y material en Ableton, pero el resultado suena desordenado:

- demasiadas capas
- demasiados sonidos sin relacion clara entre si
- poco hook
- poca continuidad melodica entre secciones
- demasiada sensacion de "samples buenos pero tirados al azar"

El objetivo ya no es solo que genere.

El objetivo ahora es que genere algo musicalmente coherente.

## Estado de partida real

- `reference_listener.py` elige muchos roles globales antes del loop de secciones
- esa seleccion global no esta obligada a respetar una narrativa musical unica
- el sistema puede abrir demasiados tracks y demasiadas capas opcionales
- `song_generator.py` tiene herramientas para melodia, acordes, variantes y bancos de patrones
- pero falta una capa que obligue a que bass, chords, lead y loops respondan al mismo tema

## Objetivo del sprint

Pasar de "genera material" a "genera un track con identidad sonora y direccion musical clara".

## Tarea 1 - Definir un contrato de coherencia

Problema:

- hoy no existe una definicion operativa de "coherente"
- sin eso, Kimi puede cambiar mil cosas y seguir generando resultados flojos

Haz esto:

1. definir metricas simples de coherencia para una generacion
2. guardarlas en un reporte legible
3. usarlas como criterio de aceptacion del sprint

Metricas minimas:

- track_budget_total
- core_vs_optional_layers
- same_pack_ratio
- tonal_consistency
- motif_reuse
- section_theme_consistency
- redundant_layer_count

Archivos probables:

- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py`
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/song_generator.py`
- `docs/KNOWN_ISSUES.md`

Criterio de salida:

- existe una definicion tecnica de coherencia
- el proximo agente puede decir si una generacion mejora o empeora

## Tarea 2 - Poner presupuesto de tracks y capas

Problema:

- hoy el sistema puede abrir demasiadas capas y eso destruye claridad
- en reggaeton no hace falta materializar decenas de tracks para sonar profesional

Haz esto:

1. definir un presupuesto de tracks para modo reggaeton
2. separar capas `core` de capas `optional`
3. impedir que las capas opcionales exploten por defecto

Presupuesto sugerido inicial:

- drums core: kick, clap/snare, hat, perc main
- bass core: 1
- musical core: chords/pad + lead/pluck
- vocal/fx core: maximo 1-2 utiles
- optional layers: solo si agregan contraste real

Archivos probables:

- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py`
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/reference_listener.py`

Criterio de salida:

- una generacion normal no dispara una lluvia de tracks innecesarios
- el arreglo queda mas legible

## Tarea 3 - Crear un tema compartido para bass, chords y lead

Problema:

- hoy bass, chords y lead pueden salir correctos por separado
- pero no necesariamente parecen partes de la misma cancion

Haz esto:

1. elegir o generar un motivo/hook base por track
2. derivar bajo, acordes y lead desde ese mismo centro musical
3. hacer que las secciones muten ese mismo tema en vez de generar ideas nuevas sin relacion

Ejemplos de mutacion valida:

- intro: motif parcial
- build: motif tensionado
- drop: hook completo
- break: respuesta o version reducida
- outro: motif degradado

Archivos probables:

- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/song_generator.py`

Criterio de salida:

- hay un tema reconocible entre secciones
- no parecen loops independientes pegados

## Tarea 4 - Hacer que el palette global mande de verdad

Problema:

- hay `pack_brain`, same-pack y jueces
- pero todavia falta obligar a que el resultado final viva dentro de una misma familia sonora

Haz esto:

1. endurecer la prioridad del pack principal
2. evitar que `music`, `bass`, `vocal` y `fx` salten de familias sin necesidad
3. si una capa no tiene match coherente, omitirla antes que meter relleno random

Archivos probables:

- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py`
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/reference_listener.py`
- `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/sample_selector.py`

Criterio de salida:

- menos variedad basura
- mas identidad de pack

## Tarea 5 - Validar con una generacion real y documentar resultado audible

Problema:

- la coherencia no se valida solo con compilacion o logs

Haz esto:

1. generar un track real de reggaeton
2. escuchar y documentar:
   - que suena coherente
   - que sigue sonando aleatorio
   - que sobra
   - que falta
3. actualizar el handoff activo con juicio auditivo simple, no solo tecnico

Comando sugerido:

```powershell
python temp\smoke_test_async.py --use-track --genre reggaeton --bpm 95
```

Criterio de salida:

- existe al menos una validacion auditiva simple del resultado
- el siguiente sprint no vuelve a trabajar ciego

## Reglas duras

- no metas mas capas solo porque "puedes"
- no mezcles loops y hooks sin una relacion tonal o tematica clara
- si una capa no mejora el tema, quitala
- si una capa no viene del pack correcto, penalizala fuerte o descartala
- no declares "coherente" sin escuchar el resultado o sin evidencia musical clara

## Archivos que Kimi debe mirar primero en este sprint

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

## Nota importante

La sugerencia vieja de "pasar `current_kind/current_energy` en `reference_listener.py:3862`" no alcanza y no debe tomarse como fix principal.

Esa seleccion ocurre antes del loop de secciones.

El problema real es de arquitectura de seleccion y de narrativa musical, no de un parametro faltante aislado.
