Skip to content

feat(player): 코드 컬러 보이싱 + 베이스 토닉 (화음 발성 2단계) - #52

Merged
redsunjin merged 2 commits into
mainfrom
feat/player-chord-voicing
Aug 5, 2026
Merged

feat(player): 코드 컬러 보이싱 + 베이스 토닉 (화음 발성 2단계)#52
redsunjin merged 2 commits into
mainfrom
feat/player-chord-voicing

Conversation

@redsunjin

Copy link
Copy Markdown
Owner

요약

음높이 배선(PR #51)의 예고된 후속 — chordColor(add9/sus4/maj7 등)가 이제 실제로 울린다.
스펙: docs/superpowers/specs/2026-08-04-player-chord-voicing-design.md

  • buildChordOffsets(chordColor, mode): 컬러 구성음을 선법 스케일에 스냅 — dorian/phrygian에서 3도가 자동으로 단3도, maj7의 11이 dorian에선 10으로 조정. 스케일 적합 게이트가 구조적으로 유지된다.
  • chartMapper: accent·hold 노트에만 chordMidis = [베이스 토닉(C2 대역), mid 옥타브 화음]. tap은 단선율 유지(과밀 방지).
  • replayAudioEngine: 화음 음마다 sine 오실레이터 추가(게인 ×0.35, 길이 ×1.6 — 패드 느낌). merge/cadence 순간에 베이스+화성이 깔린다.
  • 게이트 강화: scaleConformance가 화음 주파수까지 검사 — 전 픽스처 95%+ 유지.

검증

  • 신규 4건(구성음 스냅, chordMidis 부여/단선율 보존, 오실레이터 수, 주파수 변환) 포함 npm run qa 전체(node 90 + UI 33 + 하니스 8) 통과, fingerprint 결정성 유지, build:extension 통과.

경계

player/ + 스펙 문서만 수정. 보이스리딩·음색 패치는 후속.

🤖 Generated with Claude Code

selimDGAX and others added 2 commits August 4, 2026 19:32
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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@redsunjin
redsunjin merged commit 69520be into main Aug 5, 2026
4 checks passed
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.

2 participants