feat(player): 코드 컬러 보이싱 + 베이스 토닉 (화음 발성 2단계) - #52
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
라벨로만 존재하던 harmony.chordColor를 실제 동시 발성으로 배선한다. buildChordOffsets가 컬러 구성음을 선법 스케일에 스냅(단3도 선법에서 3도 자동 조정)하고, chartMapper가 accent/hold 노트에 베이스 토닉+화음 chordMidis를 부여하며(tap은 단선율 유지 — 과밀 방지), 오디오 엔진이 화음 음을 sine 패드(게인 x0.35, 길이 x1.6)로 얹는다. scaleConformance 게이트를 화음 주파수까지 검사하도록 강화. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b56591d771
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| offenders.push({ cueId: cue.cueId, pitchClass }); | ||
| const frequencies = [cue.frequencyHz, ...(cue.chordFrequencies || [])]; | ||
| for (const frequencyHz of frequencies) { | ||
| total += 1; |
There was a problem hiding this comment.
Keep the conformance ratio at the cue level
When accent cues contain several conforming chord voices, incrementing total for every frequency dilutes an invalid lead note and weakens the existing ≥95% gate in musicTheoryHarness.test.mjs. For example, ten accent cues with four chord tones each and one off-scale lead report 49/50 = 98% instead of the cue-level 9/10 = 90%, allowing a regression affecting 10% of cues to pass; mark a cue nonconformant when any of its sounding frequencies is outside the scale, or gate cue and voice ratios separately.
Useful? React with 👍 / 👎.
요약
음높이 배선(PR #51)의 예고된 후속 —
chordColor(add9/sus4/maj7 등)가 이제 실제로 울린다.스펙:
docs/superpowers/specs/2026-08-04-player-chord-voicing-design.mdchordMidis= [베이스 토닉(C2 대역), mid 옥타브 화음]. tap은 단선율 유지(과밀 방지).scaleConformance가 화음 주파수까지 검사 — 전 픽스처 95%+ 유지.검증
npm run qa전체(node 90 + UI 33 + 하니스 8) 통과, fingerprint 결정성 유지,build:extension통과.경계
player/+ 스펙 문서만 수정. 보이스리딩·음색 패치는 후속.🤖 Generated with Claude Code