2.3 KiB
Change Archive: reggaeton-composer
Archived: 2026-05-02 Status: Completed & Verified
Summary
Implemented a complete sample-driven reggaeton production system that generates valid FL Studio .flp projects from natural language prompts via CLI.
Files Changed
| File | Role |
|---|---|
src/selector/__init__.py |
SampleSelector with scoring by key/BPM/character |
src/composer/melodic.py |
Melodic generators: bass_tresillo, lead_hook, chords_block, pad_sustain |
src/flp_builder/schema.py |
Extended with MelodicNote, MelodicTrack, melodic_tracks in SongDefinition |
src/flp_builder/builder.py |
FLPBuilder extended for melodic_tracks + melodic patterns |
src/flp_builder/skeleton.py |
Bug fix: CACHED_SAMPLE_EVENTS → STRIP_EVENTS |
scripts/compose_track.py |
Main CLI entrypoint |
COMPONER.bat |
Windows batch launcher |
Verification Result
✅ 6/6 checks passed
Command: python scripts/compose_track.py --key Am --bpm 95 --bars 8 --output output/reggaeton.flp
Output: Valid .flp file, ~52KB
Key Decisions
-
Sample-first → pattern-first hybrid: Rather than generating MIDI from scratch, the system selects compatible samples and wraps them in AUdsty pattern loops before building the FLP, ensuring results sound polished even when no samples match perfectly.
-
Score-weighted selection: SampleSelector ranks candidates by weighted multi-factor scoring (key match: 40%, BPM proximity: 30%, character tag alignment: 30%).
-
Bug fix in skeleton.py:
CACHED_SAMPLE_EVENTSwas an undefined constant — corrected toSTRIP_EVENTSwhich correctly prevents duplicate sample events. -
CLI over library: Exposed as a standalone script (
compose_track.py) rather than a Python API, making it directly usable from shell/bat files.
Architecture
scripts/compose_track.py
└─ SampleSelector → selects best samples from data/libreria
└─ MelodicComposer → generates bass/lead/chords/pad patterns
└─ FLPBuilder → assembles .flp from skeleton + tracks + clips
SDD Cycle
- Proposal: reggaeton-composer
- Spec: reggaeton production system specs
- Design: technical design with scoring algorithm, pattern injection, FLP schema
- Tasks: 6 implementation tasks
- Verify: 6/6 checks passed
- Archive: This file