feat(tide-table): stem-aware emotion_timeline — fuse per-stem CLAP reads
Adds analyze_stems(): separates via foundry_stems (vocals/bass/drums/other), scores each stem on a shared window grid, fuses V/A by stem role (valence rides vocals+other, arousal rides drums+bass+mix), and flags vocal presence per window as a structure cue. Refactor: shared _finalize (smooth→relabel→section→summary) now serves both whole-mix analyze() and analyze_stems(); embed_at/window_grid/windows helpers extracted. FINDING (Bohemian Rhapsody, mix vs 4-stem): stem-aware gives a cleaner valence track + vocal-presence sections (88% vocal; outro correctly reads calm, not 'cold'), BUT the current arousal fusion UNDER-weights the mix and softened the hard-rock peak that the whole-mix caught (tense A+0.77 → hypnotic A+0.55) — that section's intensity is a full-mix gestalt isolated stems lose. So fusion weights need empirical tuning; the ground-truth corpus (next) drives it. Both modes run end-to-end (#89).
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment