A terminal-based guitar tablature editor built with Go and Bubble Tea.
- Intuitive Terminal Interface: Vim-like keyboard navigation with modal editing
- Real-time Tab Editing: Create and edit guitar tabs with instant visual feedback
- Modal Editing: Separate Normal and Insert modes for efficient editing workflow
- Audio Playback: Visual highlighting during playback (audio output in development)
- Measure Management: Add and remove measures dynamically with smart display wrapping
- Advanced Navigation: Page scrolling, measure jumping, and intuitive cursor movement
- Local Storage: SQLite-based tab management with auto-save functionality
- Tab Browser: Browse, delete, and organize your tabs with easy navigation
- Keyboard-driven: Efficient workflows without mouse dependency
- Cross-platform: Pre-built binaries for Windows and Linux
Download the latest release for your platform:
- Windows AMD64: tuitar-windows-amd64.exe
- Linux AMD64: tuitar-linux-amd64
# Install from source
git clone https://github.com/Cod-e-Codes/tuitar
cd tuitar
go build -o tuitar
# Or install directly
go install github.com/Cod-e-Codes/tuitar@latest
# Start the application
./tuitar
# The application will create a tabs.db SQLite database in the current directory
q
/Ctrl+C
- Quit application?
- Toggle helpCtrl+N
- Create new tabCtrl+S
- Save current tab
j
/↓
- Move downk
/↑
- Move upEnter
- Edit selected tabd
- Delete selected tab
h
/←
- Move cursor leftj
/↓
- Move cursor down (to next string)k
/↑
- Move cursor up (to previous string)l
/→
- Move cursor rightw
- Move to next measure boundaryb
- Move to previous measure boundaryg
- Move to beginning of current measure$
- Move to end of current measureHome
- Move to beginning of stringEnd
- Move to end of stringPgUp
/PgDn
- Page up/down scrollingx
- Delete fret (replace with dash)Space
- Play/pause tabm
- Add new measureM
- Remove last measurei
- Switch to insert modeTab
- Return to browserEsc
- Stay in normal mode
0-9
- Insert fret number (auto-advances cursor)-
- Insert rest/dash (auto-advances cursor)Backspace
- Delete previous character and move backArrow keys
/hjkl
- Navigate while in insert modeEsc
- Return to normal mode
Tuitar uses a modal editing system inspired by Vim:
-
Normal Mode (default): Navigate and perform editing commands
- Use arrow keys or
hjkl
to move the cursor - Press
i
to enter Insert mode at the current position - Press
x
to delete the fret number at cursor (replaces with-
)
- Use arrow keys or
-
Insert Mode: Type fret numbers and navigate
- Type
0-9
to insert fret numbers - Type
-
to insert rests - The cursor automatically advances after inserting
- Use
Backspace
to delete and move backward - Press
Esc
to return to Normal mode
- Type
-
Visual Feedback:
- Current cursor position is highlighted
- Insert mode shows with yellow highlighting
- Normal mode shows with blue highlighting
- Mode indicator shows current editing mode
The application follows a clean architecture pattern:
internal/models/
- Core data structures and business logicinternal/storage/
- Data persistence layer (SQLite)internal/ui/
- Bubble Tea UI components and viewsinternal/midi/
- MIDI playback functionality (basic implementation)
# Clone the repository
git clone https://github.com/Cod-e-Codes/tuitar
cd tuitar
# Install dependencies
go mod tidy
# Build
go build -o tuitar
# Run
./tuitar
- Bubble Tea - TUI framework
- Bubbles - TUI components
- Lipgloss - Terminal styling
- SQLite - Local database
- Beep - Audio playback library
- Quick Start: Press
Ctrl+N
to create a new tab and start editing immediately - Save Often: Use
Ctrl+S
to save your work - changes are highlighted when unsaved - Navigation: Use
hjkl
keys for faster navigation without leaving home row - Measure Navigation: Use
w
/b
to jump between measures,g
/$
for measure boundaries - Page Scrolling: Use
PgUp
/PgDn
for fast scrolling through long tabs - Measure Management: Use
m
to add measures,M
to remove them - they display side by side - Insert Flow: In Insert mode, type fret numbers quickly - the cursor advances automatically
- Error Correction: Use
x
in Normal mode for quick deletions, orBackspace
in Insert mode - Mode Awareness: Watch the mode indicator to know which editing mode you're in
- Tab Management: Use
d
in browser mode to delete unwanted tabs
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details
Check out the Releases page for the latest version and changelog.
- ✅ Cross-platform builds (Windows, Linux)
- ✅ Modal editing with Vim-like navigation
- ✅ Measure management and advanced navigation
- ✅ Visual playback highlighting
- ✅ Tab browser with delete functionality
- ✅ SQLite-based local storage
- Visual playback highlighting (using Beep library)
- Measure management (add/remove measures dynamically)
- Advanced navigation (page scrolling, measure jumping)
- Tab deletion functionality
- Audio output (visual playback works, but no sound yet)
- Advanced tab notation (bends, slides, hammer-ons, pull-offs)
- Multi-instrument support (bass, drums, etc.)
- Tab sharing