feat: Implement senior audio injection with 5 fallback methods
- 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
This commit is contained in:
745
docs/WORKFLOW_REGGAETON.md
Normal file
745
docs/WORKFLOW_REGGAETON.md
Normal file
@@ -0,0 +1,745 @@
|
||||
# WORKFLOW DE PRODUCCION REGGAETON
|
||||
|
||||
> Pipeline completo de produccion de reggaeton con AbletonMCP_AI, desde analisis de libreria hasta export final.
|
||||
|
||||
## Tabla de Contenidos
|
||||
|
||||
1. [Vista General del Pipeline](#vista-general-del-pipeline)
|
||||
2. [Fase 1: Analisis de Libreria](#fase-1-analisis-de-libreria)
|
||||
3. [Fase 2: Seleccion de Samples](#fase-2-seleccion-de-samples)
|
||||
4. [Fase 3: Produccion Completa](#fase-3-produccion-completa)
|
||||
5. [Fase 4: Verificacion de Calidad](#fase-4-verificacion-de-calidad)
|
||||
6. [Fase 5: Export Final](#fase-5-export-final)
|
||||
7. [Ejemplo Completo Paso a Paso](#ejemplo-completo-paso-a-paso)
|
||||
8. [Variantes de Estilo](#variantes-de-estilo)
|
||||
9. [Produccion en Lote](#produccion-en-lote)
|
||||
10. [Produccion desde Referencia](#produccion-desde-referencia)
|
||||
|
||||
---
|
||||
|
||||
## Vista General del Pipeline
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ PIPELINE DE PRODUCCION │
|
||||
├─────────────┬─────────────┬─────────────┬─────────────┬─────────┤
|
||||
│ FASE 1 │ FASE 2 │ FASE 3 │ FASE 4 │ FASE 5 │
|
||||
│ Analisis │ Seleccion │ Produccion │ Calidad │ Export │
|
||||
│ │ │ │ │ │
|
||||
│ analyze_ │ get_recom- │ produce_ │ full_quality│ render_ │
|
||||
│ library │ mended_ │ reggaeton │ _check │ stems │
|
||||
│ │ samples │ │ │ │
|
||||
│ get_user_ │ browse_ │ generate_ │ fix_quality │ render_ │
|
||||
│ sound_ │ library │ dembow_clip │ _issues │ full_mix│
|
||||
│ profile │ │ generate_ │ │ │
|
||||
│ │ │ bass_clip │ validate_ │ create_ │
|
||||
│ │ │ generate_ │ project │ radio_ │
|
||||
│ │ │ chords_clip │ │ edit │
|
||||
│ │ │ generate_ │ │ │
|
||||
│ │ │ melody_clip │ │ create_ │
|
||||
│ │ │ │ │ dj_edit │
|
||||
├─────────────┴─────────────┴─────────────┴─────────────┴─────────┤
|
||||
│ Duracion estimada: 15-45 minutos (dependiendo del hardware) │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fase 1: Analisis de Libreria
|
||||
|
||||
**Objetivo:** Analizar toda la biblioteca de samples para extraer caracteristicas sonoras.
|
||||
|
||||
### Paso 1.1: Verificar estado del sistema
|
||||
|
||||
```
|
||||
Command: health_check()
|
||||
Expected: {"score": "5/5", "status": "HEALTHY"}
|
||||
```
|
||||
|
||||
Si el score es menor a 4/5, reiniciar el Remote Script en Ableton antes de continuar.
|
||||
|
||||
### Paso 1.2: Analizar la biblioteca
|
||||
|
||||
```
|
||||
Command: analyze_library(force_reanalyze=False)
|
||||
Expected: {"total_analyzed": N, "cache_file": "..."}
|
||||
```
|
||||
|
||||
- `force_reanalyze=False`: Usa cache existente (mas rapido)
|
||||
- `force_reanalyze=True`: Reanaliza todo (lento pero actualizado)
|
||||
|
||||
**Duracion:** 2-10 minutos dependiendo del numero de samples.
|
||||
|
||||
### Paso 1.3: Obtener estadisticas
|
||||
|
||||
```
|
||||
Command: get_library_stats()
|
||||
Expected: {
|
||||
"total_files_found": N,
|
||||
"files_by_role": {
|
||||
"kick": N,
|
||||
"snare": N,
|
||||
"hat_closed": N,
|
||||
"hat_open": N,
|
||||
"clap": N,
|
||||
"perc": N,
|
||||
"bass": N,
|
||||
"synths": N,
|
||||
"fx": N
|
||||
},
|
||||
"bpm_distribution": {...},
|
||||
"key_distribution": {...}
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 1.4: Obtener perfil de sonido del usuario
|
||||
|
||||
```
|
||||
Command: get_user_sound_profile()
|
||||
Expected: {
|
||||
"preferred_bpm_range": "90-100",
|
||||
"preferred_key": "Am",
|
||||
"sonic_characteristics": ["warm", "punchy", "clean"],
|
||||
"sample_preferences": {...}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fase 2: Seleccion de Samples
|
||||
|
||||
**Objetivo:** Seleccionar los mejores samples para la produccion actual.
|
||||
|
||||
### Paso 2.1: Obtener samples recomendados
|
||||
|
||||
```
|
||||
Command: get_recommended_samples(role="kick", count=5)
|
||||
Expected: {
|
||||
"role": "kick",
|
||||
"samples": [
|
||||
{"path": "...", "name": "...", "bpm": 95, "key": "Am", "score": 0.92},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Roles disponibles:**
|
||||
- `kick` - Bombo
|
||||
- `snare` - Caja
|
||||
- `hat_closed` - Hi-hat cerrado
|
||||
- `hat_open` - Hi-hat abierto
|
||||
- `clap` - Palma
|
||||
- `perc` - Percusion
|
||||
- `bass` - Bajo
|
||||
- `synths` - Sintetizadores
|
||||
- `fx` - Efectos
|
||||
|
||||
### Paso 2.2: Navegar la biblioteca con filtros
|
||||
|
||||
```
|
||||
Command: browse_library(role="kick", bpm_min=90, bpm_max=100, key="Am")
|
||||
Expected: {
|
||||
"total": N,
|
||||
"samples": [
|
||||
{"path": "...", "bpm": 95, "key": "Am", "pack": "...", "role": "kick", ...},
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 2.3: Comparar samples candidatos
|
||||
|
||||
```
|
||||
Command: compare_two_samples(
|
||||
path1="C:\\ProgramData\\Ableton\\Live 12 Suite\\Resources\\MIDI Remote Scripts\\libreria\\reggaeton\\kick\\kick_01.wav",
|
||||
path2="C:\\ProgramData\\Ableton\\Live 12 Suite\\Resources\\MIDI Remote Scripts\\libreria\\reggaeton\\kick\\kick_02.wav"
|
||||
)
|
||||
Expected: {
|
||||
"similarity": 0.85,
|
||||
"sample1": {...},
|
||||
"sample2": {...}
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 2.4: Seleccion completa para el genero
|
||||
|
||||
```
|
||||
Command: select_samples_for_genre(genre="reggaeton", key="Am", bpm=95)
|
||||
Expected: {
|
||||
"genre": "reggaeton",
|
||||
"key": "Am",
|
||||
"bpm": 95,
|
||||
"drums": {
|
||||
"kick": "kick_01.wav",
|
||||
"snare": "snare_03.wav",
|
||||
"clap": "clap_02.wav",
|
||||
"hat_closed": "hat_closed_01.wav",
|
||||
"hat_open": "hat_open_01.wav"
|
||||
},
|
||||
"bass": ["bass_01.wav", "bass_02.wav", ...],
|
||||
"synths": ["synth_01.wav", ...],
|
||||
"fx": ["fx_01.wav", ...]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fase 3: Produccion Completa
|
||||
|
||||
**Objetivo:** Generar la produccion completa con todos los elementos musicales.
|
||||
|
||||
### Opcion A: Pipeline Automatico (Recomendado)
|
||||
|
||||
```
|
||||
Command: produce_reggaeton(
|
||||
bpm=95,
|
||||
key="Am",
|
||||
style="classic",
|
||||
structure="verse-chorus"
|
||||
)
|
||||
```
|
||||
|
||||
Este comando ejecuta automaticamente:
|
||||
1. Creacion de pistas (drums, bass, chords, melody, fx)
|
||||
2. Generacion de clips MIDI para cada elemento
|
||||
3. Carga de samples seleccionados
|
||||
4. Configuracion inicial de mezcla
|
||||
5. Estructura de cancion completa
|
||||
|
||||
**Parametros de style:**
|
||||
- `"classic"` - Reggaeton clasico estilo 2000s
|
||||
- `"dembow"` - Dembow puro, enfocado en el ritmo
|
||||
- `"perreo"` - Perreo intenso, bass pesado
|
||||
- `"moombahton"` - Moombahton, mas melodico
|
||||
|
||||
**Parametros de structure:**
|
||||
- `"verse-chorus"` - Estructura verso-estribillo
|
||||
- `"full"` - Estructura completa (intro, verso, chorus, puente, outro)
|
||||
- `"intro-drop"` - Intro larga con drop principal
|
||||
|
||||
### Opcion B: Construccion Manual Paso a Paso
|
||||
|
||||
#### Paso 3.1: Configurar proyecto
|
||||
|
||||
```
|
||||
Command: set_tempo(tempo=95)
|
||||
Command: set_time_signature(numerator=4, denominator=4)
|
||||
Command: create_midi_track(index=-1) → track 0: Drums
|
||||
Command: create_midi_track(index=-1) → track 1: Bass
|
||||
Command: create_midi_track(index=-1) → track 2: Chords
|
||||
Command: create_midi_track(index=-1) → track 3: Melody
|
||||
Command: create_audio_track(index=-1) → track 4: Samples
|
||||
```
|
||||
|
||||
#### Paso 3.2: Nombrar pistas
|
||||
|
||||
```
|
||||
Command: set_track_name(track_index=0, name="Drums")
|
||||
Command: set_track_name(track_index=1, name="Bass")
|
||||
Command: set_track_name(track_index=2, name="Chords")
|
||||
Command: set_track_name(track_index=3, name="Melody")
|
||||
Command: set_track_name(track_index=4, name="Samples")
|
||||
```
|
||||
|
||||
#### Paso 3.3: Generar patron dembow
|
||||
|
||||
```
|
||||
Command: generate_dembow_clip(
|
||||
track_index=0,
|
||||
clip_index=0,
|
||||
bars=4,
|
||||
variation="standard"
|
||||
)
|
||||
```
|
||||
|
||||
**Variaciones disponibles:**
|
||||
- `"standard"` - Patron dembow clasico (kick en 1, 1.5, 2, 2.5)
|
||||
- `"minimal"` - Patron simplificado
|
||||
- `"complex"` - Patron con notas adicionales y sincopas
|
||||
- `"fill"` - Patron de fill para transiciones
|
||||
|
||||
#### Paso 3.4: Generar linea de bajo
|
||||
|
||||
```
|
||||
Command: generate_bass_clip(
|
||||
track_index=1,
|
||||
clip_index=0,
|
||||
bars=4,
|
||||
root_notes=[36, 36, 36, 36], // C1 para Am
|
||||
style="standard"
|
||||
)
|
||||
```
|
||||
|
||||
**Estilos de bass:**
|
||||
- `"standard"` - Bajo ritmico clasico
|
||||
- `"melodic"` - Bajo con movimiento melodico
|
||||
- `"staccato"` - Bajo cortado y percusivo
|
||||
- `"slides"` - Bajo con slides entre notas
|
||||
|
||||
#### Paso 3.5: Generar progresion de acordes
|
||||
|
||||
```
|
||||
Command: generate_chords_clip(
|
||||
track_index=2,
|
||||
clip_index=0,
|
||||
bars=4,
|
||||
progression="i-v-vi-iv",
|
||||
key="Am"
|
||||
)
|
||||
```
|
||||
|
||||
**Progresiones disponibles:**
|
||||
- `"i-v-vi-iv"` - Progresion clasica menor (Am-Em-F-Dm)
|
||||
- `"i-iv-v"` - Blues menor (Am-Dm-Em)
|
||||
- `"i-vi-iv-v"` - Progresion de 50s menor (Am-F-Dm-Em)
|
||||
- `"i-v-i-v"` - Alternancia simple (Am-Em-Am-Em)
|
||||
- `"i-iv-i-v"` - Variacion (Am-Dm-Am-Em)
|
||||
|
||||
#### Paso 3.6: Generar melodia
|
||||
|
||||
```
|
||||
Command: generate_melody_clip(
|
||||
track_index=3,
|
||||
clip_index=0,
|
||||
bars=4,
|
||||
scale="minor",
|
||||
density="medium"
|
||||
)
|
||||
```
|
||||
|
||||
**Escalas disponibles:**
|
||||
- `"minor"` - Escala menor natural
|
||||
- `"major"` - Escala mayor
|
||||
- `"harmonic_minor"` - Menor armonica
|
||||
- `"pentatonic"` - Pentatonica menor
|
||||
|
||||
**Densidades:**
|
||||
- `"sparse"` - Pocas notas, espacio entre ellas
|
||||
- `"medium"` - Densidad balanceada
|
||||
- `"dense"` - Muchas notas, linea ocupada
|
||||
|
||||
#### Paso 3.7: Humanizar pistas
|
||||
|
||||
```
|
||||
Command: apply_human_feel(track_index=0, intensity=0.3) // Drums: sutil
|
||||
Command: apply_human_feel(track_index=3, intensity=0.5) // Melody: moderado
|
||||
```
|
||||
|
||||
#### Paso 3.8: Aniadir fills de percusion
|
||||
|
||||
```
|
||||
Command: add_percussion_fills(
|
||||
track_index=0,
|
||||
positions=[7, 15, 23, 31] // Fills cada 8 compases
|
||||
)
|
||||
```
|
||||
|
||||
### Opcion C: Generacion desde Configuracion JSON
|
||||
|
||||
```
|
||||
Command: generate_track_from_config(track_config_json='{
|
||||
"type": "drums",
|
||||
"pattern": "dembow",
|
||||
"bars": 8,
|
||||
"name": "Drums Main"
|
||||
}')
|
||||
```
|
||||
|
||||
### Opcion D: Generacion de Secciones
|
||||
|
||||
```
|
||||
Command: generate_section(section_config_json='{
|
||||
"type": "verse",
|
||||
"bars": 16,
|
||||
"elements": ["drums", "bass", "chords"]
|
||||
}', start_bar=0)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fase 4: Verificacion de Calidad
|
||||
|
||||
**Objetivo:** Verificar y corregir problemas de calidad en la produccion.
|
||||
|
||||
### Paso 4.1: Verificacion completa
|
||||
|
||||
```
|
||||
Command: full_quality_check()
|
||||
Expected: {
|
||||
"status": "passed" | "issues_found",
|
||||
"checks": [
|
||||
{"name": "volume_levels", "passed": true},
|
||||
{"name": "frequency_balance", "passed": true},
|
||||
{"name": "stereo_image", "passed": false, "issue": "..."},
|
||||
{"name": "phase_coherence", "passed": true},
|
||||
{"name": "dynamic_range", "passed": true},
|
||||
...
|
||||
],
|
||||
"issues_count": N,
|
||||
"warnings_count": N
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 4.2: Corregir problemas detectados
|
||||
|
||||
```
|
||||
Command: fix_quality_issues(issues=[]) // [] = arreglar todos
|
||||
Expected: {
|
||||
"issues_fixed": N,
|
||||
"details": [...]
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 4.3: Validacion final
|
||||
|
||||
```
|
||||
Command: validate_project()
|
||||
Expected: {
|
||||
"is_valid": true,
|
||||
"issues": [],
|
||||
"warnings": [...],
|
||||
"passed_checks": [...],
|
||||
"score": N
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 4.4: Obtener sugerencias
|
||||
|
||||
```
|
||||
Command: suggest_improvements()
|
||||
Expected: {
|
||||
"suggestions": [
|
||||
{"category": "mixing", "suggestion": "...", "priority": "high"},
|
||||
...
|
||||
],
|
||||
"priority": "medium",
|
||||
"estimated_impact": "medium"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fase 5: Export Final
|
||||
|
||||
**Objetivo:** Exportar la produccion en los formatos necesarios.
|
||||
|
||||
### Paso 5.1: Renderizar stems individuales
|
||||
|
||||
```
|
||||
Command: render_stems(output_dir="C:\\Users\\ren\\Desktop\\stems\\mi_track\\")
|
||||
Expected: {
|
||||
"output_dir": "C:\\Users\\ren\\Desktop\\stems\\mi_track\\",
|
||||
"stems_rendered": [
|
||||
"drums.wav",
|
||||
"bass.wav",
|
||||
"chords.wav",
|
||||
"melody.wav",
|
||||
"fx.wav"
|
||||
],
|
||||
"format": "wav",
|
||||
"sample_rate": 44100,
|
||||
"bit_depth": 24
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 5.2: Renderizar mix completo
|
||||
|
||||
```
|
||||
Command: render_full_mix(output_path="C:\\Users\\ren\\Desktop\\mi_track_master.wav")
|
||||
Expected: {
|
||||
"output_path": "C:\\Users\\ren\\Desktop\\mi_track_master.wav",
|
||||
"duration": "3:45",
|
||||
"format": "wav",
|
||||
"sample_rate": 44100,
|
||||
"bit_depth": 24
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 5.3: Crear version instrumental
|
||||
|
||||
```
|
||||
Command: render_instrumental(output_path="C:\\Users\\ren\\Desktop\\mi_track_instrumental.wav")
|
||||
Expected: {
|
||||
"output_path": "C:\\Users\\ren\\Desktop\\mi_track_instrumental.wav",
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 5.4: Crear version para radio
|
||||
|
||||
```
|
||||
Command: create_radio_edit(output_path="C:\\Users\\ren\\Desktop\\mi_track_radio.wav")
|
||||
Expected: {
|
||||
"output_path": "C:\\Users\\ren\\Desktop\\mi_track_radio.wav",
|
||||
"duration": "3:00",
|
||||
"changes": ["intro shortened", "chorus moved earlier"]
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 5.5: Crear version para DJ
|
||||
|
||||
```
|
||||
Command: create_dj_edit(output_path="C:\\Users\\ren\\Desktop\\mi_track_dj.wav")
|
||||
Expected: {
|
||||
"output_path": "C:\\Users\\ren\\Desktop\\mi_track_dj.wav",
|
||||
"duration": "5:30",
|
||||
"changes": ["extended intro", "extended outro", "cue points added"]
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 5.6: Export general del proyecto
|
||||
|
||||
```
|
||||
Command: export_project(
|
||||
path="C:\\Users\\ren\\Desktop\\mi_track_export.wav",
|
||||
format="wav"
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ejemplo Completo Paso a Paso
|
||||
|
||||
A continuacion se muestra una sesion completa de produccion con comandos reales:
|
||||
|
||||
```
|
||||
# ===== FASE 1: VERIFICACION Y ANALISIS =====
|
||||
|
||||
# 1. Verificar estado del sistema
|
||||
health_check()
|
||||
→ {"score": "5/5", "status": "HEALTHY", ...}
|
||||
|
||||
# 2. Ver estado actual
|
||||
get_session_info()
|
||||
→ {"tempo": 120, "num_tracks": 0, "num_scenes": 0, ...}
|
||||
|
||||
# 3. Analizar libreria (si no se ha hecho antes)
|
||||
analyze_library(force_reanalyze=False)
|
||||
→ {"total_analyzed": 247, "cache_file": "..."}
|
||||
|
||||
# 4. Obtener perfil de sonido
|
||||
get_user_sound_profile()
|
||||
→ {"preferred_bpm_range": "90-100", "preferred_key": "Am", ...}
|
||||
|
||||
# ===== FASE 2: SELECCION DE SAMPLES =====
|
||||
|
||||
# 5. Obtener samples recomendados para kick
|
||||
get_recommended_samples(role="kick", count=5)
|
||||
→ {"role": "kick", "samples": [...]}
|
||||
|
||||
# 6. Navegar libreria para snare
|
||||
browse_library(role="snare", bpm_min=90, bpm_max=100)
|
||||
→ {"total": 12, "samples": [...]}
|
||||
|
||||
# 7. Seleccion completa
|
||||
select_samples_for_genre(genre="reggaeton", key="Am", bpm=95)
|
||||
→ {"genre": "reggaeton", "drums": {"kick": "...", ...}, ...}
|
||||
|
||||
# ===== FASE 3: PRODUCCION =====
|
||||
|
||||
# 8. Configurar tempo
|
||||
set_tempo(tempo=95)
|
||||
→ {"tempo": 95}
|
||||
|
||||
# 9. Pipeline completo de produccion
|
||||
produce_reggaeton(bpm=95, key="Am", style="classic", structure="verse-chorus")
|
||||
→ {
|
||||
"production_type": "reggaeton",
|
||||
"bpm": 95,
|
||||
"key": "Am",
|
||||
"style": "classic",
|
||||
"structure": "verse-chorus",
|
||||
"tracks_created": ["Drums", "Bass", "Chords", "Melody", "FX"],
|
||||
"clips_generated": [...],
|
||||
"duration_bars": 64
|
||||
}
|
||||
|
||||
# 10. Humanizar drums
|
||||
apply_human_feel(track_index=0, intensity=0.3)
|
||||
→ {"track_index": 0, "intensity": 0.3, "notes_affected": 64, ...}
|
||||
|
||||
# 11. Aniadir fills
|
||||
add_percussion_fills(track_index=0, positions=[7, 15, 23, 31])
|
||||
→ {"track_index": 0, "fills_added": 4, ...}
|
||||
|
||||
# ===== FASE 4: MEZCLA =====
|
||||
|
||||
# 12. Crear bus de drums
|
||||
create_bus_track(bus_type="Drums")
|
||||
→ {"bus_type": "Drums", "track_index": N}
|
||||
|
||||
# 13. Rutear drums al bus
|
||||
route_track_to_bus(track_index=0, bus_name="Drums")
|
||||
→ {"track_index": 0, "bus_name": "Drums"}
|
||||
|
||||
# 14. Configurar EQ en drums
|
||||
configure_eq(track_index=0, preset="kick_boost")
|
||||
→ {"track_index": 0, "preset": "kick_boost", ...}
|
||||
|
||||
# 15. Configurar compresor en bass
|
||||
configure_compressor(track_index=1, threshold=-20.0, ratio=4.0)
|
||||
→ {"track_index": 1, "threshold": -20.0, "ratio": 4.0, ...}
|
||||
|
||||
# 16. Sidechain: bass duckeado por kick
|
||||
setup_sidechain(source_track=0, target_track=1, amount=0.5)
|
||||
→ {"source_track": 0, "target_track": 1, "amount": 0.5}
|
||||
|
||||
# 17. Ganancia automatica
|
||||
auto_gain_staging()
|
||||
→ {"tracks_adjusted": N, "adjustments": [...], "headroom_ok": true}
|
||||
|
||||
# 18. Cadena de mastering
|
||||
apply_master_chain(preset="reggaeton_streaming")
|
||||
→ {"preset": "reggaeton_streaming", "devices_added": [...], ...}
|
||||
|
||||
# ===== FASE 5: VERIFICACION =====
|
||||
|
||||
# 19. Verificacion de calidad
|
||||
full_quality_check()
|
||||
→ {"status": "passed", "issues_count": 0, ...}
|
||||
|
||||
# 20. Validacion final
|
||||
validate_project()
|
||||
→ {"is_valid": true, "score": 92, ...}
|
||||
|
||||
# ===== FASE 6: EXPORT =====
|
||||
|
||||
# 21. Renderizar stems
|
||||
render_stems(output_dir="C:\\Users\\ren\\Desktop\\stems\\reggaeton_95bpm_am\\")
|
||||
→ {"stems_rendered": ["drums.wav", "bass.wav", ...], ...}
|
||||
|
||||
# 22. Renderizar mix final
|
||||
render_full_mix(output_path="C:\\Users\\ren\\Desktop\\reggaeton_95bpm_am_master.wav")
|
||||
→ {"output_path": "...", "duration": "3:45", ...}
|
||||
|
||||
# 23. Version radio
|
||||
create_radio_edit(output_path="C:\\Users\\ren\\Desktop\\reggaeton_95bpm_am_radio.wav")
|
||||
→ {"duration": "3:00", ...}
|
||||
|
||||
# 24. Version DJ
|
||||
create_dj_edit(output_path="C:\\Users\\ren\\Desktop\\reggaeton_95bpm_am_dj.wav")
|
||||
→ {"duration": "5:30", ...}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Variantes de Estilo
|
||||
|
||||
### Reggaeton Clasico (2000s)
|
||||
```
|
||||
produce_reggaeton(bpm=95, key="Am", style="classic", structure="verse-chorus")
|
||||
```
|
||||
- BPM: 90-98
|
||||
- Clave: Am, Dm, Em comunes
|
||||
- Estructura: verso-estribillo
|
||||
- Caracteristicas: dembow limpio, bass sub, acordes simples
|
||||
|
||||
### Dembow Puro
|
||||
```
|
||||
produce_reggaeton(bpm=100, key="Dm", style="dembow", structure="intro-drop")
|
||||
```
|
||||
- BPM: 98-105
|
||||
- Enfocado en el ritmo dembow
|
||||
- Bass pesado y presente
|
||||
- Menos elementos melodicos
|
||||
|
||||
### Perreo Intenso
|
||||
```
|
||||
produce_reggaeton(bpm=92, key="Em", style="perreo", structure="full")
|
||||
```
|
||||
- BPM: 88-95 (mas lento, mas pesado)
|
||||
- Bass distorsionado
|
||||
- Acordes oscuros
|
||||
- Estructura completa
|
||||
|
||||
### Moombahton
|
||||
```
|
||||
produce_reggaeton(bpm=108, key="Gm", style="moombahton", structure="verse-chorus")
|
||||
```
|
||||
- BPM: 105-112
|
||||
- Mas melodico y harmonico
|
||||
- Influencia de house music
|
||||
- Acordes mas complejos
|
||||
|
||||
---
|
||||
|
||||
## Produccion en Lote
|
||||
|
||||
Para producir multiples tracks con variaciones automaticas:
|
||||
|
||||
```
|
||||
Command: batch_produce(count=3, style="classic", bpm_range="90-100")
|
||||
Expected: {
|
||||
"batch_size": 3,
|
||||
"style": "classic",
|
||||
"bpm_range": "90-100",
|
||||
"productions": [
|
||||
{"index": 1, "bpm": 93, "key": "Am", "tracks": 5},
|
||||
{"index": 2, "bpm": 97, "key": "Dm", "tracks": 5},
|
||||
{"index": 3, "bpm": 95, "key": "Em", "tracks": 5}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Parametros:**
|
||||
- `count`: Numero de canciones (1-10)
|
||||
- `style`: Estilo de produccion
|
||||
- `bpm_range`: Rango de BPM en formato "min-max"
|
||||
|
||||
---
|
||||
|
||||
## Produccion desde Referencia
|
||||
|
||||
Para producir basado en una pista de referencia existente:
|
||||
|
||||
### Paso 1: Verificar que el archivo de referencia existe
|
||||
```
|
||||
# Asegurarse de que el archivo existe en la ruta especificada
|
||||
```
|
||||
|
||||
### Paso 2: Generar desde referencia
|
||||
```
|
||||
Command: produce_from_reference(
|
||||
audio_path="C:\\Users\\ren\\Desktop\\reggaeton_referencia.mp3"
|
||||
)
|
||||
Expected: {
|
||||
"reference": "C:\\Users\\ren\\Desktop\\reggaeton_referencia.mp3",
|
||||
"production_type": "from_reference",
|
||||
"matched_samples": [...],
|
||||
"similarity_score": 0.85,
|
||||
"tracks_created": [...]
|
||||
}
|
||||
```
|
||||
|
||||
### Paso 3: Generar desde referencia (alternativa con pipeline completo)
|
||||
```
|
||||
Command: generate_from_reference(
|
||||
reference_audio_path="C:\\Users\\ren\\Desktop\\reggaeton_referencia.mp3"
|
||||
)
|
||||
Expected: {
|
||||
"reference": "...",
|
||||
"tracks": [...],
|
||||
"matched_samples": [...],
|
||||
"similarity_scores": {...}
|
||||
}
|
||||
```
|
||||
|
||||
El sistema analiza la referencia, encuentra samples similares en la libreria, y genera una produccion que coincide con las caracteristicas sonicAs de la referencia.
|
||||
|
||||
---
|
||||
|
||||
## Consejos de Produccion
|
||||
|
||||
1. **Siempre empezar con `health_check()`** - Si el sistema no esta sano, nada funcionara correctamente.
|
||||
|
||||
2. **Analizar la libreria una sola vez** - Los resultados se cachean. Solo usar `force_reanalyze=True` si se aniadieron samples nuevos.
|
||||
|
||||
3. **Usar `produce_reggaeton()` para produccion rapida** - Es el pipeline completo automatico.
|
||||
|
||||
4. **Humanizar despues de generar** - Las notas MIDI generadas son perfectas; aplicar `apply_human_feel()` con intensidad 0.2-0.5 para naturalidad.
|
||||
|
||||
5. **Sidechain es esencial en reggaeton** - El bass debe duckear con el kick para evitar conflicto de frecuencias graves.
|
||||
|
||||
6. **Verificar calidad antes de exportar** - `full_quality_check()` detecta problemas que pueden arruinar el mix final.
|
||||
|
||||
7. **Exportar stems para mezcla externa** - Permite ajustes finos en un DAW externo o con un ingeniero de mezcla.
|
||||
Reference in New Issue
Block a user