- 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>
AbletonMCP-AI
Sistema hibrido para controlar Ableton Live 12 desde MCP y generar proyectos musicales complejos, orientados a Arrangement View.
Combina:
- un Remote Script dentro de Live
- un servidor MCP en Python (52+ tools)
- seleccion de samples desde biblioteca local con busqueda semantica ML
- reconstruccion guiada por referencias
- fallback de audio y capas MIDI/instrumentos
- buses, returns y snapshots de mezcla por seccion
- mezcla harmonica Camelot wheel para DJ sets
- generacion Tech House DJ-ready con intro/outro extendidas
Esta es la snapshot del proyecto al 2026-03-28.
Estado actual
El sistema ya puede:
- generar proyectos completos en Arrangement View con samples de la biblioteca local
- crear estructura, tracks, scenes, cue points y guide track
- combinar MIDI, instrumentos stock y audio de biblioteca local (827 samples indexados)
- analizar un track de referencia y reconstruir un resultado original inspirado en ese material
- materializar capas
AUDIO ...con samples reales (kick, bass, synth, vocal, FX, etc.) - aplicar snapshots por seccion a tracks y returns durante el commit Session -> Arrangement
- operar con returns desde el runtime y desde el MCP
- buses de mezcla (DRUM BUS, BASS BUS, MUSIC WIDE, VOCAL BUS, FX WASH)
- capas derivadas (RESAMPLE REVERSE FX, RISER, DOWNLIFTER, STUTTER)
- generar estructuras DJ-ready con intro/outro de 32 compases para beatmatching
- mezcla harmonica con Camelot wheel (compatible keys, sugerencias de transicion)
- auto-descubrir tracks de referencia desde
librerias/reference/ - previsualizar blueprints sin crear nada en Ableton
- regenerar secciones individuales
- persistir historia de generaciones y diversidad de samples entre sesiones
- busqueda semantica enriquecida por genero (tech-house, house, techno, trance, etc.)
- auto-reindexar la biblioteca cuando cambian los archivos
- validar automaticamente el set post-generacion
Arquitectura resumida
__init__.pyRemote Script principal. Vive dentro de Ableton, abre el socket TCP y ejecuta comandos sobre la API de Live.MCP_Server/server.pyServidor MCP/FastMCP. Expone tools, normaliza aliases y habla con el Remote Script.MCP_Server/song_generator.pyGenerador musical. Construye blueprint de tracks, sections, performance, locators y returns.MCP_Server/reference_listener.pyEscucha el audio de referencia y arma un plan de reconstruccion usando la biblioteca local.MCP_Server/sample_manager.py,sample_selector.py,audio_analyzer.pyIndexado, busqueda, scoring y analisis de samples.MaxForLive/Devices.amxdpara la ruta hibrida con M4L.
Layout del repo
AbletonMCP_AI/
|-- __init__.py
|-- Remote_Script.py
|-- start_server.bat
|-- .mcp.json
|-- README.md
|-- CLAUDE.md
|-- MaxForLive/
| |-- AbletonMCP_Engine.amxd
| |-- AbletonMCP_Engine.maxpat
| `-- AbletonMCP_SamplerPro.amxd
|-- MCP_Server/
| |-- server.py
| |-- song_generator.py
| |-- reference_listener.py
| |-- audio_analyzer.py
| |-- sample_manager.py
| |-- sample_selector.py
| |-- sample_index.py
| |-- socket_smoke_test.py
| |-- template_analyzer.py
| |-- ABLETUNES_TEMPLATE_NOTES.md
| `-- requirements.txt
`-- docs/
|-- AI_HANDOFF.md
|-- ARCHITECTURE.md
|-- GPU_DIRECTML.md
|-- MCP_TOOLS.md
|-- PROJECT_CONTEXT.md
|-- REMOTE_PROTOCOL.md
`-- SETUP_WINDOWS.md
Documentacion
Leer primero:
-
CLAUDE.md - handoff amplio, cronologia completa, estado real, paths y notas operativas
-
AI_HANDOFF - handoff corto y operativo
-
PROJECT_CONTEXT - direccion de producto y lecciones aprendidas
Quick start
1. Clonar y colocar en la carpeta de Ableton
# Clonar el repo
git clone https://gitea.cbcren.online/renato97/ableton-mcp-ai.git
# Copiar a la carpeta de MIDI Remote Scripts
cp -r ableton-mcp-ai "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI"
2. Instalar dependencias Python
cd "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\MCP_Server"
python -m pip install -r requirements.txt
3. Seleccionar el Control Surface en Live
- Abrir Ableton Live 12.
- Ir a
Preferences > Link/Tempo/MIDI. - Elegir
AbletonMCP_AIcomoControl Surface.
4. Levantar el servidor MCP
cd "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI"
python MCP_Server/server.py
O:
start_server.bat
5. Probar conexion
cd "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\MCP_Server"
python socket_smoke_test.py
Ubicaciones externas esperadas
Este repo no incluye bibliotecas pesadas ni material generado. El stack espera estos recursos fuera del repo:
- biblioteca principal de samples (organizada por categorias):
..\librerias\organized_samples(827 samples indexados) - biblioteca raw original:
..\librerias\all_tracks - vector store para matching ML:
..\librerias\vector_store - Ableton User Library para instalar el sampler M4L:
%USERPROFILE%\Documents\Ableton\User Library - referencias MP3/WAV que se quieran analizar:
..\sample - proyectos
.als, renders y stems
Flujo recomendado
- Resetear el set.
- Generar un track desde MCP o por socket.
- Validar que el commit termine en Arrangement View.
- Revisar audio tracks
AUDIO ...y returns. - Ajustar perfiles, matching y snapshots.
Comandos utiles
Generacion completa:
generate_track(genre="tech-house", style="latin-industrial", bpm=0, key="", structure="standard")
generate_track(genre="tech-house", style="groovy", bpm=126, key="Am", structure="tech-house-dj")
generate_song(genre="tech-house", style="latin-industrial", bpm=0, key="", structure="club")
DJ / Harmonic mixing:
get_harmonic_keys(key="Am")
get_compatible_keys(key="Am")
export_stems_config()
discover_reference_track()
get_reference_suggestions()
Utilidades de generacion:
preview_generation(genre="tech-house", style="groovy", bpm=126, key="Am", structure="tech-house-dj")
regenerate_section(section_name="DROP A")
get_generation_history()
Transporte:
start_playback()
stop_playback()
set_tempo(126)
Samples:
search_samples("kick", category="kick", limit=10)
advanced_search_samples(query="vocal", category="vocals", bpm=128, key="F#m")
analyze_audio_file("C:\\ruta\\track.mp3")
Licencia
Sin licencia publicada por ahora. Tratar este repo como privado/interno hasta definirla.