A TUI application for guitar music theory
Project description
Guitar TUI
A terminal application for guitar music theory. Structured lessons, interactive reference tools, and a licks library — entirely keyboard-driven, no browser required. Built on Textual and developed with Claude Sonnet 4.6.
What's inside
- 78 lessons across 11 tracks — open chords through modes and song analysis
- Tools screen — full-neck scale/key explorer, diatonic chord strip, reference tables (intervals, key signatures, barre positions, capo chart, tunings)
- Practice screen — technique exercises and a lick library with looper-ready phrases across 8 scale categories
- All content is plain Markdown with YAML frontmatter — readable without running the app
Curriculum
| Phase | Tracks | Content |
|---|---|---|
| 1 — Playing foundation | 1–3 | Notation · Open chords · First progressions |
| 2 — Vocabulary expansion | 4–9 | Theory · Barre chords · Pentatonic · Natural minor · Major scale · Seventh chords |
| 3 — Synthesis | 10–11 | Modes · Song analysis |
Requirements
- Python 3.12+
- uv (recommended) or pip
Install
uv tool install guitar-tui
guitar-tui
Or with pip: pip install guitar-tui
Or clone and run locally:
git clone https://github.com/konoerik/guitar-tui.git
cd guitar-tui
uv run guitar-tui
Navigation
| Key | Action |
|---|---|
1 |
Home |
2 |
Lessons |
3 |
Tools |
4 |
Practice |
q |
Quit |
[ ] |
Previous / next scale position (Tools) |
, . |
Previous / next diatonic chord (Tools) |
Esc |
Back / deselect |
Terminal requirements
Recommended size: 110 × 36 or larger. Use a terminal emulator with a good monospace font (Ghostty, iTerm2, WezTerm, Alacritty all work well). Increase font size until the layout feels comfortable — there's no zoom button.
Architecture
Four-layer model:
Data Layer guitar_tui/data/ YAML chord/scale data
Engine Layer guitar_tui/engine/ Diagram renderers (music-agnostic)
Content Layer guitar_tui/loaders/ Lesson and lick parsers
TUI Layer guitar_tui/ui/ Screens, widgets, stylesheet
The engine renders DiagramSpec objects and has no knowledge of chord names or scale theory. Music knowledge lives in the data layer and lesson content. Lessons are plain Markdown with YAML frontmatter and fenced diagram blocks — see schemas/ for the full spec.
Adding content
Lessons live in guitar_tui/content/lessons/, exercises in guitar_tui/content/exercises/, and licks in guitar_tui/content/licks/. Each is a Markdown file with YAML frontmatter — see schemas/lesson_format.md and schemas/diagram_spec.md.
A personal note
I am building this app as a personal knowledge base for guitar music theory. Like so many folks out there, I've been playing guitar for two decades, but only in recent years I have tried to understand the theory behind all my beloved songs. It takes time and it takes effort. There are fantastic resources online, there are great videos on YouTube and there are great books on the topic - I do have several of them. With the advent of LLMs however, I can go one step further. Take those concepts, have them explained in various ways and have them presented in a way that works for me. So that's what I did.
That being said, I am not a music theory expert, so I am limited in my capacity to validate all the content for correctness. Nevertheless, I have tried my best (by using an instructor persona and a separate reviewer persona for the critique) and by examining the things I do understand. I will continue this effort as I ask Claude to generate more content and as I go through the content myself and become familiar with new topics by cross examining with other resources.
License
MIT © 2026 Erikton Konomi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file guitar_tui-0.1.0.tar.gz.
File metadata
- Download URL: guitar_tui-0.1.0.tar.gz
- Upload date:
- Size: 2.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a07292dfad98429669b187f25b27a01fdf4cb51d299f210fcb626567f8ff9f1
|
|
| MD5 |
595b18bcd60d739b2d19115a9eed8844
|
|
| BLAKE2b-256 |
a3107ae3b0d539afa523a42397c5183aa990d8a59f308d9f6053431dad1193b3
|
File details
Details for the file guitar_tui-0.1.0-py3-none-any.whl.
File metadata
- Download URL: guitar_tui-0.1.0-py3-none-any.whl
- Upload date:
- Size: 277.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa2f60300a1d4981feb99b9388891c1c798394dc2d35a4204c870bdf043bc744
|
|
| MD5 |
873c8b2a866913693808a88bb25e47ae
|
|
| BLAKE2b-256 |
4202b7e5641c8a00596452afd0d3ced4bbd927d25d7a2980e7901dc599ca886f
|