Guitar Atlas
Interactive music theory visualization tool for guitarists — scales, modes, and chords synchronized across a chromatic circle, circle of fifths, and fretboard.
Interactive music theory tool for guitarists. Explore scales, modes, and chords across three synchronized views — chromatic circle, circle of fifths, and a full 15-fret guitar fretboard.
What It Does #
- Select any tonic, scale family, and mode — all three views update instantly
- Click any chord degree to highlight its tones across the fretboard and circles
- 8 scale families: Diatonic, Harmonic Minor, Jazz Minor, Pentatonic, Diminished, Whole Tone, Minor Blues, Major Blues
- 23+ tunings across guitar, bass, ukulele, banjo, violin, cello, and mandolin
- MIDI input support via Web MIDI API
- Sound playback with acoustic piano samples on every interaction
- Shareable permalink encodes full app state
How It Works #
All state lives in a single AppState object managed by useReducer. Every interaction dispatches an action, and the reducer produces a new state that flows through a three-phase computation pipeline:
- Scale membership — maps tonic + intervals → note names using enharmonic spelling
- Chord analysis — derives chord quality, Roman numerals, and chord tones per degree
- UI bitmasks — overlays manual toggles and MIDI highlights
The output is NoteNode[12] — 12 objects, one per chromatic semitone — that drive every visual. No component holds music logic.
Tech Stack #
- React 19 + TypeScript 5
- Vite 6
- Raw SVG rendering (no D3 or charting library)
useReducer+ Context for state- Web MIDI API
smplrfor audio playback- Vitest + Biome
Design Notes #
The fretboard and circles share the same NoteNode[] data source with no intermediate transformation — what you click in the circle is exactly what lights up on the neck. Enharmonic spelling is handled by a dedicated algorithm that resolves correct note names (Bb vs A#, Fb vs E) based on the active key signature, so the display always matches standard music notation.