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>
This commit is contained in:
82
AbletonMCP_AI/MCP_Server/tofix.md
Normal file
82
AbletonMCP_AI/MCP_Server/tofix.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# 🛠️ 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:**
|
||||
```powershell
|
||||
# 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` |
|
||||
Reference in New Issue
Block a user