Files
ableton-mcp-ai/AbletonMCP_AI_BAK_20260328_200801/roadmap.md
renato97 6ec8663954 Initial commit: AbletonMCP-AI complete system
- MCP Server with audio fallback, sample management
- Song generator with bus routing
- Reference listener and audio resampler
- Vector-based sample search
- Master chain with limiter and calibration
- Fix: Audio fallback now works without M4L
- Fix: Full song detection in sample loader

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-28 22:53:10 -03:00

12 KiB
Raw Blame History

AbletonMCP-AI — Tech House Professional DJ Roadmap

Repositorio: AbletonMCP_AI | Foco: Tech House (122128 BPM) Última actualización: 2026-03-28


Estado actual del sistema

El sistema tiene una base sólida:

  • song_generator.py (~6k líneas): blueprints de secciones, perfiles de arrangement, bus system, gain calibration, device automation por sección
  • vector_manager.py: semantic search + filtros de duración (evita canciones completas)
  • role_matcher.py: validación de samples por rol con thresholds y penalizaciones
  • sample_selector.py: selección de samples con compatibilidad BPM/key
  • audio_resampler.py: resample layers y análisis
  • server.py (~7k líneas): herramientas MCP expuestas al AI

🔴 BUG FIXES — Prioridad crítica

BF-01: Track "AUDIO ATMOS 2" con canción completa

  • Problema: El filtro de duración (max 45s) no se aplica consistentemente en todos los paths de carga
  • Causa: _build_audio_fallback_sample_paths en server.py tiene glob patterns que ignoran el filtro de vector_manager
  • Fix: Reindexar la librería con reindex_library y verificar que _find_library_file rechaza archivos donde soundfile lanza excepción (duración = -1)
  • Archivo: server.py_find_library_file, _build_audio_fallback_sample_paths

BF-02: Embeddings desactualizados post-cambios

  • Problema: Al agregar nuevos samples a la librería, el índice .sample_embeddings.json no se reconstruye automáticamente
  • Fix: Agregar un hash de fingerprint del directorio (mtime o conteo) al índice y validar en cada arranque
  • Archivo: vector_manager.py_load_or_build_index

BF-03: Colisión de nombres de track "AUDIO X 2"

  • Problema: Cuando se crea un segundo track con el mismo nombre, Ableton le agrega "2" automáticamente y luego el sistema no lo encuentra por nombre
  • Fix: Normalizar búsquedas de tracks usando índice numérico en vez de nombre como identificador primario
  • Archivo: server.py_mute_tracks_for_audio_layers, _normalize_track_name

BF-04: Linting errors restantes

  • Problema: Múltiples errores de ruff reportados en ruff_errors.txt (principalmente F821 undefined names, E501 line length)
  • Fix: Pasar ruff check --fix y revisar los F821 manualmente
  • Archivos: server.py, song_generator.py

BF-05: soundfile excepción silenciosa permite archivos inválidos

  • Problema: Si soundfile falla al leer un archivo, se asigna duration = -1 pero el archivo igual puede ser insertado en escenarios de fallback
  • Fix: En _find_library_file, duration < 0 debe ser rechazado explícitamente también en el branch de fallback de glob
  • Archivo: server.py_find_library_file

🟠 MEJORAS CORE — Tech House específico

MJ-01: Blueprints de sección optimizados para Tech House DJ

  • Qué: Los blueprints actuales (standard, extended, club) son genéricos. Tech House DJ requiere intros/outros de 16-32 bars para beatmatching
  • Cambio:
    'tech-house-dj': [
        ('INTRO DJ', 32, 8, 'intro', 1),      # 32 bars solo kick+bass para mezcla
        ('GROOVE A', 16, 16, 'build', 2),
        ('VOX TEASE', 8, 20, 'build', 3),
        ('DROP A', 32, 30, 'drop', 5),
        ('BREAK', 8, 22, 'break', 1),
        ('BUILD', 8, 24, 'build', 3),
        ('DROP B', 32, 32, 'drop', 5),
        ('OUTRO DJ', 32, 8, 'outro', 1),       # 32 bars solo kick+bass para salida
    ]
    
  • Archivo: song_generator.pySECTION_BLUEPRINTS

MJ-02: Patrones rítmicos tech house propios

  • Qué: Los patrones de kick/hat/perc están en create_drum_pattern (server.py) como presets genéricos. Tech House usa swing, offbeat hats, y kicks con ghost notes
  • Cambio: Agregar presets 'tech-house-swing', 'tech-house-jackin', 'tech-house-minimal' con:
    • Kick en 1 y 3 con variaciones en 2.5 y 3.5
    • Hi-hat con swing 16% y offbeats en 1/8
    • Clap/snare en 2 y 4 con ghost notes
  • Archivo: server.pycreate_drum_pattern

MJ-03: Bass lines tech house

  • Qué: create_bassline genera 4 estilos genéricos. Tech House requiere basslines sincopadas y groovy
  • Cambio: Agregar estilo 'tech-house' con notas en posiciones off-beat, slides, y variaciones de velocidad para groove
  • Archivo: server.pycreate_bassline

MJ-04: Chord progressions tech house

  • Qué: CHORD_PROGRESSIONS en song_generator.py no tiene entradas específicas para tech house
  • Cambio: Agregar progressiones:
    • Am → Fm → Gm (oscura, hipnótica)
    • Dm → Am → Dm (loop de dos acordes para drop)
    • Cm → Gm (minimalista con tensión)
  • Archivo: song_generator.pyCHORD_PROGRESSIONS

MJ-05: Estilo Latin Tech House

  • Qué: El sistema tiene menciones de latin-industrial (Eli Brown) pero no tiene patrones de percusión latina implementados
  • Cambio: Agregar preset 'latin-tech-house' con:
    • Conga / bongo patterns como perc layer
    • Bass con notas sincopadas al estilo afro-percusivo
    • Vocal shots ("ey", "come on") en offbeats
  • Archivo: song_generator.py, server.py

MJ-06: Genre keyword expansion en VectorManager

  • Qué: Las búsquedas semánticas usan strings genéricos. Tech house tiene vocabulario específico
  • Cambio: Agregar diccionario de términos preferidos por género que enriquecen el query:
    GENRE_SEARCH_TERMS = {
        'tech-house': ['groovy', 'driving', 'punchy', 'jackin', 'swinging', 'hypnotic'],
        'house': ['deep', 'soulful', 'warm', 'classic'],
        ...
    }
    
  • Archivo: vector_manager.py o server.py

MJ-07: Reindex automático al detectar cambios en librería

  • Qué: El índice de embeddings solo se reconstruye manualmente. Si el usuario agrega samples, no se detectan
  • Cambio: Al iniciar VectorManager, comparar el conteo de archivos actual vs el del índice. Si difieren, rebuild automático
  • Archivo: vector_manager.py_load_or_build_index

🟡 MEJORAS DJ PRO — Funcionalidades de DJ profesional

DJ-01: Track Stems export / bus routing visible

  • Qué: Un DJ profesional necesita poder exportar stems (kick, bass, music, fx) separados
  • Cambio: Agregar herramienta export_stems_config() que configura los buses para exportación de stems individual, nombrando y coloreando cada bus consistentemente
  • Archivo: server.py (nuevo tool)

DJ-02: Harmonic mixing — Camelot wheel

  • Qué: El sistema elige keys pero no verifica compatibilidad con Camelot wheel para mezcla armónica
  • Cambio: Agregar función get_compatible_keys(current_key) que devuelve keys compatibles en la rueda de Camelot (±1 tono, relativo mayor/menor). Usar en suggest_key_change
  • Archivo: server.pysuggest_key_change

DJ-03: BPM grid automático — Sync markers

  • Qué: Al generar una canción con intro DJ de 32 bars, colocar marcadores de Ableton (locators) en los puntos exactos de cada sección para que el DJ pueda saltar entre puntos
  • Cambio: Usar el comando create_arrangement_locator de Ableton API para marcar cada sección
  • Archivo: server.py, Remote_Script.py (agregar comando de socket)

DJ-04: Loop regions automáticas

  • Qué: Marcar los drops como loop regions en Ableton para que el DJ pueda activar el loop con un botón
  • Cambio: Al generar la canción, colocar punch-in / punch-out en los drops principales
  • Archivo: server.py

DJ-05: Energy curve explícita

  • Qué: El sistema tiene ROLE_ACTIVITY con valores de energía por sección pero no hay una curva visible para el usuario
  • Cambio: Al terminar la generación, imprimir (en el manifest) la curva de energía sección a sección: [INTRO: 25%] → [BUILD: 70%] → [DROP: 100%]...
  • Archivo: server.py → manifest / get_generation_manifest

DJ-06: Referencia de track real — Eli Brown style

  • Qué: REFERENCE_TRACK_PROFILES tiene "Eli Brown - Me Gusta" definido pero no se puede cargar automáticamente una referencia para análisis A/B
  • Cambio: Hacer funcional el sistema de referencia: si el usuario pone un archivo en librerias/reference/, que sea analizable e influya en BPM, key, y energy curve de la generación
  • Archivo: server.py, audio_resampler.py, reference_listener.py

🟢 NICE TO HAVE — Calidad de vida

NTH-01: Preview de canción antes de generar

  • Qué: El sistema genera todo de golpe sin preview. Poder ver primero el "blueprint" (qué tracks, qué samples, qué estructura) antes de ejecutar
  • Cambio: Agregar preview_generation(genre, style, key, bpm) que devuelve el manifest sin crear nada en Ableton
  • Archivo: server.py, song_generator.py

NTH-02: Regeneración selectiva de secciones

  • Qué: Si el drop no quedó bien, hay que regenerar todo. Debería poder regenerarse solo el drop
  • Cambio: Agregar regenerate_section(section_name) que borra los clips de esa sección y los regenera
  • Archivo: server.py

NTH-03: Historial de generaciones

  • Qué: Solo se guarda el último manifest. Debería haber un historial de las últimas 5 generaciones
  • Cambio: Guardar manifests en archivos .json con timestamp en librerias/generations/
  • Archivo: server.py_store_generation_manifest

NTH-04: Color coding consistente por género

  • Qué: Los colores de tracks son estáticos. Tech House podría tener paleta propia (naranja, azul oscuro)
  • Cambio: Agregar GENRE_COLOR_PALETTES y aplicar al generar tracks
  • Archivo: song_generator.pyTRACK_COLORS

NTH-05: Sample diversity mejorada

  • Qué: Si la librería tiene 3 kicks, el sistema puede usar el mismo kick en 2 generaciones seguidas
  • Cambio: Existe reset_diversity_memory pero no hay persistencia entre sesiones. Guardar el historial de samples usados en un JSON local
  • Archivo: sample_selector.py

NTH-06: Validación de routing en tiempo real

  • Qué: validate_set existe pero no se llama automáticamente al generar
  • Cambio: Al terminar generate_track, llamar automáticamente a detect_common_issues y mostrar resumen con numero de errores/warnings
  • Archivo: server.pygenerate_track

NTH-07: howto.md actualizado para Tech House

  • Qué: El howto.md documenta el sistema genérico. Agregar sección específica de "Cómo generar Tech House profesional" con ejemplos de prompts, flujos de trabajo DJ, y settings recomendados
  • Archivo: howto.md

Orden de ejecución recomendado

Prioridad ID Nombre Esfuerzo
1 BF-01 Full song en ATMOS track 1h
2 BF-02 Embeddings auto-rebuild 2h
3 BF-03 Colisión de nombres 2h
4 MJ-01 Blueprints DJ 32-bar intro/outro 1h
5 MJ-02 Drum patterns tech house 2h
6 DJ-02 Camelot wheel 2h
7 MJ-03 Bassline tech house 1h
8 MJ-05 Latin tech house preset 3h
9 DJ-03 BPM locators automáticos 4h
10 DJ-06 Referencia de track real 4h
11 NTH-01 Preview pre-generación 3h
12 NTH-06 Auto-validación post-generación 1h
13 BF-04 Linting cleanup 2h

Notas arquitectónicas para el salto a Tech House

  1. BPM default: cambiar default_bpm de tech-house de 125 a 126 (sweet spot del género actual)
  2. Key pool: priorizar Am, Fm, Dm → más oscuras y groovy que las opciones actuales
  3. Swing: el swing del 8% actual en hats es insuficiente. Tech House moderno usa 12-16%
  4. Sidechain pump: el threshold actual de -22dB en bass bus es correcto, pero el release de 0.12s es lento. Bajar a 0.08-0.10s para más pump
  5. Atmos tracks: el vol de 0.50 en ROLE_MIX['atmos'] es correcto, pero usar filtros HPF altos (>1kHz) para que no compitan con el sub