Skip to main content

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.

Guitar TUI demo

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

guitar_tui-0.1.0.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

guitar_tui-0.1.0-py3-none-any.whl (277.0 kB view details)

Uploaded Python 3

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

Hashes for guitar_tui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a07292dfad98429669b187f25b27a01fdf4cb51d299f210fcb626567f8ff9f1
MD5 595b18bcd60d739b2d19115a9eed8844
BLAKE2b-256 a3107ae3b0d539afa523a42397c5183aa990d8a59f308d9f6053431dad1193b3

See more details on using hashes here.

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

Hashes for guitar_tui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa2f60300a1d4981feb99b9388891c1c798394dc2d35a4204c870bdf043bc744
MD5 873c8b2a866913693808a88bb25e47ae
BLAKE2b-256 4202b7e5641c8a00596452afd0d3ced4bbd927d25d7a2980e7901dc599ca886f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page