feat: drumloop-first v2 — scored selection, WAV preference, no vocals

- Score drumloops by key_confidence + onset_density + duration + balance + format
- Prefer WAV over MP3 (lossless > lossy)
- 6 tracks only: Drumloop, Bass, Chords, Lead, Clap, Pad
- Clap ONLY in chorus+verse (dembow on beats 2, 3.5)
- Bass tresillo filtered by kick-free zones
- Chords i-VI-III-VII on downbeats
- Lead pentatonic, avoids transients, chord tones on strong beats
- Master chain: Pro-Q 3 → Pro-C 2 → Pro-L 2
- 90 tests passing, 18 plugins, clean RPP output
This commit is contained in:
renato97
2026-05-03 20:07:00 -03:00
parent a2713abd40
commit 7729d5f12f
4 changed files with 2439 additions and 432 deletions

View File

@@ -157,7 +157,7 @@ class TestDrumloopFirstTracks:
def test_all_tracks_created(self, tmp_path):
output = _mock_main(tmp_path)
content = output.read_text(encoding="utf-8")
for name in ("Drumloop", "Bass", "Chords", "Melody", "Vocals", "Clap", "Pad", "Reverb", "Delay"):
for name in ("Drumloop", "Bass", "Chords", "Lead", "Clap", "Pad", "Reverb", "Delay"):
assert name in content, f"Expected track '{name}' in output"
def test_clap_on_dembow_beats(self, tmp_path):