chore: publish current ableton mcp ai workspace
This commit is contained in:
91
fix_connection.py
Normal file
91
fix_connection.py
Normal file
@@ -0,0 +1,91 @@
|
||||
"""
|
||||
FIX para la conexion AbletonMCP - Implementa Fix A y Fix B de FIX.md
|
||||
"""
|
||||
import socket
|
||||
import json
|
||||
import time
|
||||
|
||||
def send_cmd(type_name, params=None, timeout=5):
|
||||
params = params or {}
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.settimeout(timeout)
|
||||
try:
|
||||
sock.connect(('127.0.0.1', 9877))
|
||||
msg = json.dumps({'type': type_name, 'params': params}) + '\n'
|
||||
sock.sendall(msg.encode())
|
||||
data = b''
|
||||
start = time.time()
|
||||
while time.time() - start < timeout:
|
||||
try:
|
||||
chunk = sock.recv(8192)
|
||||
if not chunk:
|
||||
break
|
||||
data += chunk
|
||||
try:
|
||||
return json.loads(data.decode())
|
||||
except:
|
||||
continue
|
||||
except socket.timeout:
|
||||
break
|
||||
return json.loads(data.decode()) if data else None
|
||||
except Exception as e:
|
||||
return {'error': str(e)}
|
||||
finally:
|
||||
sock.close()
|
||||
|
||||
print('='*70)
|
||||
print('DIAGNOSTICO Y FIX DE CONEXION ABLETONMCP')
|
||||
print('='*70)
|
||||
print()
|
||||
|
||||
# Paso 1: Verificar info de sesion
|
||||
print('[1] Verificando get_session_info...')
|
||||
result = send_cmd('get_session_info', {}, timeout=10)
|
||||
print(f' Resultado: {json.dumps(result, indent=2)[:200]}...')
|
||||
print()
|
||||
|
||||
if result and result.get('status') == 'success':
|
||||
r = result.get('result', {})
|
||||
tempo = r.get('bpm', 'N/A')
|
||||
tracks = r.get('track_count', 'N/A')
|
||||
print(f' [OK] Conexion funciona: BPM={tempo}, Tracks={tracks}')
|
||||
|
||||
# Verificar si los tracks tienen contenido real
|
||||
print()
|
||||
print('[2] Verificando tracks...')
|
||||
has_real_content = False
|
||||
for i in range(4):
|
||||
track = send_cmd('get_track_info', {'track_index': i}, timeout=5)
|
||||
if track and track.get('status') == 'success':
|
||||
tr = track.get('result', {})
|
||||
name = tr.get('name', '')
|
||||
clips = tr.get('clip_count', 0)
|
||||
if clips > 0:
|
||||
has_real_content = True
|
||||
print(f' Track {i}: {name} - {clips} clips [REAL]')
|
||||
else:
|
||||
print(f' Track {i}: {name} - {clips} clips [VACIO]')
|
||||
|
||||
print()
|
||||
if has_real_content:
|
||||
print('[OK] Ableton tiene contenido real - todo funciona!')
|
||||
else:
|
||||
print('[ALERTA] Ableton tiene 0 clips - los comandos no se ejecutaron realmente')
|
||||
print()
|
||||
print('SOLUCION (Fix B - Nueva sesion):')
|
||||
print(' 1. En Ableton: File -> New Live Set')
|
||||
print(' 2. Esperar 3 segundos')
|
||||
print(' 3. El Remote Script se reinicia automaticamente')
|
||||
print(' 4. Probar de nuevo con get_session_info()')
|
||||
else:
|
||||
print(' [ERROR] No hay respuesta de Ableton')
|
||||
print()
|
||||
print('SOLUCION (Fix C - Reinicio completo):')
|
||||
print(' 1. Cerrar Ableton completamente')
|
||||
print(' 2. Esperar 30 segundos')
|
||||
print(' 3. Abrir Ableton nuevamente')
|
||||
print(' 4. Verificar status bar: "AbletonMCP: Listening on port 9877"')
|
||||
print(' 5. Correr start_server.bat')
|
||||
|
||||
print()
|
||||
print('='*70)
|
||||
Reference in New Issue
Block a user