4.8 KiB
Sprint v0.1.12 - Reference Selection Coherence
Fecha: 2026-04-01
Estado: pendiente
Objetivo: cerrar la coherencia total de los sonidos elegidos en la seleccion real de capas, no solo en el blueprint melodico
Contexto
En el cierre anterior quedaron resueltos estos puntos:
song_generator.pyya persiste y restauraprimary_harmonic_family.reference_listener.pyya devuelveprimary_harmonic_familyy usagenrereal en la seleccion con budget.server.pyya propagaprimary_harmonic_family, arregla el bloque hibrido, reserva slot fisico paraHOOK_MIDIy deja de simular un "make room" que no removia tracks reales.test_phrase_plan.pyahora usaassertreal y cubre roundtrip del family lock.- la skill
ableton-mcpya refleja el layout y el workflow actual del repo.
Eso cierra la coherencia del lado de:
reference_listener.py -> server.py -> song_generator.py -> hook obligatorio -> manifest
Pero todavia queda abierto el problema central de este frente:
- la seleccion de capas de audio reales puede seguir derivando por heuristicas parciales
JOINT_SCOREexiste ensample_selector.py, pero no gobierna de forma contractual la seleccion principal por referencia- el manifest no explica con suficiente detalle por que una capa armonica gano frente a otra
- no hay validacion fuerte que compare las familias/roles elegidos contra la familia dominante de referencia
Regla de trabajo
Este sprint no se considera cerrado si solo mejora logs o scoring aislado.
Tiene que endurecer la seleccion real de sonidos y dejar trazabilidad suficiente para explicar cada decision.
Tareas
1. Convertir JOINT_SCORE en fuente de verdad de la seleccion por referencia
Hacer que reference_listener.py use el scoring conjunto de sample_selector.py como ranking principal para capas harmonicas y variantes relevantes.
Minimo esperado:
- integrar el score conjunto en
_select_layers_with_budget(...) - no dejar caminos paralelos donde el ranking final ignore ese score
- registrar el score ganador y los factores principales que lo explican
2. Agregar contrato de coherencia para capas harmonicas reales
La familia dominante de referencia ya existe; ahora debe influir de verdad en la seleccion de audio.
Agregar una capa de validacion/penalizacion que considere:
primary_harmonic_familydominant_pack- compatibilidad tonal basica con
key - rol musical de la capa (
chords,lead,pad,hook, etc.)
No alcanza con "preferir".
Las capas claramente incoherentes tienen que perder ranking o quedar fuera.
3. Exponer razones de seleccion en el manifest
El manifest final debe permitir auditar por que quedaron esos sonidos.
Agregar por capa seleccionada, al menos:
rolefamilysource_pathjoint_scorefamily_scoreo equivalentepalette_scoreo bonus relevante- razon textual corta del ganador
4. Endurecer validacion y tests de seleccion
Agregar tests que fallen si el flujo principal vuelve a perder coherencia.
Casos minimos:
- una referencia dominada por
pluckno debe terminar eligiendo sistematicamentepadoleadincompatibles si existen opcionespluck/keysvalidas - si dos candidatos compiten, el ranking final debe reflejar
JOINT_SCOREy no ignorarlo en el ultimo tramo - el manifest de una generacion con referencia debe incluir
primary_harmonic_familyy razones de seleccion por capa
5. Ejecutar una validacion end-to-end real en Ableton
No alcanza con compile/tests.
Hacer una corrida con referencia real y verificar:
mandatory_midi_hooksigue existiendobudget_realno diverge del runtime- las capas harmonicas elegidas reflejan la familia dominante de referencia
- el manifest deja evidencia suficiente para revisar la coherencia sin releer logs completos
Archivos foco
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\sample_selector.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\server.pyC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\testsC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\docs
Criterio de salida
El sprint cierra solo si:
- el ranking principal por referencia usa
JOINT_SCOREo un wrapper explicito sobre ese score - las capas harmonicas seleccionadas quedan alineadas con
primary_harmonic_family - el manifest explica por que gano cada capa importante
- hay al menos un test que falle si la seleccion principal vuelve a ignorar la coherencia de familia
- hay una validacion real en Ableton o, si no fue posible correrla, queda documentado exactamente que falto verificar