feat(design): VoicingBrowser — switchable, playable voicings per chord (task D-21)

Guitar row (placeable GUITAR_SHAPES via ChordDiagram) + piano row (4
pianoVoicing styles via MiniPiano), chips + explicit play button per
voicing through chordAudio; single shared stop handle; graceful
guitar-empty cell (only add9@E across 168 quality x root cells).
voicings.js gains an export-only GUITAR_SHAPES line. Critic returned
once (rootless voicings badged lowest voice as root — rootPc now passed
through), PASS on scoped re-gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
vadimwit
2026-07-08 22:43:21 +01:00
parent 44d9c4f0e8
commit 3c903ad1d9
2 changed files with 298 additions and 0 deletions
+4
View File
@@ -561,3 +561,7 @@ export function getPianoTechniques(chordName) {
}
export { parseChord }
// D-21: expose the raw shape library for the VoicingBrowser (read-only consumer —
// it renders shapes via ChordDiagram and plays them via chordAudio.guitarShapeToNotes).
export { GUITAR_SHAPES }