Master music theory with an interactive chord visualization tool. Explore chords, voicings, progressions, and the CAGED system on piano and guitar.
π Live Demo: chords.thegridbase.com
- Dual Display - See chords on both piano and guitar fretboard simultaneously
- Interactive Piano - Click/tap piano keys to play individual notes
- Interval Colors - Root (red), 3rd (blue), 5th (green), 7th (orange) highlighted
- Multiple Voicings - Open positions, barre chords, and alternate fingerings
- Real-time Audio - Hear chords played with Tone.js audio engine
- 5 Position Learning - See any chord in all CAGED positions (C-A-G-E-D shapes)
- Dynamic Calculation - Positions calculated for any root note
- Visual Fretboard Map - See how shapes connect across the neck
- Educational Tips - Turkish explanations for each shape
- Interactive View - Full Circle of Fifths modal
- Root Note Highlighting - 4th and 5th intervals shown in chord selector
- Key Relationships - Understand harmonic connections
- Build Progressions - Add up to 8 chords
- Per-Chord Voicings - Select different voicing for each chord
- Pattern Detection - Recognizes common progressions (Pop, Jazz, Blues, etc.)
- BPM Control - Adjustable tempo playback
- Progressive Filtering - Relative chords ranked by key compatibility
- Compatible Keys Display - See which keys fit your progression
- Voicing Persistence - Remembers voicing when changing chord type
- Touch Optimized - Full functionality on phones and tablets
- Adaptive Layout - Single column layout on mobile, 3-column on desktop
- Collapsible Sections - Related chords panel toggles on mobile
- Horizontal Scroll - Piano and chord selectors scroll smoothly
- Node.js 18+ and npm
- Modern web browser with Web Audio API support
-
Clone the repository
git clone https://github.com/cankilic-gh/chord-explorer.git cd chord-explorer -
Install dependencies
npm install
-
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
chord-explorer/
βββ components/ # React components
β βββ ChordSelector.tsx # Root note & chord type selector
β βββ Piano.tsx # Piano keyboard visualization
β βββ Fretboard.tsx # Guitar fretboard display
β βββ RelativeChords.tsx # Diatonic chord cards
β βββ ProgressionBuilder.tsx # Chord progression timeline
β βββ CircleOfFifths.tsx # Circle of Fifths modal
β βββ CAGEDView.tsx # CAGED system modal
β βββ MiniFretboard.tsx # Compact fretboard for cards
βββ lib/ # Core logic
β βββ musicTheory.ts # Music theory calculations
β βββ audioEngine.ts # Tone.js audio playback
β βββ cagedSystem.ts # CAGED position calculator
βββ constants/
β βββ musicData.ts # Chord formulas & voicings
βββ App.tsx # Main application
| Category | Technology |
|---|---|
| Framework | React 19 + TypeScript |
| Build Tool | Vite |
| Styling | Tailwind CSS |
| Audio | Tone.js (Web Audio API) |
| Deployment | Vercel |
- Select Root Note - Click on the chromatic circle (C, C#, D, etc.)
- Choose Chord Type - Major, minor, 7th, maj7, dim, aug, etc.
- View on Instruments - See notes on piano and guitar
- Switch Voicings - Click voicing buttons to see different positions
- Click CAGED button in header
- See all 5 positions for current chord
- Click a shape to see details
- Use "Bu Pozisyonu SeΓ§" to apply
- Click + on relative chord cards to add
- Click chord in progression to change voicing
- Adjust BPM slider
- Press Play to hear progression
| Type | Symbol | Intervals |
|---|---|---|
| Major | (none) | 1 - 3 - 5 |
| Minor | m | 1 - β3 - 5 |
| Dominant 7th | 7 | 1 - 3 - 5 - β7 |
| Major 7th | maj7 | 1 - 3 - 5 - 7 |
| Minor 7th | m7 | 1 - β3 - 5 - β7 |
| Diminished | dim | 1 - β3 - β5 |
| Diminished 7th | dim7 | 1 - β3 - β5 - ββ7 |
| Augmented | aug | 1 - 3 - β―5 |
Each shape is derived from open chord fingerings:
- C Shape - Root on A string
- A Shape - Root on A string (most common barre)
- G Shape - Root on low E string
- E Shape - Root on low E string (barre chord foundation)
- D Shape - Root on D string
npm run dev # Start dev server (port 3000)
npm run build # Production build
npm run preview # Preview production buildEdit constants/musicData.ts:
export const GUITAR_VOICINGS: Record<string, VoicingDefinition[]> = {
'C_Major': [
{ name: 'Open', frets: [0, 1, 0, 2, 3, -1], startFret: 0 },
{ name: 'Barre 3rd', frets: [3, 5, 5, 5, 3, -1], startFret: 3 },
],
// ...
};Deployed on Vercel at chords.thegridbase.com
npm run build # Outputs to dist/- β Chrome/Edge (recommended)
- β Firefox
- β Safari
β οΈ Mobile (works but optimized for desktop)
MIT License - feel free to use and modify.
Can Kilic
- Portfolio: cankilic.com
- GitHub: @cankilic-gh
- Audio powered by Tone.js
- Built with Vite + React
- Styled with Tailwind CSS
- Drag-and-drop progression reordering
- Scale visualization overlay
- MIDI export
- More chord types (sus2, sus4, add9, etc.)
- Metronome integration
- Save/load progressions