13 KiB
Sprint v0.1.15 - Library-First Reggaeton Coherence and Human Feel
Fecha: 2026-04-01 Estado: pendiente Owner esperado: Kimi via OpenCode Objetivo: cerrar el modo library-first para reggaeton/perreo tipo Safaera con audio real de libreria, coherencia musical senior, menos fragmentacion y feel humano audible
Resumen ejecutivo
La prioridad ya no es "que genere algo" ni "que el validator no explote".
La prioridad real es esta:
- usar la libreria del usuario como salida principal
- sonar a track real y no a blueprint
- mejorar coherencia de packs/familias/roles
- mejorar human feel y variacion por seccion
- dejar evidencia verificable en manifest y en Live
Estado real verificado hoy
Esto ya esta verificado en codigo y en runtime. No asumir otra cosa.
Lo que SI quedo mejor
server.pyya tiene un modolibrary-firstparareggaeton/perreo/latincon referencia- la generacion mas reciente dejo un set audio-first real en Arrangement
- la sesion actual tiene:
15tracks4returns14pistasAUDIO ...- audio real de libreria en Arrangement
OpenCodevuelve a verableton-mcp-ai connectedcontoolCount=77- el wrapper canonico sigue siendo:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\mcp_wrapper.py
Sesion baseline actual
- referencia usada:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\libreria\reggaeton\ejemplo.mp3 - estilo:
reggaeton / perreo duro vieja escuela tipo Safaera - BPM real:
99.384 - key real:
Am - session_id relevante mas reciente:
0de71b5cf9c7
Problemas reales que siguen abiertos
-
La coherencia sigue floja.
coherence_score = 5.5- veredicto:
WEAK
-
La consistencia de pack sigue siendo mala.
pack_coherence ratio = 0.17- mezcla demasiados universos a la vez:
ss_rnbl,midilatino,bigcayu, etc.
-
layer_selectionssigue vacio en el manifest.- hoy el modo library-first materializa audio, pero no deja auditoria real de por que gano cada layer
-
El
mandatory_midi_hookquedo en estado ambiguo para library-first.- hoy ya no debe tratarse como bug critico en ese modo
- pero la politica todavia no esta cerrada de forma limpia
-
El human feel todavia no esta cerrado.
- ahora hay audio real de loops y stems
- pero la seleccion y la organizacion siguen demasiado mecanicas
- el resultado aun no tiene suficiente intencion de seccion ni micro-variedad senior
-
La fragmentacion de clips sigue siendo alta.
- ejemplo real:
AUDIO KICKquedo con328arrangement clips - eso no es aceptable como estandar senior salvo justificacion tecnica muy fuerte
- ejemplo real:
-
La politica de mute de duplicados era peligrosa.
- se corrigio en
server.py - pero este fix debe quedar validado con rerun limpio
- se corrigio en
-
abletonmcp_init.pyya tiene fixes detrack_type,parameteryget_track_info(track_type=...)- pero para validar esos cambios en runtime hace falta reiniciar Ableton y correr de nuevo
Regla de trabajo
No cerrar este sprint con un markdown que diga "suena mejor".
No cerrar este sprint con un json que diga "PASS".
No cerrar este sprint si se cumple cualquiera de estas condiciones:
- el set sigue dependiendo de un bosque de MIDI para parecer completo
- la musica usa libreria pero mezcla demasiados packs sin criterio
- la cancion esta llena de clips atomizados sin razon musical
- la coherencia sigue por debajo del target
- el report no puede explicar por que cada layer fue elegida
Regla de arbol canonico
Trabajar solo sobre el arbol canonico:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\...
No asumir que la copia paralela en:
C:\Users\ren\AbletonMCP_AI\...
sea la fuente correcta.
Regla MCP
No romper discovery ni compatibilidad entre OpenCode y Codex CLI.
La verificacion minima es:
opencode mcp list --print-logs
Debe seguir mostrando:
ableton-mcp-ai connectedtoolCount=77
No cambiar el wrapper canonico salvo que sea indispensable:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\mcp_wrapper.py
Alcance del sprint
P0. Formalizar library-first como modo producto, no hack
Hoy library-first ya existe, pero todavia arrastra comportamiento heredado de MIDI-first.
Kimi debe dejar esto claro:
- si el modo es
library-first, la salida principal es audio real de libreria - el blueprint MIDI puede seguir existiendo como insumo interno si hace falta
- pero no puede volver a dominar el set final
Concretamente:
- no volver a gastar el budget principal en una sesion MIDI grande si despues la salida deseada es audio de libreria
- si se necesita blueprint para extraer estructura, usarlo como etapa intermedia y descartable
- el set final debe priorizar materializacion de audio, no "MIDI como producto"
P1. Subir coherencia de packs y familias
Este es el problema mas importante.
Hoy el set usa libreria, pero mezcla demasiados universos.
Objetivo senior:
- 1 pack dominante claro
- 1 pack secundario permitido como maximo
- 0 combinaciones arbitrarias sin justificacion musical
Kimi debe implementar una politica explicita para reggaeton/perreo:
- drums y percusion principal:
- privilegiar el pack dominante de referencia
- evitar que cada rol venga de un pack distinto
- material armonico:
- usar una sola familia principal de hook/support si la referencia lo pide
- no mezclar
pluck,pad,piano,keys,reesesin jerarquia clara
- vocal/fx:
- aceptar un secundario si realmente mejora el color
- no contaminar el tema con samples de otro mundo solo porque scorearon "suficiente"
Accion tecnica esperada:
JOINT_SCOREo su equivalente debe gobernar el flujo principal de seleccion en library-firstreference_listener.pyno puede dejar ese score solo en helpers o auditoriaslayer_selectionsdebe poblarse tambien para las capas de audio materializadas
P2. Reducir fragmentacion y mejorar forma de Arrangement
Esto es no negociable.
AUDIO KICK con 328 clips no es estandar senior.
Kimi debe reducir fuertemente la fragmentacion:
- consolidar material por frase, por compas o por seccion cuando sea posible
- evitar cientos de clips pequenos si un loop o bloque mas largo comunica lo mismo
- reservar los micro-cortes solo para momentos de tension, fills o accents realmente musicales
Target concreto:
- ningun track principal debe superar
96arrangement clips salvo justificacion clara en el report - si un track supera ese numero, el report debe explicar por que era musicalmente necesario
Ideal:
- kick principal y percusion principal deben materializarse como frases mas largas o loops de libreria
- los one-shots deben usarse para refuerzo, no como unica estrategia de construccion del groove
P3. Human feel real, no cosmetico
No alcanza con decir "usa loops de libreria".
Kimi debe mejorar el feel humano en tres niveles:
-
Seleccion
- priorizar loops/percs/vocals con groove real cuando encajen con la referencia
-
Seccion
- intro: mas aire, menos sobrecarga
- build: tension y llamada-respuesta
- drop: densidad, energia y resolucion
- break: alivio y espacio
- outro: degradacion controlada
-
Variacion
- no repetir exactamente el mismo top/perc/vocal cada bloque largo
- usar variantes por seccion con una logica musical clara
Para Safaera-like esto implica:
- dembow/perreo con mas actitud y menos cuantizacion rigida
- vocal shots y fills ubicados con intencion
- builds mas sucios y expresivos
- menos grid muerto
Si hace falta tocar:
_build_audio_pattern_positions(...)_apply_section_variation_to_plan(...)- heuristicas de
reference_listener.py
hacerlo.
P4. Politica de hook correcta para library-first
No dejar este estado ambiguo:
- "hook planned"
- "hook not materialized"
- "warning"
si en ese modo el producto final es audio-first.
Kimi debe elegir y documentar una sola politica valida:
Opcion A:
- en
library-first, no planearmandatory_midi_hookcomo requisito duro - reemplazarlo por un concepto de
primary_harmonic_anchorde audio
Opcion B:
- mantener hook obligatorio, pero materializarlo en audio o en una sola capa musical clara
Lo que no se acepta es:
- warning heredado
- estado confuso
- manifest contradictorio
El manifest debe explicar claramente:
- que modo se uso
- cual fue el ancla armonica real
- por que no hubo hook MIDI si el modo era audio-first
P5. Poblar layer_selections de verdad
Esto es clave para revisar seniormente el sistema.
Hoy layer_selections.layers = [].
Eso es insuficiente.
Kimi debe dejar auditoria real por capa materializada:
- role
- sample elegido
- pack/family
- joint score
- razones de seleccion
- candidatos descartados mas cercanos
- por que ese sample gano para esa seccion o rol
Minimo esperado:
manifest["layer_selections"]["layers"]con entradas realessummary.total_layers > 0average_joint_score > 0- pack coherence medido sobre capas realmente materializadas
P6. Piano y secondary families sin dogma
No forzar piano porque si.
En este sprint el foco no es "meter mas piano" sino:
- usarlo solo si la referencia y la familia secundaria lo justifican
- no empeorar coherencia por empujar
piano/keysen un tema que pide otra cosa
Para este tipo de track:
pluckpuede seguir siendo familia primariapiano/keyspuede entrar como soporte si realmente ayuda- no convertir el tema en otra estetica solo para cumplir un KPI
P7. Validacion senior y auditiva
El sprint no cierra con tests unitarios solamente.
Kimi tiene que validar:
- runtime
- manifest
- set visible en Live
- resultado auditivo
Archivos foco
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\reference_listener.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\song_generator.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docsC:\Users\ren\.abletonmcp_ai\generation_manifests.json
Archivos que NO debe tocar sin necesidad fuerte
- wrapper MCP y configs de CLI
- copia paralela en
C:\Users\ren\AbletonMCP_AI\...
Si toca runtime MCP o abletonmcp_init.py, reiniciar Ableton y volver a validar.
Criterios de salida
El sprint cierra solo si se cumplen todos:
- El set final de referencia
Safaera-likequeda audio-first y audible de verdad. - El set usa la libreria del usuario como fuente principal real.
coherence_score >= 6.8pack_coherence ratio >= 0.55en el manifestlayer_selections.layersqueda poblado con datos reales- no hay warnings de hook contradictorios para el modo usado
- ningun track principal supera
96arrangement clips salvo justificacion explicita - no quedan pistas criticas de audio muteadas por automatismos de dedupe
- OpenCode sigue viendo
toolCount=77 - el report final incluye evidencia auditiva y no solo numerica
Validacion minima obligatoria
1. MCP
opencode mcp list --print-logs
Esperado:
ableton-mcp-ai connectedtoolCount=77
2. Compile
python -m py_compile "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\abletonmcp_init.py"
python -m py_compile "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\server.py"
3. End-to-end
Generar de nuevo con:
- genero:
reggaeton - style:
perreo duro vieja escuela tipo Safaera - referencia:
libreria\reggaeton\ejemplo.mp3
4. Runtime real
Verificar en Live:
- arrangement con audio real
- returns correctos
- ninguna pista critica muteada sin razon
- groove utilizable de verdad
5. Manifest real
Verificar en generation_manifests.json:
library_first_modeo equivalente claramente visiblelayer_selections.layerspobladopack_coherencemejorado- politica de hook coherente con el modo
Entregables esperados de Kimi
- Codigo implementado
- Reporte:
docs/SPRINT_v0.1.15_VALIDATION_REPORT.md
- Artifact opcional si suma valor:
- json de validacion
- diff de manifest
- resumen de tracks/material real usado
Formato obligatorio del reporte final de Kimi
El reporte debe incluir:
- que cambio exactamente
- por que cambio
- que problemas previos quedaron cerrados
- que problemas siguen abiertos
- evidencia de libreria usada con nombres reales de archivos
- coherence antes/despues
- pack consistency antes/despues
- clip fragmentation antes/despues
- si hubo que reiniciar Ableton
- session_id final
No se acepta
- "suena mejor"
- "todos los tests pasan"
- "la generacion completo"
- "hay clips en Arrangement"
si no viene acompanado de:
- evidencia de uso real de libreria
- mejora de coherencia
- control de fragmentacion
- explicacion clara de por que gano cada layer importante
Nota final para Kimi
El objetivo no es ganar mas features.
El objetivo es que el sistema deje de generar "estructuras tecnicamente validas" y empiece a generar una cancion con criterio senior:
- menos ruido de decision
- menos mezcla arbitraria de packs
- mas identidad
- mas groove
- mas intencion de seccion
- mas verdad de libreria