Files
ableton-mcp-ai/docs/MEGA_SPRINT_PRO_DJ_ROADMAP.md

7.9 KiB

GLM/KIMI MEGA SPRINT: PRO DJ LEVEL ROADMAP & MIDI FIX

Moombahton / Reggaeton Track Finalization (song.als)

TARGET AI CAPABILITY LEVEL: EXPLICIT / STEP-BY-STEP INSTRUCTIONS TO AI: Do NOT deviate from these steps. Follow them sequentially. Validate each task before moving to the next.


TAREA 0: ELIMINAR EL BLOQUEO (FIX P0)

Contexto Técnico: Kimi introdujo un time.sleep() y un while loop sincrónico en el Remote Script que congela la UI de Ableton, causando que la materialización del MIDI falle y bloqueando todo el proyecto.

PASO 0.1: Modificar _record_session_clip_to_arrangement

  • Archivo: abletonmcp_init.py
  • Líneas aproximadas: 1445 - 1497
  • ACCIÓN EXPLICITA: Busca el bloque while total_wait < max_wait and record_state['target_clip'] is None:.
  • CÓDIGO A ELIMINAR: Borra ese while, el time.sleep(0.05), y todos los loops subsecuentes de esa función.
  • CÓDIGO A INYECTAR: Reemplazar por un retorno inmediato asumiendo éxito en la cola de tareas asíncronas de Live:
        # EN LUGAR DEL WHILE LOOP Y SLEEP:
        # Tratamos de localizarlo exactamente una vez sin sleep
        target_clip = self._locate_arrangement_clip(track, start_time, tolerance=1.5, expected_length=length)
        if target_clip:
            record_state['target_clip'] = target_clip
            self._recent_arrangement_clips[(int(track_index), round(float(start_time), 3))] = target_clip
            return target_clip
            
        # Si no esta listo todavia, DEVOLVEMOS UN PROXY CLIP para no congelar la app
        self.log_message("[ARR_DEBUG] Usando Proxy Clip para evitar Live Freeze")
        class ProxyClip:
            def __init__(self, t_len, t_name):
                self.length, self.name, self.start_time = t_len, t_name, start_time
            def set_notes(self, notes): pass
        proxy = ProxyClip(length, f"Proxy_{start_time}")
        self._recent_arrangement_clips[(int(track_index), round(float(start_time), 3))] = proxy
        return proxy

PASO 0.2: Modificar _create_arrangement_clip

  • Archivo: abletonmcp_init.py
  • Líneas aproximadas: 1578 - 1593
  • ACCIÓN EXPLICITA: Kimi introdujo time.sleep(0.5) # Small wait for materialization después de self._song.duplicate_clip_to_arrangement.
  • CÓDIGO A ELIMINAR: Borra ese time.sleep(0.5). Reemplázalo de la misma manera que en el paso 0.1 para que si _locate_arrangement_clip retorna None, devuelva un ProxyClip de Inmediato.
  • PASO FINAL: Pide al orquestador humano que compile y Reinicie Ableton Live.

TAREA 1: REESTRUCTURACIÓN DE ARRANGEMENT (CLUB MIX COMPACTO)

Contexto: La canción dura 6:56 y es monótona (24 mirrored sections). Hay que llevarla a 3:30 (Aprox 336 beats a 95 BPM).

Timeline Objetivo:

  1. Intro (Beats 0-32)
  2. Build A (Beats 32-64)
  3. Drop A (Beats 64-128)
  4. Break (Beats 128-160)
  5. Build B (Beats 160-192)
  6. Drop B (Beats 192-256)
  7. Outro (Beats 256-288)

PASO 1.1: Eliminar Gaps y Basura

  • ACCIÓN: Llama a la herramienta MCP delete_arrangement_clip masivamente para todos los clips que pasen el beat 288. Todo lo que exista después del beat 288 es basura irrelevante. Limpia los 16 tracks.

TAREA 2: GENERACIÓN DEL HARMONIC BACKBONE (EL ESPINAZO MIDI)

Contexto: Superado el bug del time.sleep(), el Track 15 HARMONY_PIANO_MIDI debe poblarse.

PASO 2.1: Re-Voicing del Sintetizador

  • Track 15: Elimina la asociación mental de que esto es un "Piano". Selecciona el dispositivo (Wavetable o el que esté asignado). No debe ser un piano, debe ser un Sintetizador Pluck o Atmos Pad adecuado para Reggaeton.
  • ACCIÓN MCP: Usa la herramienta set_device_parameter en el track 15 para modificar Filtros (Filter Freq bajo para el intro, abierto para el Drop).

PASO 2.2: Creación de Clips MIDI

  • Progresión: Am - F - G - C.
  • ACCIÓN MCP:
    1. Ejecuta create_arrangement_clip(track_index=15, start_time=0, length=32).
    2. Ejecuta add_notes_to_arrangement_clip(...) poblando los acordes anteriores a 4 tiempos cada uno, durante el Intro y Builds.
    3. Repite esto para start_time=64 (Drop), 128 (Break), etc.
    4. VERIFICA con get_track_info(15) que arrangement_clip_count >= 5.

TAREA 3: IMPLEMENTAR LÍNEA DE BAJO DEMBOW BOUNCY (TODO-011)

Contexto: En la Fase 3, el desarrollador humano integró el código TODO-011 y TODO-014 para el estilo Bouncy Dembow y perfil Moombahton.

PASO 3.1: Aplicar el Generador Fase 3

  • En el Track 9 (AUDIO BASS), hay que reemplazar los clips continuos planos.
  • ACCIÓN MCP: Las herramientas de generación de AbletonMCP deben ser configuradas para usar:
    • profile_name = "moombahton"
    • bass_motion = "bouncy"
    • O si todo es manual, debes crear los patrones de bajo usando silencios. El patrón dembow del bajo es: Golpe en The "One", silencio, y un golpe de apoyo rápido sincopado (Tumbao).
    • Limpia el Arrangement del track 9 y recrea audio patterns usando create_arrangement_audio_pattern() con la muestra principal intercalando huecos de silencio de manera consistente con el patrón de dembow.

TAREA 4: DRUM CONTINUITY Y TRAILING GAPS

Contexto: Quedan gaps del beat 168 al 288 (nuestro nuevo final) en los tracks percusivos.

PASO 4.1: Track 12 (AUDIO TOP LOOP)

  • ACCIÓN: Tienes que poblar toda la franja 168 hasta 288 (120 beats).
  • Herramienta: Usa un loop (for i in range(168, 288, 8):) para iterar llamadas MCP create_arrangement_audio_pattern(track_index=12, start_time=i, length=8, sample_path="C:\...\libreria\reggaeton\perc loop\! (extra I oneshot) perc 4.wav").

PASO 4.2: Track 11 (AUDIO PERC ALT)

  • ACCIÓN: Tienes que poblar del 176 al 288.
  • Herramienta: Mismo loop pero usa el sample perc 1.wav y perc 2.wav intercalados.

PASO 4.3: Validar Drum Coverage

  • ACCIÓN: Llama a audit_project_coherence(). Tu objetivo duro y explícito es drum_coverage_ratio > 0.65. Repite inserciones si esto no se cumple.

TAREA 5: EAR CANDY, RETURNS Y FX DAIL (MACRO DINÁMICA)

Contexto: La canción sufre de rigidez estructural. Los buses y los retornos están pero no hacen nada rítmico.

PASO 5.1: Mute/Stop Throws (Cortes de silencio)

  • ACCIÓN EXPLICITA: En los beats 63.5 a 64 (justo antes del Drop A) y en el 191.5 a 192 (antes del Drop B), detén drásticamente todo el groove. Mutea/elimina las porciones de Kick, clap y Hat en ese medio compás final. Crea la clásica pausa para que el Drop golpee más duro.

PASO 5.2: Send Automations en los Builds

  • Track a operar: 14 (AUDIO SYNTH PEAK) y los tracks de percusiones (11 y 12).
  • ACCIÓN MCP: Los tracks 14, 11 y 12 tienen Send A (A-MCP SPACE) y Send B (B-MCP ECHO).
  • Debes añadir automatización en los Sends de estos tracks durante los "Builds" (beats 32-64 y 160-192). Empezando en 0% en el beat 32, subiendo a 100% en el beat 63.5, y cortando a 0% exacto en el beat 64.

PASO 5.3: Master Loudness & Glue Check

  • ACCIÓN: Revisa el Output Bus y el track maestro.
  • Ajusta el umbral (Threshold) del dispositivo de saturación / Glue Compresor en el Track RETURN D-MCP GLUE usando set_device_parameter para bajar la compresión y pegar la batería y el bajo en un solo bus unificado.

CÓMO RESPONDER AL ORQUESTADOR

  1. Al terminar LA TAREA 0 (Bugfix), DEBES detenerte y responder: "Bugfix aplicado, esperando confirmación de reinicio de Ableton". No intentes invocar llamadas MCP antes de que Live sea reiniciado por el humano.
  2. Al terminar cada Tarea subsiguiente, escribe un breve reporte de status con los outputs exactos devueltos por la terminal o MCP.
  3. Al terminar la Tarea 4, invoca obligatoriamente audit_project_coherence() y pega su salida.
  4. Si la red MCP devuelve Error como "Arrangement clip was not materialized", ABORTA LA TAREA ACTUAL y solicita instrucciones. No reportes éxito falsamente si algo falla.