Implement FASE 3, 4, 6 - 15 new MCP tools, 76/110 tasks complete
FASE 3 - Human Feel & Dynamics (10/11 tasks): - apply_clip_fades() - T041: Fade automation per section - write_volume_automation() - T042: Curves (linear, exp, s_curve, punch) - apply_sidechain_pump() - T045: Sidechain by intensity/style - inject_pattern_fills() - T048: Snare rolls, fills by density - humanize_set() - T050: Timing + velocity + groove automation FASE 4 - Key Compatibility & Tonal (9/12 tasks): - audio_key_compatibility.py: Full KEY_COMPATIBILITY_MATRIX - analyze_key_compatibility() - T053: Harmonic compatibility scoring - suggest_key_change() - T054: Circle of fifths modulation - validate_sample_key() - T055: Sample key validation - analyze_spectral_fit() - T057/T062: Spectral role matching FASE 6 - Mastering & QA (8/13 tasks): - calibrate_gain_staging() - T079: Auto gain by bus targets - run_mix_quality_check() - T085: LUFS, peaks, L/R balance - export_stem_mixdown() - T087: 24-bit/44.1kHz stem export New files: - audio_key_compatibility.py (T052) - bus_routing_fix.py (T101-T104) - validation_system_fix.py (T105-T106) Total: 76/110 tasks (69%), 71 MCP tools exposed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
255
AbletonMCP_AI/MCP_Server/API.md
Normal file
255
AbletonMCP_AI/MCP_Server/API.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# AbletonMCP-AI API Documentation
|
||||
|
||||
## MCP Tools Disponibles
|
||||
|
||||
### Generación
|
||||
|
||||
#### `generate_song(genre, bpm, key, style, structure)`
|
||||
Genera un track completo con todas las capas de audio.
|
||||
|
||||
**Parámetros:**
|
||||
- `genre` (str): Género musical (techno, house, trance, etc)
|
||||
- `bpm` (float): BPM deseado (0 = auto)
|
||||
- `key` (str): Tonalidad (ej: "F#m", "Am")
|
||||
- `style` (str): Sub-estilo (industrial, deep, etc)
|
||||
- `structure` (str): Tipo de estructura (standard, minimal, extended)
|
||||
|
||||
**Ejemplo:**
|
||||
```python
|
||||
result = generate_song("techno", 138, "F#m", "industrial", "standard")
|
||||
```
|
||||
|
||||
#### `generate_with_human_feel(genre, bpm, key, humanize, groove_style)`
|
||||
Genera un track con humanización aplicada.
|
||||
|
||||
**Parámetros adicionales:**
|
||||
- `humanize` (bool): Aplicar variaciones de timing/velocity
|
||||
- `groove_style` (str): Tipo de groove (straight, shuffle, triplet, latin)
|
||||
|
||||
**Ejemplo:**
|
||||
```python
|
||||
result = generate_with_human_feel("house", 124, "Am", True, "shuffle")
|
||||
```
|
||||
|
||||
### Palette y Samples
|
||||
|
||||
#### `set_palette_lock(drums, bass, music)`
|
||||
Fuerza carpetas ancla específicas para la generación.
|
||||
|
||||
**Parámetros:**
|
||||
- `drums` (str): Path a carpeta de drums
|
||||
- `bass` (str): Path a carpeta de bass
|
||||
- `music` (str): Path a carpeta de music/synths
|
||||
|
||||
**Ejemplo:**
|
||||
```python
|
||||
set_palette_lock(
|
||||
drums="librerias/Kick Loops",
|
||||
bass="librerias/Bass Loops",
|
||||
music="librerias/Synth Loops"
|
||||
)
|
||||
```
|
||||
|
||||
#### `get_coverage_wheel_report()`
|
||||
Retorna heatmap de uso de carpetas de samples.
|
||||
|
||||
**Retorna:**
|
||||
- Lista de carpetas ordenadas por uso
|
||||
- Heat levels (FROZEN, COOL, WARM, HOT)
|
||||
- Sugerencias de carpetas bajo-usadas
|
||||
|
||||
#### `get_sample_fatigue_report()`
|
||||
Retorna reporte de fatiga de samples.
|
||||
|
||||
**Retorna:**
|
||||
- Top samples más usados
|
||||
- Factor de fatiga por rol
|
||||
- Thresholds de penalización
|
||||
|
||||
#### `reset_sample_fatigue(role)`
|
||||
Resetea la fatiga de samples.
|
||||
|
||||
**Parámetros:**
|
||||
- `role` (str, opcional): Si especificado, solo resetea ese rol
|
||||
|
||||
### Validación
|
||||
|
||||
#### `validate_set(check_routing, check_gain, check_clips)`
|
||||
Valida el set completo de Ableton.
|
||||
|
||||
**Checks:**
|
||||
- Routing de tracks
|
||||
- Niveles de gain staging
|
||||
- Clips vacíos
|
||||
- Conflictos armónicos
|
||||
|
||||
#### `validate_audio_layers()`
|
||||
Valida específicamente los tracks de audio.
|
||||
|
||||
#### `get_generation_manifest()`
|
||||
Retorna el manifest de la última generación.
|
||||
|
||||
### Memory y Diversidad
|
||||
|
||||
#### `reset_diversity_memory()`
|
||||
Limpia la memoria de diversidad entre generaciones.
|
||||
|
||||
#### `get_sample_coverage_report()`
|
||||
Retorna reporte de cobertura de samples usados.
|
||||
|
||||
## Engines de Procesamiento
|
||||
|
||||
### HumanFeelEngine
|
||||
|
||||
Aplica humanización a patrones MIDI.
|
||||
|
||||
```python
|
||||
from human_feel import HumanFeelEngine
|
||||
|
||||
engine = HumanFeelEngine(seed=42)
|
||||
notes = [{'pitch': 60, 'start': 0.0, 'velocity': 100}]
|
||||
|
||||
# Aplicar timing variation
|
||||
result = engine.apply_timing_variation(notes, amount_ms=5.0)
|
||||
|
||||
# Aplicar velocity humanize
|
||||
result = engine.apply_velocity_humanize(result, variance=0.05)
|
||||
|
||||
# Aplicar groove
|
||||
result = engine.apply_groove(result, style='shuffle', amount=0.5)
|
||||
|
||||
# Aplicar dinámica por sección
|
||||
result = engine.apply_section_dynamics(result, section='drop')
|
||||
```
|
||||
|
||||
### DJArrangementEngine
|
||||
|
||||
Genera estructuras DJ-friendly.
|
||||
|
||||
```python
|
||||
from audio_arrangement import DJArrangementEngine
|
||||
|
||||
engine = DJArrangementEngine(seed=42)
|
||||
|
||||
# Generar estructura
|
||||
structure = engine.generate_structure("standard")
|
||||
|
||||
# Verificar si es DJ-friendly
|
||||
is_friendly = engine.is_dj_friendly(structure)
|
||||
|
||||
# Generar curva de energía
|
||||
automation = engine.generate_energy_automation(structure)
|
||||
```
|
||||
|
||||
### SoundscapeEngine
|
||||
|
||||
Gestiona ambientes y texturas.
|
||||
|
||||
```python
|
||||
from audio_soundscape import SoundscapeEngine
|
||||
|
||||
engine = SoundscapeEngine()
|
||||
|
||||
# Detectar gaps
|
||||
gaps = engine.detect_ambience_gaps(timeline)
|
||||
|
||||
# Llenar con atmos
|
||||
atmos = engine.fill_with_atmos(gaps, genre="techno", key="F#m")
|
||||
```
|
||||
|
||||
### MasterChain
|
||||
|
||||
Configura cadena de mastering.
|
||||
|
||||
```python
|
||||
from audio_mastering import MasterChain, MasteringPreset
|
||||
|
||||
# Crear chain
|
||||
chain = MasterChain()
|
||||
|
||||
# Aplicar preset
|
||||
preset = MasteringPreset.get_preset("club")
|
||||
chain.set_limiter_ceiling(preset['ceiling'])
|
||||
|
||||
# Obtener chain para Ableton
|
||||
devices = chain.get_ableton_device_chain()
|
||||
```
|
||||
|
||||
### AutoPrompter
|
||||
|
||||
Genera configuraciones desde descripciones de vibe.
|
||||
|
||||
```python
|
||||
from self_ai import AutoPrompter
|
||||
|
||||
prompter = AutoPrompter()
|
||||
|
||||
# Generar desde vibe
|
||||
params = prompter.generate_from_vibe("dark warehouse techno")
|
||||
# Retorna: genre, bpm, key, style, structure
|
||||
```
|
||||
|
||||
## Pipeline Completo
|
||||
|
||||
```python
|
||||
from full_integration import generate_complete_track
|
||||
|
||||
# Generación completa con todas las fases
|
||||
track = generate_complete_track("deep house sunset", seed=42)
|
||||
|
||||
# El resultado incluye:
|
||||
# - vibe_params
|
||||
# - structure
|
||||
# - transitions
|
||||
# - atmos_events
|
||||
# - fx_events
|
||||
# - master_chain
|
||||
# - human_feel config
|
||||
```
|
||||
|
||||
## Sistema de Fatiga
|
||||
|
||||
El sistema de fatiga evita la repetición de samples:
|
||||
|
||||
- 0 usos: factor 1.0 (sin penalización)
|
||||
- 1-3 usos: factor 0.75
|
||||
- 4-10 usos: factor 0.50
|
||||
- 10+ usos: factor 0.20
|
||||
|
||||
## Palette Bonus
|
||||
|
||||
Sistema de scoring por compatibilidad de carpeta:
|
||||
|
||||
- Folder ancla exacto: 1.4x
|
||||
- Subfolder del ancla: 1.3x
|
||||
- Folder hermano (mismo padre): 1.2x
|
||||
- Folder diferente: 0.9x
|
||||
|
||||
## Testing
|
||||
|
||||
Ejecutar tests:
|
||||
|
||||
```bash
|
||||
cd AbletonMCP_AI/MCP_Server
|
||||
python -m unittest tests.test_sample_selector tests.test_human_feel tests.test_integration -v
|
||||
```
|
||||
|
||||
## Constantes Importantes
|
||||
|
||||
### Energy Profiles
|
||||
- intro: 30%
|
||||
- build: 70%
|
||||
- drop: 100%
|
||||
- break: 50%
|
||||
- outro: 20%
|
||||
|
||||
### Loudness Targets
|
||||
- streaming: -14 LUFS
|
||||
- club: -8 LUFS
|
||||
- safe: -12 LUFS
|
||||
|
||||
### Master Chain
|
||||
- Utility (gain staging)
|
||||
- Saturator (drive 1.5)
|
||||
- Compressor (ratio 2:1)
|
||||
- Limiter (ceiling -0.3dB)
|
||||
Reference in New Issue
Block a user