Sync: Complete project state with all MEGA SPRINT V1-V3 features and Codex stubs

This commit is contained in:
renato97
2026-04-08 17:58:47 -03:00
parent c9d3528900
commit 6d080d43b3
372 changed files with 189715 additions and 8590 deletions

View File

@@ -0,0 +1,451 @@
# 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=<harmonic_track>)`
- `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**.