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

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 cuantizar
  • scale_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 tonalidad
  • arrangement_intelligence.py - Estructura por seccion
  • song_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

  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