- 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>
4.3 KiB
4.3 KiB
🛠️ TOFIX — Pendientes del MCP AbletonMCP_AI
Última revisión: 2026-03-22
🔴 Crítico (bloquean funcionalidad)
(Ninguno actualmente — todos los errores de runtime F821/F841 han sido corregidos)
🟠 Alta Prioridad (lint / calidad de código)
Archivos con permisos bloqueados por Windows ACL
Estos archivos tienen permisos de escritura restringidos por la instalación de Ableton. Para editarlos necesitás abrir el editor / terminal como Administrador.
| Archivo | Línea | Error | Descripción |
|---|---|---|---|
audio_analyzer.py |
317 | F401 | struct importado pero nunca usado |
role_matcher.py |
12 | F401 | random importado pero nunca usado (se importa inline donde se necesita) |
role_matcher.py |
13 | F401 | typing.Set importado pero nunca usado |
sample_manager.py |
13 | F401 | os importado pero nunca usado (reemplazado por pathlib) |
sample_manager.py |
17 | F401 | shutil importado pero nunca usado |
sample_manager.py |
19 | F401 | typing.Set importado pero nunca usado |
sample_manager.py |
24 | F401 | time importado pero nunca usado |
sample_manager.py |
28/32 | F401 | audio_analyzer.quick_analyze importado pero nunca llamado |
sample_manager.py |
292 | F841 | file_hash asignado pero nunca usado |
Cómo fixear:
# Desde PowerShell como Administrador:
icacls "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\MCP_Server\audio_analyzer.py" /grant Users:F
icacls "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\MCP_Server\role_matcher.py" /grant Users:F
icacls "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\MCP_Server\sample_manager.py" /grant Users:F
🟡 Media Prioridad (errores de análisis estático Pyre2)
Estos NO son errores reales en Python — son limitaciones del motor de análisis Pyre2 con código dinámico. No causan ningún problema en runtime.
| Tipo | Patrón | Cantidad estimada | Causa real |
|---|---|---|---|
+= no soportado |
defaultdict + int |
~40+ | Pyre2 no infiere defaultdict correctamente |
* no soportado |
dict[str, float] * float |
~10+ | Pyre2 confunde el tipo de retorno de .get() |
in no soportado |
str in set() |
~5+ | Pyre2 pierde el tipo de set después de asignación |
round() overload |
round(x, 3) |
~6 | Bug conocido de Pyre2 con ndigits != None |
Cannot index |
dict[Literal[...]] |
~4 | Pyre2 infiere dict demasiado estricto |
Impacto real: Ninguno. Todos son falsos positivos de inferencia de tipos.
🟢 Baja Prioridad (mejoras arquitecturales)
| Área | Descripción |
|---|---|
sample_manager.py |
file_hash se calcula pero no se usa para detectar cambios reales — actualmente usa st_mtime. Podría usarse para comparación más robusta. |
reference_listener.py |
_compute_segment_features referenciado pero el método no está visible en el scope de Pyre2 — verificar que está en la misma clase. |
reference_listener.py |
str[::step] slice con step — Pyre2 reporta error pero es Python válido. Documentar o usar cast(). |
song_generator.py |
Variables materialized_track_roles y event_track_roles son set pero nunca se leen después de ser llenadas — revisar si son necesarias. |
sample_manager.py |
SampleType = None como fallback cuando audio_analyzer no se puede importar — podría causar TypeError si se usa como clase. |
✅ Ya corregido en esta sesión
| Archivo | Fix |
|---|---|
song_generator.py:2691 |
kind → _kind (F841) |
song_generator.py:4144 |
root_note → _root_note (F841) |
song_generator.py:3265 |
Set[str] → set (F821 — Set no importado) |
song_generator.py:3292 |
Set[str] → set (F821 — Set no importado) |
reference_listener.py:243 |
falling → _falling (F841) |
reference_listener.py:318 |
smoothed_onset → _smoothed_onset (F841) |
reference_listener.py:343 |
total_frames → _total_frames (F841) |
reference_listener.py:2594 |
'Sample' tipo hint → Any (F821 — Sample no definido en scope) |
reference_listener.py:2600 |
'Sample' tipo hint → Any (F821 — Sample no definido en scope) |
opencode.json |
Creado con MCP registrado y todos los permisos en allow |