How ckeen302/chordcraft works
ChordCraft is a browser-based progression studio. Users generate or load harmony, edit its note events in the piano roll, then play it through the transport or export MIDI. The graph also preserves the song library, preset finder, analysis, and optional local-AI capability. The README documents these product branches; some implementation details are represented by their exact enclosing paths because their source was not sampled.
Main entry points: ChordCraftApp.tsx Studio composition · ChordLab.tsx Chord lab · useTransport.ts Playback scheduler · PopularSongs.tsx Popular songs
Components 22
Studio UI
- App shell
app/page.tsx - Studio composition
components/ChordCraftApp.tsx - Chord lab
components/chord-lab/ChordLab.tsx - Piano roll
components/piano/PianoRoll.tsx - Transport bar
components/layout/TransportBar.tsx - Settings
components/layout/SettingsPanel.tsx - Shortcut help
components/layout/ShortcutsHelp.tsx
Harmony and editing
- Progression state
store/useStore.ts - Harmony generation
lib/theory/harmony.ts - Theory operations
lib/theory - Note conversion
lib/roll/notes.ts - Harmonic analysis
lib/theory/analysis.ts - Local AI analysis
lib/ai/ollama.ts
Playback and export
- Playback scheduler
hooks/useTransport.ts - Sample audio engine
lib/audio/engine.ts - Metronome
lib/audio/metronome.ts - MIDI export
lib/midi/export.ts
Reference libraries
- Popular songs
components/songs/PopularSongs.tsx - Song progression data
lib/data/popular-songs.ts - Preset finder
components/presets/PresetLibrary.tsx - Preset catalog
lib/data/presets.ts
Other components
- Musician
Connections 27
- Musician → App shell: opens studio
- App shell → Studio composition: renders
- Studio composition → Chord lab: hosts
- Studio composition → Piano roll: hosts
- Studio composition → Transport bar: hosts
- Studio composition → Settings: hosts
- Studio composition → Shortcut help: hosts
- Chord lab → Harmony generation: generates harmony
- Chord lab → Theory operations: parses and voices
- Chord lab → Note conversion: converts chords
- Chord lab → Progression state: updates progression
- Piano roll → Progression state: edits note state
- Transport bar → Playback scheduler: controls playback
- Playback scheduler → Progression state: reads transport state
- Playback scheduler → Sample audio engine: schedules notes
- Playback scheduler → Metronome: starts and stops
- Sample audio engine → Musician: plays sound
- Chord lab → Harmonic analysis: analyzes progression
- Chord lab → Local AI analysis: requests deeper take
- Local AI analysis → Musician: queries local Ollama
- Chord lab → MIDI export: exports note events
- Popular songs → Song progression data: reads catalog
- Popular songs → Progression state: loads song
- Popular songs → MIDI export: exports song
- Studio composition → Popular songs: shows library
- Studio composition → Preset finder: shows finder
- Preset finder → Preset catalog: browses catalog