9.5 KiB
9.5 KiB
BLOQUE 3: Mapeo de Hardware MIDI & Sensores (T166-T180)
Resumen Ejecutivo
Módulo completo de integración de hardware MIDI para control en vivo, incluyendo:
- Mapeo de controladores (Xone:K2, APC40, Pioneer DDJ)
- Callbacks asíncronos para filtros
- Sincronización MIDI Clock
- Feedback luminoso
- Modo Performance
- Detección de silencio
- Y más...
T166: Mapeo de Hardware
Controladores Soportados
1. Allen & Heath Xone:K2
| Control | CC | Canal | Función Asignada |
|---|---|---|---|
| Knob 1 (Filter High) | 1 | 0 | Filter High para Music Bus |
| Knob 2 (Filter Mid) | 2 | 0 | Filter Mid para Music Bus |
| Knob 3 (Filter Low) | 3 | 0 | Filter Low para Music Bus |
| Knob 4 | 4 | 0 | Gain Staging |
| Knob 5 | 5 | 0 | Humanize Amount |
| Knob 6 | 6 | 0 | Sidechain Amount (Bass Bus) |
| Knob 7 | 7 | 0 | Reverb Send |
| Knob 8 | 8 | 0 | Delay Send |
| Fader 1 | 11 | 0 | Drums Bus Volume |
| Fader 2 | 12 | 0 | Bass Bus Volume |
| Fader 3 | 13 | 0 | Music Bus Volume |
| Fader 4 | 14 | 0 | FX Bus Volume |
| Master Fader | 15 | 0 | Master Volume |
Pads (Notas MIDI):
| Pad | Nota | Canal | Función |
|---|---|---|---|
| Scene 1 | 32 | 0 | Fire Scene 1 |
| Scene 2 | 33 | 0 | Fire Scene 2 |
| Scene 3 | 34 | 0 | Fire Scene 3 |
| Scene 4 | 35 | 0 | Fire Scene 4 |
| Panic | 36 | 0 | Botón de Pánico |
| Fill Trigger | 37 | 0 | Disparar Fill |
| Backup Track | 38 | 0 | Toggle Track Backup |
| Performance Mode | 39 | 0 | Toggle Performance Mode |
| Pads 1-8 | 40-47 | 1 | Drum Pads (Fills) |
2. AKAI APC40 MKII
| Control | CC | Canal | Función |
|---|---|---|---|
| Master Fader | 14 | 0 | Master Volume |
| Fader 1-4 | 48-51 | 0 | Bus Volumes |
| Knob 1-4 (Device) | 16-19 | 0 | Device Macros |
| Knob 5-8 (Send) | 20-23 | 0 | Humanize/Sidechain/Reverb/Delay |
Pads de Clip (5x8 matrix):
- Notas 53-89 en canales 0-7
- Cada pad puede disparar clips o funciones especiales
Botones de Scene:
- Notas 82-85 para lanzar scenes 1-4
3. Pioneer DDJ (Mapeo Estándar)
| Control | CC | Canal | Función |
|---|---|---|---|
| CH1 Fader | 2 | 0 | Drums Bus |
| CH2 Fader | 3 | 0 | Bass Bus |
| CH3 Fader | 4 | 0 | Music Bus |
| CH4 Fader | 5 | 0 | Vocals/FX Bus |
| Master | 6 | 0 | Master Volume |
| Crossfader | 8 | 0 | Crossfade entre A/B |
| EQ High/Mid/Low CH1 | 10-12 | 0 | EQ Drums Bus |
| EQ High/Mid/Low CH2 | 13-15 | 0 | EQ Bass Bus |
| Filter CH1 | 20 | 0 | Filter Drums |
| Filter CH2 | 21 | 0 | Filter Bass |
T167: Ligadura Asíncrona de Filtros
# Ejemplo de uso
bind_filter_to_bus_async(
filter_cc=1, # CC del knob de filtro
bus_name="music_bus", # Bus objetivo
hardware_type="xone_k2"
)
Parámetros de Smoothing:
- Smoothing: 0.1 (10% por paso)
- Respuesta: Suave para evitar saltos bruscos
T168: Monitor de Pista
toggle_track_monitor(track_index=0) # Toggle monitor track 0
T169: MIDI Clock Sync
Configuración:
- PPQN: 24 pulsos por negra
- Rango BPM: 60-200
- Smoothing: 0.3 (suavizado de tempo)
start_midi_clock_sync() # Inicia sync
stop_midi_clock_sync() # Detiene sync
T170: Gain Staging desde Fader
Mapeo CC a LUFS:
| CC Value | LUFS Target | Rango |
|---|---|---|
| 0-63 | -23 a -14 | Streaming |
| 64-127 | -14 a -8 | Club |
update_gain_staging_from_fader(cc_value=100) # Target: ~-10.6 LUFS
T171: Fills desde Pads
Mapeo de Pads a Fills:
| Pad | Fill Type | Density | Section |
|---|---|---|---|
| 1 | fill_1 | sparse | drop |
| 2 | fill_2 | medium | build |
| 3 | fill_3 | heavy | drop |
| 4 | fill_4 | sparse | break |
trigger_fill_from_pad(pad_number=1) # Dispara fill tipo sparse
T172: Botón de Pánico
Efectos Afectados:
- music_bus: Reverb send -> 0%
- vocal_bus: Delay send -> 0%
- atmos_bus: Todos los sends -> 0%
trigger_panic_button() # Activa pánico
release_panic_button() # Restaura gradualmente
T173: Feedback Luminoso
Colores LED (APC40):
- 0: Off
- 1: Green
- 2: Green Blink
- 3: Red
- 4: Red Blink
- 5: Yellow
- 6: Yellow Blink
- 7: Orange
Patrones:
- Export Active: Secuencial blink 2 segundos
- Scene Active: Verde fijo
- Panic: Rojo blink
T174: CPU Monitoring
Configuración:
- Intervalo: 500ms (default)
- Display: LED ring del knob master
- Escala: 0-100% -> CC 0-127
start_cpu_monitoring(interval_ms=500)
T175: Scene Trigger con Quantización
Modos de Quantización:
| Modo | Beats | Uso |
|---|---|---|
| none | 0 | Inmediato |
| 8th | 0.5 | Rápido |
| 4th | 1.0 | Precisión |
| 2nd | 2.0 | Medio compás |
| 1bar | 4.0 | Standard |
| 2bar | 8.0 | Largo |
trigger_scene_from_hardware(scene_index=0, quantization="1bar")
T176: Performance Mode
Layouts Disponibles:
Default
- Fader 1: Drums Bus
- Fader 2: Bass Bus
- Fader 3: Music Bus
- Fader 4: Master
DJ
- Fader 1: Deck A
- Fader 2: Deck B
- Fader 3: FX Bus
- Fader 4: Master
Live
- Fader 1: Kick
- Fader 2: Snare
- Fader 3: Synth
- Fader 4: Vocals
activate_performance_mode(layout="default")
T177: Humanize Macro
Mapeo Intensidad:
| CC | Intensidad | Nivel |
|---|---|---|
| 0-38 | 0.0-0.3 | Subtle |
| 39-76 | 0.3-0.6 | Medium |
| 77-127 | 0.6-1.0 | Extreme |
update_humanize_from_knob(cc_value=64) # ~50% intensity
T178: Detección de Silencio
Parámetros:
- Threshold: -60 dB (default)
- Duration: 3000 ms (default)
- Action: Auto-trigger backup track
start_silence_detection(threshold_db=-60.0, duration_ms=3000)
T179: Nudging Asíncrono
Precisión:
- 1 ms = 48 samples @ 48kHz
- 5 ms = 240 samples
apply_nudge_forward(ms=5.0) # Acelera 5ms
apply_nudge_backward(ms=3.0) # Atrasa 3ms
T180: Macros de Visualización
Disponibles:
| Macro | Descripción |
|---|---|
| strobe_beat | Strobe rojo sync con beat |
| level_meter | Medidor de nivel en LEDs |
| peak_indicator | Parpadeo rojo rápido |
| recording_active | LED lento parpadeante |
| midi_clock_sync | LED verde fijo |
trigger_visualization_macro("strobe_beat")
API MCP Disponible
Herramientas Exports
# T166
ableton_mcp_ai_get_hardware_mapping(hardware_type: str)
# T167
ableton_mcp_ai_bind_filter_to_bus(filter_cc: int, bus_name: str, hardware_type: str)
# T168
ableton_mcp_ai_toggle_track_monitor(track_index: int)
# T169
ableton_mcp_ai_start_midi_clock_sync()
ableton_mcp_ai_stop_midi_clock_sync()
# T170
ableton_mcp_ai_update_gain_staging(cc_value: int)
# T171
ableton_mcp_ai_trigger_fill_from_pad(pad_number: int)
# T172
ableton_mcp_ai_trigger_panic()
ableton_mcp_ai_release_panic()
# T173
ableton_mcp_ai_indicate_export()
# T174
ableton_mcp_ai_start_cpu_monitoring(interval_ms: int)
ableton_mcp_ai_stop_cpu_monitoring()
# T175
ableton_mcp_ai_trigger_scene_hardware(scene_index: int, quantization: str)
ableton_mcp_ai_set_scene_quantization(mode: str)
# T176
ableton_mcp_ai_activate_performance_mode(layout: str)
ableton_mcp_ai_deactivate_performance_mode()
# T177
ableton_mcp_ai_update_humanize_macro(cc_value: int)
# T178
ableton_mcp_ai_start_silence_detection(threshold_db: float, duration_ms: int)
ableton_mcp_ai_stop_silence_detection()
# T179
ableton_mcp_ai_apply_nudge_forward(ms: float)
ableton_mcp_ai_apply_nudge_backward(ms: float)
# T180
ableton_mcp_ai_trigger_visualization_macro(macro_name: str)
# Status completo
ableton_mcp_ai_get_hardware_status()
Archivos del Bloque 3
| Archivo | Descripción |
|---|---|
hardware_integration.py |
Módulo principal (1100+ líneas) |
tests/test_hardware_integration.py |
Test suite completo |
docs/HARDWARE_MAPEO.md |
Esta documentación |
Estado de Implementación
| Tarea | Estado | Cobertura |
|---|---|---|
| T166 | ✅ Completado | 3 controladores mapeados |
| T167 | ✅ Completado | Async filter bindings |
| T168 | ✅ Completado | Track monitor toggle |
| T169 | ✅ Completado | MIDI Clock sync |
| T170 | ✅ Completado | Gain staging fader |
| T171 | ✅ Completado | Drum pad fills |
| T172 | ✅ Completado | Panic button |
| T173 | ✅ Completado | LED feedback |
| T174 | ✅ Completado | CPU monitoring |
| T175 | ✅ Completado | Scene quantization |
| T176 | ✅ Completado | Performance mode |
| T177 | ✅ Completado | Humanize macro |
| T178 | ✅ Completado | Silence detection |
| T179 | ✅ Completado | Async nudging |
| T180 | ✅ Completado | Visualization macros |
Total: 15/15 tareas completadas
Uso Ejemplo
# 1. Inicializar hardware
ableton_mcp_ai_get_hardware_mapping("xone_k2")
# 2. Activar performance mode
ableton_mcp_ai_activate_performance_mode("default")
# 3. Configurar sync MIDI
ableton_mcp_ai_start_midi_clock_sync()
# 4. Monitorear CPU
ableton_mcp_ai_start_cpu_monitoring(500)
# 5. Listo para live performance!
Notas Técnicas
Dependencias
mido: Opcional, para I/O MIDI real- Sin dependencias obligatorias para funcionamiento simulado
Thread Safety
- Todos los controladores usan locks (threading/asyncio)
- Callbacks asíncronos para operaciones en tiempo real
- No bloquea el hilo principal
Integración Live
- Los callbacks están preparados para conectar con Ableton Live API
- Señales MIDI se pueden mapear a funciones de Live vía Remote Script
Documentación generada: 2026-04-08 Versión: 1.0.0 Módulo: AbletonMCP-AI Hardware Integration