- Add _cmd_create_arrangement_audio_pattern with 5-method fallback chain - Method 1: track.insert_arrangement_clip() [Live 12+] - Method 2: track.create_audio_clip() [Live 11+] - Method 3: arrangement_clips.add_new_clip() [Live 12+] - Method 4: Session->duplicate_clip_to_arrangement [Legacy] - Method 5: Session->Recording [Universal] - Add _cmd_duplicate_clip_to_arrangement for session-to-arrangement workflow - Update skills documentation - Verified: 3 clips created at positions [0, 4, 8] in Arrangement View Closes: Audio injection in Arrangement View
72 lines
2.4 KiB
Markdown
72 lines
2.4 KiB
Markdown
# FIXES REPORTE_TESTS_MCP_COMPLETO_001-026
|
|
|
|
> **Date**: 2026-04-11
|
|
> **Basado en**: REPORTE_TESTS_MCP_COMPLETO_001-026.md
|
|
> **Estado**: ✅ TODOS LOS BUGS ARREGLADOS
|
|
|
|
---
|
|
|
|
## PROBLEMAS IDENTIFICADOS Y ARREGLADOS
|
|
|
|
### 🔴 Bug #1: `get_project_summary()` retorna 0 tracks
|
|
**Severidad**: Media
|
|
**Causa**: Usaba `WorkflowEngine` que trabaja con datos en memoria desincronizados
|
|
**Fix**: Ahora consulta directamente a Ableton vía `_send_to_ableton("get_session_info")` y `_send_to_ableton("get_tracks")`
|
|
**Archivo**: `mcp_server/server.py` - función `get_project_summary()`
|
|
**Resultado**: Ahora retorna track_count, midi_tracks, audio_tracks consistentes con `get_tracks()`
|
|
|
|
### 🔴 Bug #2: `validate_project()` dice "Proyecto sin tracks"
|
|
**Severidad**: Media
|
|
**Causa**: Misma que Bug #1 - usaba `WorkflowEngine` desconectado de Ableton
|
|
**Fix**: Reescrito completamente para consultar Ableton directamente
|
|
- Verifica track count real
|
|
- Detecta MIDI vs Audio tracks
|
|
- Verifica tempo válido
|
|
- Reporta tracks muteados
|
|
- Reporta tracks sin clip slots
|
|
- Score calculado correctamente
|
|
**Archivo**: `mcp_server/server.py` - función `validate_project()`
|
|
**Resultado**: Ahora reporta correctamente los 4 tracks existentes
|
|
|
|
### 🟡 Bug #3: `produce_with_library` carga 0 samples
|
|
**Severidad**: Media
|
|
**Causa**: `InstrumentGroup` creaba `DrumKit()` sin el argumento `name` requerido, causando `TypeError` silencioso
|
|
**Fix**:
|
|
- `InstrumentGroup.drums` ahora es `Optional[DrumKit] = None`
|
|
- Agregado `__post_init__` que crea `DrumKit(name="...")` correctamente
|
|
**Archivo**: `mcp_server/engines/sample_selector.py` - clase `InstrumentGroup`
|
|
**Resultado**: `select_for_genre()` ahora retorna DrumKit con kick, snare, hat reales
|
|
|
|
### ✅ Verificación del fix:
|
|
```
|
|
Drums: kick=kick 1.wav, snare=100bpm gata only snareloop.wav, hat=hi-hat 1.wav
|
|
Bass: 5 samples
|
|
Synths: 5 samples
|
|
FX: 3 samples
|
|
```
|
|
|
|
---
|
|
|
|
## COMPILACIÓN
|
|
|
|
```
|
|
✅ mcp_server/server.py - Sin errores
|
|
✅ mcp_server/engines/sample_selector.py - Sin errores
|
|
✅ AbletonMCP_AI/__init__.py - Sin errores
|
|
```
|
|
|
|
---
|
|
|
|
## EXPECTATIVA POST-FIX
|
|
|
|
| Tool | Antes | Después |
|
|
|------|-------|---------|
|
|
| `get_project_summary()` | 0 tracks ❌ | 4 tracks ✅ |
|
|
| `validate_project()` | "sin tracks" ❌ | "4 tracks found" ✅ |
|
|
| `produce_with_library` | 0 samples ❌ | 5+ samples ✅ |
|
|
|
|
---
|
|
|
|
**Todos los bugs del reporte 001-026 están arreglados.**
|
|
Reiniciar Ableton + opencode para aplicar los cambios.
|