Files
ableton-mcp-ai/docs/MELODY_GENERATOR_README.md

184 lines
3.9 KiB
Markdown

# Melody Generator README
## Modulo de generacion melodica procedural para reggaeton
**Version:** Sprint Granular v0.1.40
**Tareas:** T121-T135
**Archivo:** `AbletonMCP_AI/AbletonMCP_AI/MCP_Server/melody_generator.py`
---
## Proposito
El modulo `melody_generator.py` proporciona generacion proceduralde melodias MIDI para tracks armonicos en producciones de reggaeton. Se integra con `reference_listener` para deteccion automatica de tonalidad y genera melodias coherentes con la estructura del track.
---
## Caracteristicas Principales
### T121: Escalas y Tontericas
- Soporte para escalas menores (Am, Bm, Cm, Dm, Em, Fm, Gm, F#m)
- Mapeo completo de raices MIDI por tonalidad
- Cuantizacion automatica a escala
### T122-T124: Progresiones de Acordes
```python
REGGAETON_CHORD_PROGRESSION = ['Am', 'F', 'G', 'Em']
```
- Progresion clasica reggaeton Am-F-G-Em
- Soporte para variaciones modales
- Transiciones suaves entre secciones
### T125-T127: Generacion de Melodias
```python
@dataclass
class MidiNote:
pitch: int
start_beat: float
duration_beats: float
velocity: int = 80
```
- Notas MIDI estructuradas
- Control de duracion y velocidad
- Cuantizacion a beats
### T128-T130: Contorno Melodico
- Melodias ascendentes para builds
- Melodias descendentes para drops
- Contornos por seccion
### T131-T135: Integracion con Arrangement
- Melodias por seccion (intro, build, drop, break)
- Variaciones A/B para evitar repeticion
- Sincronizacion con estructura reggaeton 95 BPM
---
## API Principal
### `scale_notes(root_midi: int, octaves: int) -> List[int]`
Genera notas de la escala Am en el rango especificado.
**Args:**
- `root_midi`: Nota raiz en MIDI (default: A3 = 57)
- `octaves`: Numero de octavas (default: 2)
**Returns:**
- Lista de pitches MIDI en la escala
---
### `quantize_to_scale(pitch: int, scale_root: int) -> int`
Cuantiza un pitch MIDI a la nota mas cercana en la escala.
**Args:**
- `pitch`: pitch MIDI a cuantizar
- `scale_root`: raiz de la escala
**Returns:**
- Pitch MIDI cuantizado
---
### `MidiNote`
Dataclass para representar notas MIDI.
```python
note = MidiNote(
pitch=60,
start_beat=0.0,
duration_beats=0.5,
velocity=90
)
```
---
## Integracion con MCP
El melody generator se invoca desde `server.py` en la generacion de tracks:
```python
def generate_melody_for_section(
track_index: int,
key: str,
section: str,
bars: int = 4,
style: str = "reggaeton"
) -> List[MidiNote]:
...
```
---
## Tests
Los tests se encuentran en `tests/test_melody_generator.py`:
```powershell
python -m pytest "C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\AbletonMCP_AI\AbletonMCP_AI\MCP_Server\tests\test_melody_generator.py"
```
---
## Dependencias
- `reference_listener.py` - Deteccion de tonalidad
- `arrangement_intelligence.py` - Estructura por seccion
- `song_generator.py` - Orquestacion de generacion
---
## Ejemplo de Uso
```python
from melody_generator import MidiNote, scale_notes, quantize_to_scale
# Obtener notas de la escala Am
notes = scale_notes(root_midi=57, octaves=2)
# Cuantizar un pitch fuera de escala
pitch = 62 # D4 (fuera de Am)
quantized = quantize_to_scale(pitch, scale_root=57)
# Crear nota MIDI
note = MidiNote(
pitch=quantized,
start_beat=0.0,
duration_beats=1.0,
velocity=80
)
```
---
## Notas de Implementacion
1. **Tonalidad**: El modulo detecta automaticamente la tonalidad desde el reference_listener
2. **Estructura**: Respeta la estructura reggaeton definida en `arrangement_intelligence.py`
3. **Variacion**: Genera variaciones A/B para evitar repeticion
4. **Cuantizacion**: Siempre cuantiza a la escala detectada
---
## Roadmap
- [ ] T136: Integracion con chord progression avanzado
- [ ] T137: Melodias con glide/pitch bend
- [ ] T138: Melodias con arpregios rapidos
- [ ] T139: Melodias con call-and-response
---
*Maintained by: AbletonMCP-AI Team*
*Last updated: 2026-04-05*