Skip to content

feat(roles): sustained vs choppy articulation detection#573

Open
seonghobae wants to merge 1 commit into
developfrom
feat/articulation-character
Open

feat(roles): sustained vs choppy articulation detection#573
seonghobae wants to merge 1 commit into
developfrom
feat/articulation-character

Conversation

@seonghobae

Copy link
Copy Markdown
Collaborator

What

Sustained-vs-choppy articulation detection per stem: onset density over ACTIVE audio (onset_detect + RMS activity gating) and duty cycle → character "sustained" / "choppy" / "mixed" with documented thresholds, plus the raw metrics.

Why

Domain-model groove guidance requires "sustained versus choppy roles" — whether a part holds long notes or plays punctuated figures. Nothing implemented it.

Tests

Deterministic synthetic stems: continuous sine → "sustained"; 4/s staccato bursts → "choppy"; 1s-notes-with-gaps → "mixed" band; silent/empty → safe default. 100% coverage on the module; full suite 443 passed; ruff/format/mypy clean.

🤖 Generated with Claude Code

The rehearsal domain model requires groove guidance including 'sustained
versus choppy roles'. Per stem: onset density over active audio (librosa
onset_detect + RMS activity gating) and duty cycle -> character 'sustained'
(duty>0.6, <1.5 onsets/s), 'choppy' (>=3/s or duty<0.35), else 'mixed'.
Safe failure on silent/empty stems. 100% coverage; full suite 443 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RjGVapDZ3k7V7zKYk16P4C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant