3.9 KiB
3.9 KiB
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
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
@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 cuantizarscale_root: raiz de la escala
Returns:
- Pitch MIDI cuantizado
MidiNote
Dataclass para representar notas MIDI.
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:
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:
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 tonalidadarrangement_intelligence.py- Estructura por seccionsong_generator.py- Orquestacion de generacion
Ejemplo de Uso
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
- Tonalidad: El modulo detecta automaticamente la tonalidad desde el reference_listener
- Estructura: Respeta la estructura reggaeton definida en
arrangement_intelligence.py - Variacion: Genera variaciones A/B para evitar repeticion
- 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