Skip to content

fix(generators): interval-aware power chord — the drop-tuning barre (v0.1.14) - #8

Closed
ChrisBeWithYou wants to merge 2 commits into
feat/view-dropdownfrom
feat/drop-barre
Closed

ChrisBeWithYou wants to merge 2 commits into
feat/view-dropdownfrom
feat/drop-barre

Conversation

@ChrisBeWithYou

Copy link
Copy Markdown
Collaborator

Stacked on #7 (→ #6 → #5). Review only this diff.

What

powerChordGrip (the movable root+5th[+octave] grip behind strum_comp's 5/5oct qualities) hardcoded the standard-4ths offsets (+2 on s1/s2). In every tuning where s0→s1 is a fifth — drop-D/C/B, drop-A, the bass drops, DADGAD, Open D — it sounded root + major 6th instead of root + 5th. Real wrong pitch, found by guitar-pedagogy while speccing the drop-barre primitive metal-idiom flagged.

Fix: offsets computed by pitch against the actual open intervals. Drop tuning → the grip collapses to the iconic one-finger same-fret barre {s0:F, s1:F, s2:F} = root·5th·octave. Standard stays {F, F+2, F+2} byte-identical.

Pedagogy verdicts (guitar-pedagogy, 2026-07-12)

  • Gate on the interval test, not a drop-name list — checked every preset: fires on all drops + DADGAD/Open D with zero misfires; DADGAD/Open D are true positives (the barre is the real idiomatic voicing there).
  • Default, not opt-in — in a drop tuning the barre is the only correct voicing.
  • fg 1 index barre comes free: templateFromPositions fingers same-fret rows as a shared-finger barre by construction.
  • F=0 = valid open voicing; negative-fret guard bails on hostile custom tunings.
  • buildPedalRiffExercise's own power chord (s1/s2/s3, all 4ths in standard and drop) was already correct — untouched.

Also in this PR (first commit)

Harness contamination fix: the v0.1.11 host-settings sync adopts host config on an empty localStorage (fresh install) — but smoke pages always boot empty, and suites' panel drives write through to the persistent host config, so suites could boot into the previous suite's instrument (this made smoke-strings rows 3/4 flip to bass mid-run, and is the likely mechanism behind the earlier contained-verifier/level-gate-async concurrency flakes). Every suite + driver.mjs now seeds the L1 store via addInitScript → deterministic local-wins boot, self-healing host config.

Verification

  • New smoke-strings row (14): drop-D 5oct = same-fret barre sounding root·5th·octave (was root·M6·octave); standard grip unchanged.
  • Full smoke 16/19 — same 3 pre-existing base reds; former flakers green.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MS2YFb6UUSwJVV6CmEa25i

ChrisBeWithYou and others added 2 commits July 12, 2026 16:28
…ination)

The v0.1.11 host-settings sync treats an empty localStorage as a fresh
install and ADOPTS host config on boot. Smoke pages always boot with empty
localStorage, and any suite whose panel drives dispatch real change events
WRITES THROUGH to the persistent host config - so a later suite (or a later
run) could boot into whatever instrument the previous one left (the panel
flipped to bass mid-suite; smoke-strings rows 3/4 went red, and this is the
likely mechanism behind the contained-verifier/level-gate-async flakes under
the parallel run-all).

Fix: every suite (and driver.mjs) seeds localStorage['virtuoso.instrument']
with the 6-string-standard default via addInitScript BEFORE page scripts run.
The boot reconcile then takes the local-wins path - deterministic panel state
regardless of suite ordering, and each boot heals the host config for the
suites after it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MS2YFb6UUSwJVV6CmEa25i
…rre (v0.1.14)

powerChordGrip hardcoded the standard-4ths offsets (+2 on s1/s2), so in every
tuning where the s0->s1 interval is a FIFTH (drop-D/C/B, drop-A, the bass
drops, DADGAD, Open D) the '5'/'5oct' grip sounded root + MAJOR 6TH instead of
root + 5th - a real wrong pitch on the strum_comp/pickStrumGrip path.

Fret offsets are now computed BY PITCH against the actual open intervals:
in a drop tuning the grip collapses to the iconic one-finger SAME-FRET barre
{s0:F, s1:F, s2:F} = root-5th-octave; standard tuning keeps {F, F+2, F+2}
unchanged. Guitar-pedagogy 2026-07-12: gate on the interval (DADGAD/Open D are
TRUE positives - the barre is the idiomatic voicing there), apply by default
(the barre is the only correct voicing in a drop tuning), F=0 is a valid open
voicing; templateFromPositions already fingers a same-fret row as a shared
index barre (fg 1) by construction. Negative-fret guard bails on hostile
custom tunings. (buildPedalRiffExercise's own s1/s2/s3 power chord was already
interval-correct - untouched.)

Smoke: smoke-strings row (14) - drop-D 5oct = same-fret barre sounding
root-5th-octave; standard grip unchanged. Full run 16/19 (the 3 pre-existing
base reds); the contained-verifier/level-gate flakes stayed green with the
suite seeding from the previous commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MS2YFb6UUSwJVV6CmEa25i
@coderabbitai

coderabbitai Bot commented Jul 12, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: ae4a032c-7711-4749-baf0-6cd7e477d692

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/drop-barre

Comment @coderabbitai help to get the list of available commands.

@ChrisBeWithYou

Copy link
Copy Markdown
Collaborator Author

Landed on virtuoso-dev via the 2026-07-14 batch integration (v0.2.2), not a GitHub merge event — these branches predate the main→dev reconcile (Byron's Gold-rung #11 took the line to 0.2.x) and were rebased, so their head SHAs don't match the commits that reached dev. All content is verified present in dev (incl. #5's 62fc72e tuningMidis, cherry-picked as f0c78c6). Closing to avoid a duplicate re-merge; the work ships to main via the dev→main PR #4 line. — automated

@ChrisBeWithYou
ChrisBeWithYou deleted the feat/drop-barre branch July 16, 2026 12:45
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