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: Real-time audio playback with Karplus-Strong string synthesis and visual highlighting
- 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 (CGO-free)
- 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
- CGO-free: Uses pure Go dependencies for better cross-compilation and deployment
Linux (including Arch):
# For audio support, install ALSA libraries
sudo pacman -S alsa-lib
# Or if using PulseAudio/PipeWire
sudo pacman -S libpulse pipewire-pulse pipewire-alsaUbuntu/Debian:
sudo apt-get install libasound2-devDownload 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 directoryq/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 tab (with real audio output)m- 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
hjklto move the cursor - Press
ito enter Insert mode at the current position - Press
xto delete the fret number at cursor (replaces with-) - Press
Spaceto play/pause the tab with audio output
- Use arrow keys or
-
Insert Mode: Type fret numbers and navigate
- Type
0-9to insert fret numbers - Type
-to insert rests - The cursor automatically advances after inserting
- Use
Backspaceto delete and move backward - Press
Escto return to Normal mode
- Type
-
Visual Feedback:
- Current cursor position is highlighted
- Insert mode shows with yellow highlighting
- Normal mode shows with blue highlighting
- Playback positions are highlighted in cyan
- Mode indicator shows current editing mode
Tuitar features real-time audio playback using the Karplus-Strong string synthesis algorithm:
- Realistic Guitar Sound: Uses Karplus-Strong algorithm for authentic plucked string timbre
- Accurate Frequencies: Standard guitar tuning with proper fret calculations
- Real-time Highlighting: Visual feedback shows currently playing notes
- Tempo Control: Respects tab tempo settings (default 120 BPM)
- Multiple Strings: Plays chords and multi-string passages correctly
- Natural Decay: String-specific damping for realistic sound decay
- High Quality: 44.1kHz sample rate with volume control
The application follows a clean architecture pattern:
internal/models/- Core data structures and business logicinternal/storage/- Data persistence layer (SQLite with modernc.org/sqlite)internal/ui/- Bubble Tea UI components and viewsinternal/audio/- Real-time audio playback using gopxl/beep libraryinternal/midi/- MIDI playback functionality (basic implementation)
# Clone the repository
git clone https://github.com/Cod-e-Codes/tuitar
cd tuitar# Install dependencies (ensure audio libraries are installed first)
go mod tidy# Build
go build -o tuitar# Run
./tuitar- Bubble Tea - TUI framework
- Bubbles - TUI components
- Lipgloss - Terminal styling
- modernc.org/sqlite - Pure Go SQLite driver (CGO-free)
- gopxl/beep - Audio playback library (updated fork)
- Quick Start: Press
Ctrl+Nto create a new tab and start editing immediately - Save Often: Use
Ctrl+Sto save your work - changes are highlighted when unsaved - Navigation: Use
hjklkeys for faster navigation without leaving home row - Measure Navigation: Use
w/bto jump between measures,g/$for measure boundaries - Page Scrolling: Use
PgUp/PgDnfor fast scrolling through long tabs - Measure Management: Use
mto add measures,Mto remove them - they display side by side - Insert Flow: In Insert mode, type fret numbers quickly - the cursor advances automatically
- Error Correction: Use
xin Normal mode for quick deletions, orBackspacein Insert mode - Mode Awareness: Watch the mode indicator to know which editing mode you're in
- Tab Management: Use
din browser mode to delete unwanted tabs - Audio Playback: Press
Spaceto hear your tabs played back with Karplus-Strong string synthesis - Volume Control: Audio is automatically balanced to prevent distortion
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
The project uses GitHub Actions for CI/CD:
- Automated Testing: Runs tests and linting on every push and PR
- Multi-platform Builds: Automatically builds for Windows, Linux, and macOS
- Automated Releases: Creates releases with proper versioning and changelogs
- Manual Releases: Use the "Manual Release" workflow for semantic versioning
# Run tests
go test ./...
# Run linter
golangci-lint run
# Build for your platform
go build -o tuitar
# Build for specific platform
GOOS=windows GOARCH=amd64 go build -o tuitar.exeMIT License - see LICENSE file for details
Check out the Releases page for the latest version and changelog.
- Audio playback (fully implemented with Karplus-Strong string synthesis)
- Visual playback highlighting
- Measure management (add/remove measures dynamically)
- Advanced navigation (page scrolling, measure jumping)
- Tab deletion functionality
- Advanced tab notation (bends, slides, hammer-ons, pull-offs)
- Multi-instrument support (bass, drums, etc.)
- Tab sharing
- MIDI export functionality
- Custom tuning support
- Metronome functionality

