277 lines
5.3 KiB
Markdown
277 lines
5.3 KiB
Markdown
# Sends Routing Guide
|
|
|
|
## Guia de Routing de Sends y Buses
|
|
|
|
**Sprint:** Granular v0.1.40
|
|
**Tareas:** T101-T106
|
|
**Modulos:** `server.py`, `bus_routing_fix.py`
|
|
|
|
---
|
|
|
|
## Resumen Ejecutivo
|
|
|
|
El sistema de routing RCA (Return Channel Architecture) organiza los tracks en buses logicos para mezcla profesional. Esta guia describe la configuracion de sends, buses y routing implementado.
|
|
|
|
---
|
|
|
|
## Arquitectura RCA
|
|
|
|
### Buses Principales
|
|
|
|
| Bus | Indice | Color | LUFS Target | Funcion |
|
|
|-----|--------|-------|--------------|---------|
|
|
| Drums | 1 | 10 (Rojo) | -8 dB | Kick, clap, hats, percussion |
|
|
| Bass | 2 | 30 (Azul) | -10 dB | Bass y sub-bass |
|
|
| Music | 3 | 45 (Verde) | -12 dB | Synth, pads, leads |
|
|
| Vocal | 4 | 60 (Amarillo) | -12 dB | Vocals, vocal shots |
|
|
| FX | 5 | 75 (Morado) | -14 dB | Atmos, FX, risers |
|
|
|
|
### Master Bus
|
|
|
|
| Master | Indice | Color | LUFS Target |
|
|
|--------|--------|-------|-------------|
|
|
| Master | 0 | 0 | -8 (club) / -14 (streaming) |
|
|
|
|
---
|
|
|
|
## Configuracion de Sends
|
|
|
|
### Cada Send Tiene:
|
|
|
|
```python
|
|
SEND_CONFIG = {
|
|
"drums_send": {
|
|
"index": 0,
|
|
"devices": ["Heat", "Glue Compressor"],
|
|
"dry_wet": {"heat": 1.0, "glue": 0.3}
|
|
},
|
|
"music_send": {
|
|
"index": 1,
|
|
"devices": ["Hybrid Reverb", "Echo"],
|
|
"dry_wet": {"reverb": 0.5, "echo": 0.4}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Sends por Defecto
|
|
|
|
| Send | Dispositivos | Funcion |
|
|
|------|--------------|---------|
|
|
| Drums Send | Heat, Glue Compressor | Saturacion y glue |
|
|
| Music Send | Hybrid Reverb, Echo | Space y delay |
|
|
| Vocal Send | Hybrid Reverb, Echo | Space y delay |
|
|
| FX Send | Hybrid Reverb | Space atmosferico |
|
|
|
|
---
|
|
|
|
## Routing por Rol
|
|
|
|
### Rol -> Bus Mapping
|
|
|
|
```python
|
|
ROLE_TO_BUS_MAP = {
|
|
# Drums bus (index 1)
|
|
"kick": 1,
|
|
"clap": 1,"hat": 1,
|
|
"hat_open": 1,
|
|
"snare": 1,
|
|
"perc_main": 1,
|
|
"perc_alt": 1,"top_loop": 1,
|
|
|
|
# Bass bus (index 2)
|
|
"bass": 2,
|
|
"sub_bass": 2,
|
|
|
|
# Music bus (index 3)
|
|
"synth": 3,
|
|
"pad": 3,
|
|
"lead": 3,"atmos": 3,
|
|
|
|
# Vocal bus (index 4)
|
|
"vocal": 4,
|
|
"vocal_shot": 4,
|
|
|
|
# FX bus (index 5)
|
|
"fx": 5,
|
|
"riser": 5,
|
|
"atmos_fx": 5,"fill_fx": 5
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Configuracion de Gain Staging
|
|
|
|
### Targets por Bus
|
|
|
|
```python
|
|
BUS_GAIN_TARGETS = {
|
|
"drums": {"gain_db": 0.0, "pan": 0.0},
|
|
"bass": {"gain_db": -0.5, "pan": 0.0},
|
|
"music": {"gain_db": -2.0, "pan": 0.0},
|
|
"vocal": {"gain_db": -3.0, "pan": 0.0},
|
|
"fx": {"gain_db": -4.0, "pan": 0.0}
|
|
}
|
|
```
|
|
|
|
### LUFS Targets
|
|
|
|
| Target | LUFS | Uso |
|
|
|---------|------|-----|
|
|
| Club | -8 dB | Reproduccion en vivo |
|
|
| Streaming | -14 dB | Spotify, Apple Music |
|
|
| Demo | -12 dB | Preview separado |
|
|
|
|
---
|
|
|
|
## Sidechain Configuration
|
|
|
|
### Sidechain por Defecto
|
|
|
|
```python
|
|
SIDECHAIN_CONFIG = {
|
|
"destination": "kick",
|
|
"threshold_db": -30,
|
|
"attack_ms": 3,
|
|
"release_ms": 50,
|
|
"ratio": "4:1"
|
|
}
|
|
```
|
|
|
|
### Tracks con Sidechain
|
|
|
|
- Bass: sidechain al kick
|
|
- Synth: sidechain al kick (opcional)
|
|
- Music: sidechain al kick (opcional)---
|
|
|
|
## Validacion de Routing
|
|
|
|
### T102: Diagnostico de Problemas
|
|
|
|
```python
|
|
defdiagnose_bus_routing() -> Dict[str, Any]:
|
|
"""
|
|
Detecta:
|
|
- Tracks en bus incorrecto
|
|
- Sends excesivos en kicks/bass
|
|
- FX bypassing master
|
|
"""
|
|
```
|
|
|
|
### Problemas Comunes
|
|
|
|
| Problema | Sintoma | Solucion |
|
|
|----------|---------|----------|
|
|
| Track en bus incorrecto | Balance roto | Reasignar rol |
|
|
| Sin sidechain en bass | Kick ahogado | Configurar sidechain |
|
|
| Send excesivo | Mezcla sucia | Reducir send level |
|
|
| FX sin master | Niveles inconsistentes | Enrutar a master |
|
|
|
|
---
|
|
|
|
## Ejemplos de Uso
|
|
|
|
### Configurar Bus Routing
|
|
|
|
```python
|
|
# Obtener bus para un rol
|
|
bus_index = get_bus_for_role("bass")# Retorna 2
|
|
|
|
# Configurar send
|
|
set_track_send(
|
|
track_index=3,
|
|
send_index=0,
|
|
value=0.7
|
|
)
|
|
```
|
|
|
|
### Validar Routing
|
|
|
|
```python
|
|
# Diagnostico completo
|
|
issues = diagnose_bus_routing()
|
|
|
|
# Validacion por track
|
|
validate_set_detailed(
|
|
check_routing=True,
|
|
check_gain=True,
|
|
check_clips=True
|
|
)
|
|
```
|
|
|
|
---
|
|
|
|
## Flujo de Señal
|
|
|
|
```
|
|
Track Individual
|
|
|
|
|
v
|
|
[Gain Staging]
|
|
|
|
|
v
|
|
[Bus Routing] --> Drums Bus --> [Heat + Glue]
|
|
| |
|
|
v v
|
|
[Sends] --> Music Bus --> [Reverb + Echo]
|
|
| |
|
|
v v
|
|
[Master] <-------------------------+
|
|
|
|
|
v
|
|
[Master Processing]
|
|
|
|
|
v
|
|
[Output]
|
|
```
|
|
|
|
---
|
|
|
|
## Limitaciones
|
|
|
|
1. **Solo returns configurados**: No se crean grupos adicionales
|
|
2. **Sidechain manual**: El sidechain debe configurarse por track
|
|
3. **Sends limitados**: Maximo 8 sends disponibles
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Sin Sonido en Bus
|
|
|
|
1. Verificar que el bus existe
|
|
2. Comprobar que el send no esta en 0
|
|
3. Validar que eltrack esta ruteado al bus
|
|
|
|
### Niveles Muy Bajos
|
|
|
|
1. Revisar gain staging por bus
|
|
2. Comprobar LUFS del master
|
|
3. Verificar que no hay compresores excesivos
|
|
|
|
### Niveles Muy Altos
|
|
|
|
1. Reducir gain del bus
|
|
2. Comprobar sidechain threshold
|
|
3. Verificar true peak del master
|
|
|
|
---
|
|
|
|
## Tests
|
|
|
|
```powershell
|
|
python -m pytest "tests/test_bus_routing.py" -v
|
|
```
|
|
|
|
---
|
|
|
|
##Roadmap
|
|
|
|
- [ ] T107: Automatic sidechain setup
|
|
- [ ] T108: Dynamic EQ routing
|
|
- [ ] T109: Parallel compression sends
|
|
|
|
---
|
|
|
|
*Maintained by: AbletonMCP-AI Team*
|
|
*Last updated: 2026-04-05* |