Files
reaper-control/knowledge/genres/reggaeton_2009.json
renato97 3444006411 feat: pattern-based generators from real track analysis, RPP structure fixes, randomization
- Reverse-engineer drum patterns from 2 real reggaeton tracks with librosa
- Create patterns.py with extracted frequency data (kick/snare/hihat positions)
- Rewrite rhythm.py with pattern-bank generators (dembow, dense, trapico, offbeat)
- Rewrite melodic.py with section-aware generators and humanization
- Add weighted random sample selection in SampleSelector (top-5 pool)
- Add generate_structure() with randomized templates and energy variance
- Fix RPP structure: TEMPO arity (3→4 args), string quoting for empty strings
- Rewrite quick_drumloop_test.py with correct REAPER ground truth format
- Add scripts/analyze_examples.py for reverse engineering audio tracks
- Add --seed argument for reproducible generation
- 72 tests passing
2026-05-03 16:08:07 -03:00

189 lines
6.9 KiB
JSON

{
"genre": "reggaeton",
"era": "2009",
"display_name": "Reggaeton 2009 (Era de Oro)",
"description": "Reggaeton comercial 2006-2010. Daddy Yankee, Wisin y Yandel, Don Omar, Tito El Bambino, Hector El Father. Beat dembow con 808, piano stabs, brass hits. AGGRESSIVE groove, dense drum loops, GAP/BREAK section technique.",
"bpm": {
"min": 88,
"max": 102,
"default": 99
},
"keys": ["Am", "Dm", "Gm", "Cm", "Em", "Fm", "Bbm"],
"time_signature": [4, 4],
"ppq": 96,
"structure": {
"template": "extracted_real_tracks",
"templates": {
"extracted_real_tracks": [
{"name": "build", "bars": 16, "energy": 0.6},
{"name": "verse", "bars": 2, "energy": 0.35},
{"name": "build", "bars": 47, "energy": 0.65},
{"name": "verse", "bars": 1, "energy": 0.35},
{"name": "gap", "bars": 1, "energy": 0.05},
{"name": "drop", "bars": 2, "energy": 1.0},
{"name": "build", "bars": 5, "energy": 0.7},
{"name": "break", "bars": 2, "energy": 0.05},
{"name": "drop", "bars": 1, "energy": 0.95},
{"name": "build", "bars": 12, "energy": 0.65},
{"name": "verse", "bars": 2, "energy": 0.35},
{"name": "build", "bars": 8, "energy": 0.6}
],
"standard": [
{"name": "intro", "bars": 4, "energy": 0.3},
{"name": "verse", "bars": 8, "energy": 0.35},
{"name": "chorus", "bars": 8, "energy": 0.95},
{"name": "verse", "bars": 8, "energy": 0.35},
{"name": "chorus", "bars": 8, "energy": 0.95},
{"name": "bridge", "bars": 8, "energy": 0.4},
{"name": "chorus", "bars": 8, "energy": 0.95},
{"name": "outro", "bars": 8, "energy": 0.35}
]
},
"gap_break_energy_contrast": 50.0,
"dembow_positions": [0, 4, 8, 11, 12],
"note": "GAP/BREAK technique: 1-2 bars near-silence (-50dB) followed by loud DROP (+6dB) creates massive contrast. Real tracks use this extensively."
},
"pattern_banks": {
"dembow_classico": "extracted from 99.4 BPM track (Ejemplo 1)",
"perreo": "aggressive variant with extra kicks at beat 1.5& and 2",
"trapico": "half-time feel, kicks at beats 1 and 3 only",
"dense": "full drum loop density, highest hit frequency positions"
},
"roles": {
"drums": {
"description": "DENSE drum loop (NOT sparse kick-snare). Kicks at positions 4, 11, 8, 12, 9 — the dembow IS there but buried in a full loop. Pattern bank: kick_pattern_bank_notes",
"pattern_type": "drum_loop",
"preferred_plugins": ["FPC", "Fruity DrumSynth Live", "DirectWave", "Kontakt 7"],
"midi_channel": 0,
"mixer_slot": 0,
"notes_template": "drum_loop_dembow",
"bank": "dembow_classico"
},
"bass": {
"description": "808 sub bass. Section-aware: follows section energy. Tresillo grouping in drop/chorus, sparse in break/gap.",
"pattern_type": "808_follow_kick",
"preferred_plugins": ["Serum 2", "Transistor Bass", "Sytrus", "3x Osc", "ravity(S)"],
"midi_channel": 1,
"mixer_slot": 1,
"octave": 2,
"notes_template": "bass_tresillo_section_aware"
},
"harmony": {
"description": "Piano stabs in offbeats. Closed triads. Section-aware velocity.",
"pattern_type": "piano_stabs",
"preferred_plugins": ["FL Keys", "Nexus2", "Kontakt 7", "Sakura", "Pigments"],
"midi_channel": 2,
"mixer_slot": 2,
"notes_template": "piano_stabs_section_aware"
},
"lead": {
"description": "Brass hit o melodia sintetizada. Hook syncopation on dembow positions (4, 11, 12). Section-aware density.",
"pattern_type": "brass_hook",
"preferred_plugins": ["Serum 2", "Omnisphere", "Harmor", "Electra", "ravity(S)"],
"midi_channel": 3,
"mixer_slot": 3,
"notes_template": "lead_hook_section_aware"
},
"pad": {
"description": "Pad atmosferico sutil para llenar el fondo. Sustained chord tones.",
"pattern_type": "sustained_pad",
"preferred_plugins": ["Harmor", "Serum 2", "Omnisphere", "FLEX", "Pigments"],
"midi_channel": 4,
"mixer_slot": 4,
"notes_template": "pad_sustained"
},
"perc": {
"description": "Percusion adicional: shaker, congas, timbales.",
"pattern_type": "latin_perc",
"preferred_plugins": ["FPC", "Fruity DrumSynth Live", "DirectWave"],
"midi_channel": 5,
"mixer_slot": 5,
"notes_template": "latin_perc"
}
},
"chord_progressions": [
{
"name": "clasica_menor",
"chords": ["Am", "G", "F", "G"],
"beats_per_chord": 4,
"popularity": 0.9
},
{
"name": "tension",
"chords": ["Am", "F", "C", "G"],
"beats_per_chord": 4,
"popularity": 0.7
},
{
"name": "oscura",
"chords": ["Dm", "C", "Bb", "C"],
"beats_per_chord": 4,
"popularity": 0.6
},
{
"name": "romantica",
"chords": ["Am", "Dm", "G", "C"],
"beats_per_chord": 4,
"popularity": 0.75
},
{
"name": "nocturna",
"chords": ["Em", "Am", "Dm", "G"],
"beats_per_chord": 4,
"popularity": 0.5
}
],
"mix": {
"bass_heavy": true,
"sidechain_bass_to_kick": true,
"reverb_on_snare": true,
"reverb_on_lead": true,
"typical_lufs": -8,
"master_chain": ["Pro-Q 3", "Pro-C 2", "Pro-L 2"],
"per_role": {
"drums": {
"effects": ["Fruity Parametric EQ 2", "Fruity Compressor"],
"volume_db": -3,
"stereo": 0
},
"bass": {
"effects": ["Fruity Parametric EQ 2", "Saturn 2"],
"volume_db": -2,
"stereo": 0,
"hp_filter_hz": 20,
"lp_filter_hz": 200
},
"harmony": {
"effects": ["Pro-Q 3", "Pro-C 2"],
"volume_db": -6,
"stereo": -10
},
"lead": {
"effects": ["Pro-Q 3", "Pro-R 2", "Saturn 2"],
"volume_db": -5,
"stereo": 15
},
"pad": {
"effects": ["Pro-Q 3", "Pro-R 2"],
"volume_db": -10,
"stereo": 30
}
}
},
"reference_tracks": [
"Gasolina - Daddy Yankee",
"Rakata - Wisin y Yandel",
"Danza Kuduro - Don Omar",
"El Amor - Tito El Bambino",
"Rumor de Guerra - Hector El Father",
"Pose - Daddy Yankee",
"Llamé Pa Verte - Wisin y Yandel"
],
"analysis_notes": {
"key_finding": "The dembow IS present (positions 0, 4, 8, 11, 12 high across all instruments) but it's buried in a DENSE drum loop, NOT the textbook sparse kick-snare pattern.",
"kick_insight": "Position 4 (beat 2) is the DENSEST kick hit — not beat 1. Real tracks have kicks on almost EVERY 16th note position.",
"gap_break_technique": "1-2 bars near-silence (-50dB) followed by loud DROP (+6dB over baseline) creates massive contrast. This is a signature reggaetón technique.",
"filter_sweeps": "Spectral centroid drops detected in breakdowns, confirming HPF filtering in intro/filtered sections."
}
}