Commit Graph

41 Commits

Author SHA1 Message Date
vadimwit 4b0f0c84a7 feat(audio): Web Audio voicing playback engine src/lib/chordAudio.js (task L-20)
playVoicing (piano.js absolute-note space, strummed, soft envelope),
guitarShapeToNotes (tab lists / open frets / movable rootStr+offsets via
the ChordDiagram convention), playChord pc fallback, stopAll. Dedicated
lazy AudioContext; zero coupling to the detection pipeline; mic-feedback
caveat documented. Critic PASS (19/19 independent pitch-math checks).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 17:01:40 +01:00
vadimwit 4727645bb9 fix(piano): dedupe duplicate absolute notes in pianoVoicing (task L-13)
A forced rootless sus2 collided the suspended-2nd and synthesized 9th onto one key
(notes [26,26,31]). Dedupe at the single funnel point ([...new Set(placed)]); pcs/bass
derived from the deduped array. No-op on default/chain path (L-11 render unaffected).
Critic: Set merges only identical absolute integers (same key) so no needed note is lost.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-16 11:00:43 +01:00
vadimwit fe49af36ac feat(piano): MiniPiano gains additive voicing prop for the Jam Guide (task D-10)
MiniPiano now dispatches: with a voicing={pianoVoicing(...)} prop it renders the
{notes,pcs,bass,style,label} on a 2-3 octave keyboard (root accent, bass amber-ringed,
thumb/full); without it, the legacy {rootPc,lh,rh} path is byte-unchanged so
ChordDetailModal + ExplorePanel render identically. Critic PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-16 11:00:40 +01:00
vadimwit e2a1552843 feat(piano): pure piano voicing resolver src/lib/piano.js (task L-10)
pianoVoicing({rootPc,quality},opts?) -> {notes,pcs,bass,style,label}: shells (1-3-7),
rootless A/B (3-5-7-9 / 7-9-3-5), root-position; opts.prev / pianoVoicingChain thread a
loop with octave voice-leading optimization. Helpers: hasTrueSeventh, voicingToneSet.
Pure, imports only theory.js. Critic PASS: 56 voicings (14 qualities x 4 styles), 0 wrong
notes, deterministic. New unimported module (no frontend impact yet) — D-10 renders it,
L-11 wires the piano tab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 19:05:44 +01:00
vadimwit 53d78ce30f feat(jamguide): tap a Roadmap station -> guide tones on the main Fretboard (task D-03)
Completes the flagship Roadmap feature. App.jsx lifts a jamFocusChord state (additive,
+10/-0, audio callbacks/refs untouched); JamGuide emits the tapped station's {rootPc,
quality} via onFocusChord; Fretboard halos the 3rd/7th with a degree badge.

Also fixes root-cause guideTones: hasSeventh now keys on real m7/M7 (interval 10/11),
not length>=4 -- so add9/maj6/min6 no longer badge their 5th/6th as a '7'. Fretboard
badge derives its label from the actual interval (belt-and-suspenders). RoadmapTrack
lane self-corrects. Critic returned-then-PASS on re-gate; build + smoke + validator green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 13:05:21 +01:00
vadimwit e737e0c0b2 kb: add pop guitar pack (task P-02)
5 pop progressions x 2 plays: axis (I-V-vi-IV), '50s doo-wop, Canon pop line,
Mixolydian bVII, minor loop (i-bVI-bIII-bVII). Open campfire + movable/barre play each;
sus taught as fills (chords voiced plain). KB now 10 styles / 50 progressions / 100 plays.
Critic PASS (voicings hand-verified, no duplicate ids).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 08:34:20 +01:00
vadimwit 71d5e445c7 kb: add gospel guitar pack (task P-01)
5 gospel progressions x 2 plays: cascading 2-5-1s, 6-2-5-1 + plagal Amen, IV-#iv°7-I
passing dim, modern sus/9th praise vamp, iii-vi back-door. Shell/sus/9th voicings, all
pitch-class-verified. Registered in kb/index.js. Validator: 9 styles / 45 progressions /
90 plays. Critic PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:54:44 +01:00
vadimwit 61abf8a513 feat(jamguide): Roadmap Jam Guide panel — shell, App mount, live assembly (tasks L-02, D-02)
Bottom-dock panel: collapsed header -> ~70vh, instrument+style tabs from KB registry,
matcher/position via match.js. Assembles RoadmapTrack + per-station ChordDiagram
thumbnails; reconciles playhead detected-loop index -> canonical KB station via
match.rotation; tap-to-enlarge voicings; auto-scroll active station; narrow reflow.
App.jsx change is additive (+10/-0) — audio callbacks/refs untouched. Critic PASS all 4.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:40:45 +01:00
vadimwit 66ccc90fdd feat(jamguide): ChordDiagram — KB guitar-shape SVG, key-aware fret placement (task D-01b)
Renders movable {rootStr,offsets} and open {frets,onlyRoot} KB shapes; computes movable
base fret from chord rootPc in standard tuning (E-shape A7 -> fret 5); root in accent
purple; thumb/full sizes; graceful '-' fallback for unplaceable shapes. Critic PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:40:44 +01:00
vadimwit 5bd48da5ac feat(jamguide): RoadmapTrack — improv highway with guide tones, VL rails, playhead (task D-01)
Horizontal stations (loop chords), 3rd/7th guide-tone lane (honest 5th fallback for
triads), solo-scale label, voice-leading rails (7->3) between stations + wrap-around,
playhead + beat grid, lookahead glow on NEXT. Pure component off props + theory.js.
Critic PASS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:40:43 +01:00
vadimwit d6fa7c9598 feat(theory): guideTones, voiceLeadingPairs, soloScale for Roadmap (task L-01b)
Additive pure exports: guideTones(rootPc,quality) -> 3rd/7th pcs (triad fallback
flagged hasSeventh:false); voiceLeadingPairs(a,b) -> nearest-tone 7->3 rails;
soloScale(quality,mode) -> default solo scale (dom7->mixo, m7->dorian, maj7->ionian,
half-dim->locrian, dom7-in-minor->phrygian dominant). Critic PASS: ii-V-I yields
C->B and F->E rails; no existing export changed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:25:21 +01:00
vadimwit 51358b2b56 feat(match): rotation-invariant loop matcher + findLoopPosition (task L-01)
New src/lib/match.js: matchLoopToProgression (degree-relative, rotation-invariant,
quality tie-break, returns id/style/rotation for playhead alignment), findLoopPosition,
buildLoopIndex, shared numeral helper. ProgressionBanner refactored to import
findLoopPosition (behaviour-preserving). Critic PASS: build green, banner identical.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 00:25:20 +01:00
vadimwit e180f85289 kb: add R&B/neo-soul guitar pack
5 progressions (mediant circle, Stevie 6-2-5-1 with 9sus V, maj7
two-chord vamp, D'Angelo Dorian vamp, gospel Amen IV-iv-I) x 2 plays:
m9 slides, m11 colour sets, embellished Mayfield/Hendrix barres,
Dilla-feel barre wash. Comping documents pluck-and-mute, the neo-soul
slide, hammer vocabulary, Cropper 6ths, the Dilla feel. Sourced
Mayfield figures (standard-tuning adaptation flagged). Validator and
build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 19:04:17 +01:00
vadimwit 46d30935c9 kb: add country/folk guitar pack
5 progressions (8-bar country I-IV-V, Wagon Wheel folk axis, ragtime
I-VI7-II7-V7 circle, Rising Sun 6/8 climb with corrected changes,
bluegrass I-IV-I-V) x 2 plays: open G/C-family boom-chick sets with
capo strategy, anchor-finger folk grips, barre fallbacks. Comping
documents boom-chick, Carter bass runs, Travis picking, train beat,
waltz. Sourced Lester Flatt G-run licks. Research corrections honoured
(Rising Sun is i-III-IV-VI, not Andalusian; ragtime is the full VI7
circle). Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 18:01:19 +01:00
vadimwit c7f9c9571f kb: add reggae guitar pack
5 progressions (circular I-IV-V, two-chord vamp, i-bVII minor vamp,
No Woman No Cry I-V6-vi-IV, verified rocksteady I-ii-iii-ii) x 2
plays: top-3 skank triads, Wailers middle-string set, top-4 partials,
quality-neutral 5+R dyads. One-drop/double-skank/ska/bubble grids
documented. Research flags honoured (NWNC is major-key; Get Up Stand
Up stored as near-one-chord; doo-wop claim replaced with verified
Queen Majesty changes). Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 16:58:23 +01:00
vadimwit ecfa7d0a65 kb: add funk guitar pack
5 vamps (one-chord I9 with quality motion 9-13-9sus4, Dorian i7-IV7,
disco ii-V loop, I9-bVII9 figure, EWF smooth maj7 loop) x 2 plays:
Nolen 9th cycle, 7#9 grit, Chameleon pair, m11 barre, Le Freak grips,
top-4 shimmer. 16th-grid comping patterns documented (scratch, chika,
JB cell, Sex Machine, Rodgers selective). Sourced Cissy Strut lick.
Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:59:40 +01:00
vadimwit de0071f7bf kb: add bossa nova guitar pack
5 progressions (Ipanema A-section, minor ii-V-i with m6 tonic, Blue
Bossa 16-bar, One Note Samba chromatic chain, Corcovado descent) x 2
plays on alternating root-string sets. Joao Gilberto rhythm layers
documented (thumb surdo + syncopated block, two-bar tied pattern,
partido alto contrast), improv map, sourced Ipanema melodic cell.
Validator caught 6 quality mismatches (6/9 grips on maj7/min7 steps)
- content fixed, gate untouched. Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:02:33 +01:00
vadimwit d32401af66 kb: add rock guitar pack; schema gains declared omit3 (power chords)
5 progressions (Mixolydian vamp, I-IV-V, minor descent, axis, Dorian
riff cell) x 2 plays: open-chord Malcolm hits, second-guitar triads,
Keith sus figure, power-chord chug, Police add9 arpeggios, thumb-over
embellishments. omit3 is a declared omission like rootless - the
pitch-class check still applies. Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:01:15 +01:00
vadimwit ef538787ee kb: add blues guitar pack
5 forms (standard/quick-change 12-bar, 8-bar, minor blues, turnaround
cycle) x 2 plays each: barre shuffle, Texas 9th stabs, Chicago tritone
shells, minor m7 + 7#9 climax. 4 named comping patterns, improv rules,
2 sourced licks. Validator and build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:58:12 +01:00
vadimwit 7181a138e4 kb: bootstrap foundation + jazz guitar gold standard
SCHEMA.md authoring contract, validate-kb.mjs quality gate (pitch-class
verification of shapes against chord qualities), registry, and the jazz
style: 5 progressions x 2 guitar plays (shells + drop-2), comping
rhythms, improv guidance, sourced licks. Validator and vite build green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:46:08 +01:00
vadimwit f583979b3e loop station 2026-03-20 01:03:43 +00:00
vadimwit 8cd9b01941 edu panel 2026-03-18 01:26:51 +00:00
vadimwit 4a45e82abe Merge branch 'main' of https://github.com/whattheflat/whattheflat 2026-03-17 22:41:35 +00:00
vadimwit b94f79f408 additions formatting 2026-03-17 22:41:12 +00:00
James Twose 2ce6d1e244 adding mic selection in the settings 2026-03-14 20:29:48 +00:00
vadimwit dec0fc1595 restructuring and layout improvements + save config locally 2026-03-10 12:06:29 +00:00
vadimwit b989238373 debugview and loop improvements 2026-03-10 00:21:40 +00:00
vadimwit 3aadf1afbb Bass fretboard addition 2026-03-09 22:47:41 +00:00
vadimwit 22b8f1fe04 chord recognition improvements 2026-03-08 01:38:09 +00:00
vadimwit 3a7b6b24e0 add mono color 2026-03-07 19:13:43 +00:00
vadimwit 7a108ad0e2 additions for debug view and better formatting and sound fine tuning 2026-03-06 15:00:40 +00:00
vadimwit c08cd619f7 additions for live chroma and sound improvements 2026-03-06 14:07:32 +00:00
vadimwit f133abfdee two-row layout: chord+bpm banner / fretboard+progressions side by side 2026-03-06 00:38:47 +00:00
vadimwit 0eb00784a6 merge chord/key/progressions into banner, remove SafeNotes/ChordDisplay/ProgressionSuggestions panels 2026-03-06 00:20:20 +00:00
vadimwit ca6b901bc8 compact layout, instrument select near fretboard, collapsible tuner, chord sensitivity tuning 2026-03-06 00:08:15 +00:00
vadimwit d3a2840454 new song button, chord-boosted key detection, double-confirm key changes 2026-03-05 23:25:40 +00:00
vadimwit cfa7b877f6 add piano view with instrument toggle 2026-03-05 22:58:32 +00:00
vadimwit 4ed382393e bugfix 2026-03-05 22:54:35 +00:00
vadimwit 1697a14716 remove beginner/advanced mode, fix D7 detection, history on key lock, stable loop display 2026-03-05 22:51:42 +00:00
vadimwit 8f96afe015 upgrade to React 19, Vite 7, Tailwind 4 2026-03-05 22:12:11 +00:00
vadimwit 850e87f90f restructure to root, add tuner from jms 2026-03-05 21:54:32 +00:00