# SPRINT v0.1.39 - NEXT GLM ## Open-Project Editing, Anti-Symmetry, Continuity, Coherence **Owner:** GLM via OpenCode **Reviewer:** Codex **Fecha:** 2026-04-03 **Mode:** Edit existing project, not generate a new song **Project target:** `C:\Users\ren\Desktop\song Project\song.als` --- ## 0. Executive Summary El MCP mejoró de verdad para inspección y edición básica de proyectos abiertos, pero el problema musical actual ya no es “falta de wrappers”. El problema real del proyecto abierto es este: 1. La canción sigue siendo demasiado simétrica. 2. Los roles principales repiten exactamente los mismos clips/sample blocks en patrones demasiado previsibles. 3. Hay demasiados huecos y silencios entre bloques. 4. La armonía MIDI sigue sin sostener el tema en Arrangement. 5. La coherencia existe a nivel de pack/familia, pero la libertad sonora es demasiado baja y termina sonando mecánica. Este sprint no es para “agregar más tools porque sí”. Es para conectar las métricas actuales con herramientas de reparación reales sobre el `.als` abierto. --- ## 1. Runtime Truth You Must Start From No tomar [SPRINT_v0.1.38_VALIDATION_REPORT.md](C:/ProgramData/Ableton/Live%2012%20Suite/Resources/MIDI%20Remote%20Scripts/docs/SPRINT_v0.1.38_VALIDATION_REPORT.md) como verdad suficiente. La verdad runtime al momento de este handoff es: - Proyecto abierto a `95 BPM` - `16` tracks - `4` return tracks - `6` scenes - La pista armónica está hoy como `HARMONY_AMIN_PLUCK` - Esa pista tiene `1` session clip y `0` arrangement clips El problema no es abstracto. Está visible también en el Arrangement: - `AUDIO KICK` repite el mismo one-shot en bloques a `32, 64, 96, 128, 160, 192, 224, 256` - `AUDIO CLAP` hace prácticamente lo mismo - `AUDIO HAT` hace prácticamente lo mismo - `AUDIO PERC MAIN` repite el mismo loop de `16` beats a lo largo del tema - `AUDIO PERC ALT` repite el mismo loop en menos bloques - `AUDIO TOP LOOP` repite el mismo top loop en secciones espejadas - `AUDIO SYNTH LOOP` usa el mismo clip largo en pocos bloques - `AUDIO SYNTH PEAK` entra en islas pequeñas, dejando demasiado vacío entre apariciones Eso explica exactamente el feedback del usuario: - “simétrico” - “todo lo mismo” - “muchos silencios” - “falta libertad” --- ## 2. Code Review Summary ### 2.1 What GLM got right - Las tools de inspección de proyecto abierto ya son útiles: - `get_session_info` - `get_tracks` - `get_clips` - `get_devices` - `get_track_info` - Las tools básicas de edición Session ya funcionan razonablemente: - `create_clip` - `add_notes_to_clip` - `set_clip_name` - `set_clip_loop` - `delete_clip` - `fire_clip` - `stop_clip` - La auditoría de coherencia del proyecto abierto ya detecta huecos, sobreuso y pistas vacías. ### 2.2 What was still overclaimed or incomplete - `create_arrangement_clip` y `duplicate_clip_to_arrangement` seguían siendo frágiles porque dependen del fallback `Session -> Arrangement`. - El reporte v0.1.38 validó edición de Session, no cierre fuerte de edición Arrangement. - `HARMONY_PIANO_MIDI` o su equivalente armónico seguía sin backbone real en Arrangement. ### 2.3 Bugs fixed by Codex in this review No reabrir estos temas salvo que fallen con evidencia nueva: 1. `create_arrangement_clip` / `duplicate_clip_to_arrangement` - Se ampliaron timeouts del lado server y runtime para que el fallback no muera por grabación en tiempo real. 2. `get_device_parameters` - Se corrigió el acceso a `value_items` en parámetros no cuantizados. 3. `validate_key_conflicts` - Se corrigió el uso roto de helper legacy y ahora vuelve a leer el estado real vía conexión live. 4. `validate_set_detailed` y `diagnose_bus_routing` - Dejaron de depender de wrappers legacy inconsistentes. 5. `humanize_set` - Ya no se queda en `0` clips por leer mal la forma de `get_all_tracks`; ahora re-inspecciona session clips. 6. `COMMAND_TIMEOUTS` - Ya cubren edición de Arrangement MIDI, no solo audio pattern generation. --- ## 3. Product Direction For This Sprint ### 3.1 Primary goal Convertir el MCP de “inspección + edición mínima” a “edición guiada por coherencia del proyecto abierto”. ### 3.2 Musical goal Reducir simetría y silencios sin romper coherencia. Eso significa: - más libertad de elección de sonidos - menos repetición exacta del mismo clip - más continuidad entre secciones - más columna armónica MIDI en Arrangement - pero sin convertir el tema en un collage caótico ### 3.3 Important clarification about “piano” Cuando el usuario habla de “piano roll”, interpretarlo como: - **columna armónica MIDI** - **backbone de notas en Arrangement** No interpretarlo como: - obligar timbre de piano acústico - volver el track piano-forward La pista `HARMONY_PIANO_MIDI` o `HARMONY_*` debe funcionar como backbone MIDI armónico mezclado con la librería del usuario. No hace falta perseguir un timbre de piano si musicalmente no corresponde. --- ## 4. Multi-Agent Requirement Este sprint debe ejecutarse con dos focos de revisión paralelos: 1. `Agent Runtime` - tools MCP - edición de Arrangement - persistencia/re-inspection - timeouts - track/device/clip truth 2. `Agent Musical` - repetición - simetría - huecos - backbone armónico - libertad sonora con coherencia No cerrar el sprint sin integrar findings de ambos. --- ## 5. Scope ### P0.1 Arrangement-first project editing truth Implementar o cerrar una API de edición/inspección realmente útil sobre proyecto abierto. Entregables mínimos: - `get_project_edit_state(...)` - Debe devolver una vista consolidada del proyecto abierto: - tracks - clips - devices - longest gaps - repeated clip overuse - harmonic backbone status - `get_arrangement_clip_info(...)` - Debe permitir inspeccionar clips de Arrangement por `track_index + start_time` - No puede depender solo de `clip_slots` - `materialize_session_clip_to_arrangement(...)` - Tool explícita para pasar un clip Session a Arrangement sin ambigüedad de propósito - Debe re-inspeccionar después ### P0.2 Harmonic backbone repair Crear una tool de reparación de columna armónica para proyecto abierto: - `repair_harmonic_gaps(...)` Debe: - detectar huecos armónicos largos - usar la pista armónica MIDI existente - materializar clips/notas en Arrangement - rellenar huecos sin invadir todo el tema - respetar la identidad del proyecto abierto No vale “crear un clip de 4 bars en Session y listo”. ### P0.3 Anti-symmetry / anti-loop repair Crear una tool real de reducción de simetría: - `reduce_repeated_clip_overuse(...)` o - `vary_repeated_audio_sections(...)` Debe actuar sobre el proyecto abierto ya cargado. Debe: - detectar clips/sample blocks excesivamente repetidos - variar por secciones - no romper coherencia de pack/familia - no introducir samples arbitrarios por puro cambio Regla musical: - no repetir exactamente el mismo clip de audio en la misma función estructural durante todo el tema - permitir anchors coherentes - prohibir mirror placements triviales tipo `32/64/96/128/160/192/...` si no hay transformación real ### P0.4 Continuity repair Crear una tool: - `extend_track_continuity(...)` Debe: - reducir silencios innecesarios - extender continuidad de drum/musical support - usar el material ya presente o variantes coherentes - no llenar huecos con ruido o FX aleatorios ### P1.1 Device inspection/editing completeness Mejorar herramientas públicas de edición: - `get_track_info(track_type=...)` debe seguir siendo consistente - `get_device_parameters(...)` debe funcionar sobre Wavetable y otros devices comunes - `set_device_parameter(parameter_name=...)` debe quedar validado con nombres reales del proyecto abierto ### P1.2 Project coherence audit -> repair linkage `audit_project_coherence()` y/o `audit_current_project()` ya no deben ser solo diagnóstico. Agregar salida accionable: - suggested repairs - target tracks - target gaps - repeated source hotspots - harmonic support gaps --- ## 6. Musical Rules ### 6.1 Freedom without chaos Queremos más libertad sonora, pero con coherencia. Eso significa: - permitir más de un sample/loop por rol a lo largo de la canción - mantener compatibilidad por pack/familia/bus - variar por secciones - no clonar exactamente el mismo bloque en cada sección No significa: - meter sonidos nuevos por meter - romper el carácter del track - cambiar de pack cada 8 bars ### 6.2 Anti-symmetry rules El proyecto actual cae demasiado en: - mismos inicios de clip - mismas duraciones - misma ausencia/presencia entre bloques equivalentes Tu trabajo es romper esa simetría de manera musical. Ejemplos válidos: - variar `AUDIO TOP LOOP` entre secciones A y B - hacer que `AUDIO SYNTH LOOP` sostenga más y no aparezca como isla aislada - introducir continuidad armónica MIDI donde hoy hay hueco - crear variación por transformación, no por borrado Ejemplos inválidos: - mutear media canción para “crear contraste” - duplicar exactamente el mismo loop en nuevas posiciones - reemplazar todo por samples random ### 6.3 Silence policy Los silencios deben ser intencionales, no consecuencia de un planner pobre. No aceptar: - huecos largos sin función estructural clara - tramos donde se cae drums + armonía a la vez sin justificación Sí aceptar: - breaks intencionales - drops con respiración medida - intros/outros relativamente más aireados ### 6.4 Harmonic MIDI policy `HARMONY_PIANO_MIDI` o su equivalente debe: - existir como backbone MIDI audible - estar en Arrangement - cubrir una parte significativa del tema - ayudar a cerrar huecos - convivir con la librería del usuario No perseguir “piano” como timbre obligatorio. Perseguir backbone MIDI armónico. --- ## 7. Acceptance Criteria No marcar `COMPLETED` si falta cualquiera de estos puntos. ### Runtime / MCP 1. `get_project_edit_state(...)` existe y funciona sobre `song.als` 2. `get_arrangement_clip_info(...)` o equivalente existe y prueba clips reales de Arrangement 3. `materialize_session_clip_to_arrangement(...)` o equivalente queda validada con re-inspection 4. `get_device_parameters(...)` funciona sobre un device real del proyecto abierto 5. `set_device_parameter(parameter_name=...)` se valida con re-inspection ### Musical / coherence 1. La pista armónica MIDI deja de estar vacía en Arrangement 2. `longest_harmonic_gap` baja de forma real 3. `longest_drum_gap` baja de forma real 4. Baja `repeated_clip_overuse` 5. Se rompe la simetría excesiva de placements 6. Disminuyen los silencios inútiles ### Truth 1. Validación solo sobre proyecto abierto real 2. Re-inspection después de cada edición relevante 3. No basarse solo en manifest ni en reporte textual --- ## 8. Required Validation Steps ### Step 1 Reiniciar OpenCode y Ableton antes de validar, porque hubo cambios en: - `server.py` - `abletonmcp_init.py` - `abletonmcp_runtime.py` ### Step 2 Obtener baseline real: - `get_session_info()` - `get_tracks()` - `get_track_info(track_index=)` - `audit_current_project()` - `audit_project_coherence()` ### Step 3 Aplicar edición real al proyecto abierto. No generar una canción nueva. ### Step 4 Re-inspeccionar: - clips - arrangement clips - devices - gaps - repeated clips ### Step 5 Comparar before/after con números reales. --- ## 9. Required Report Guardar en: - `docs/SPRINT_v0.1.39_VALIDATION_REPORT.md` Estructura obligatoria: 1. Runtime truth before 2. Tools added/changed 3. Live edit actions performed 4. Re-inspection after edits 5. Before/after metrics 6. Remaining blockers 7. Reviewer conclusion No usar `COMPLETED` si la pista armónica sigue sin Arrangement o si la canción sigue espejada y vacía. --- ## 10. Explicit Do-Nots - No generar un tema nuevo - No declarar cierre usando solo Session clips - No usar “más libertad” como excusa para romper coherencia - No rellenar huecos con FX basura - No convertir “piano roll” en “piano timbre obligatorio” - No cerrar el sprint si el proyecto sigue viéndose como bloques simétricos con silencios entre medio --- ## 11. Reviewer Note El sistema va muy bien en una cosa importante: - ya puede inspeccionar el proyecto real - ya empieza a editarlo - ya puede medir dónde está fallando El siguiente salto de calidad no viene de más heurísticas de generación. Viene de **editar bien el proyecto abierto** y usar la coherencia para decidir **qué reparar, qué extender, qué variar y qué dejar quieto**.