- 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
746 lines
20 KiB
Markdown
746 lines
20 KiB
Markdown
# 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.
|