# 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.