TABFRET is a Windows desktop application that displays MIDI files as guitar tablature and visualizes notes on a virtual guitar neck in real-time.
- Features
- Installation
- Quick Start
- Usage
- Documentation
- Building from Source
- Contributing
- Architecture
- License
- Credits
- Support
- ๐ต MIDI to Tab Conversion: Load any MIDI file and see its notes converted into guitar tablature automatically
- ๐ธ Virtual Fretboard Visualization: Watch notes light up in real-time on a virtual guitar neck as the song plays
- ๐ผ Guitar-Friendly Display: Notes are mapped to guitar strings and frets using standard tuning (EADGBe)
โถ๏ธ Playback Controls: Play, pause, and stop MIDI playback with synchronized visual feedback- ๐ฏ Real-Time Highlighting: Currently playing notes are highlighted in red on the fretboard
- ๐ Visual Fret Markers: Standard guitar fret markers (dots at 3rd, 5th, 7th, 9th, 12th, 15th frets)
- ๐๏ธ User-Friendly Interface: Clean, intuitive UI designed specifically for guitarists and musicians
- โก Fast Processing: Quick MIDI parsing and tab generation
- Visual Learning: See exactly where to place your fingers on the guitar neck
- Real-Time Sync: Watch notes as they should be played, perfect for learning songs
- Automatic Mapping: No manual transcription needed - load and play
- Practice Tool: Ideal for learning new songs, understanding note positions, and improving sight-reading
- Operating System: Windows 10 (version 1809 or later) or Windows 11
- .NET Runtime: .NET 6.0 Desktop Runtime or later
- Download .NET 6.0 Desktop Runtime
- Choose "Download x64" under ".NET Desktop Runtime"
-
Download TABFRET
- Go to the Releases page
- Download the latest
TABFRET-v*.*.*.zipfile
-
Extract the Files
- Right-click the downloaded ZIP file
- Select "Extract All..."
- Choose a destination folder (e.g.,
C:\Program Files\TABFRET)
-
Run TABFRET
- Navigate to the extracted folder
- Double-click
TABFRET.exe - If prompted by Windows Defender SmartScreen:
- Click "More info"
- Click "Run anyway"
| Component | Minimum | Recommended |
|---|---|---|
| OS | Windows 10 (1809+) | Windows 11 |
| Processor | 1 GHz | 2 GHz or faster |
| RAM | 2 GB | 4 GB or more |
| Disk Space | 500 MB | 1 GB |
| Display | 1024x768 | 1920x1080 or higher |
-
Launch TABFRET
Double-click TABFRET.exe -
Load a MIDI File
Click "Load MIDI" โ Select your MIDI file โ Click "Open" -
Watch and Learn
Click "Play" and watch the notes highlight on the fretboard!
Don't have MIDI files? Try these free resources:
- FreeMIDI.org - Large collection of free MIDI files
- BitMidi - Free MIDI file archive
- Midiworld.com - Categorized MIDI library
For the best experience, start with:
- Simple melodies (not complex orchestral pieces)
- Single-instrument tracks
- Files labeled "guitar" or "guitar-friendly"
| Button | Function | Keyboard (Future) |
|---|---|---|
| Load MIDI | Open a MIDI file | Ctrl+O |
| Play | Start/resume playback | Space |
| Pause | Pause playback | Space |
| Stop | Stop and reset position | Escape |
String Layout (Top to Bottom):
โโ High E (1st string) - Thinnest
โโโ B (2nd string)
โโโโ G (3rd string)
โโโโโ D (4th string)
โโโโโโ A (5th string)
โโโโโโโ Low E (6th string) - Thickest
โโโโโโ
E |โโโโโโโโโโโ5โโโโโโโโโโโ9โโโโโโโโโ12โโโโโโโ
B |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
G |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
D |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
A |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
E |โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ โ โ
Nut 5th 9th 12th fret
(0) fret fret fret
- Blue circles (โ): Notes in the song
- Red circles: Currently playing notes
- Numbers inside circles: Fret number to press
- 0: Open string (don't press any fret)
- White dots: Fret position markers (3, 5, 7, 9, 12, 15)
Each note shows:
- Which string to play (vertical position)
- Which fret to press (number inside circle)
- When to play (horizontal position = time)
Example:
Circle on G string at fret 3 = Press 3rd fret on G string
Circle at fret 0 = Play open string (no fret pressed)
- Use guitar-friendly MIDI files for clearer results
- Start with simple songs while learning the interface
- Pause frequently to study finger positions
- Practice sections repeatedly by stopping and replaying
- Learn the fret markers to quickly locate positions
- ๐๏ธ Speed Control: Slow down for practice
- ๐ Loop Sections: Repeat difficult parts
- ๐ต Audio Playback: Hear the MIDI while watching
- ๐ธ Custom Tunings: Support for alternate tunings
- ๐พ Export: Save tablature as images or PDFs
๐ Complete Documentation Available: TABFRET has comprehensive documentation covering everything from installation to advanced development. See the Documentation Index for a complete overview, or DOCUMENTATION.md for detailed information about all available documentation.
- User Guide: Comprehensive guide for end users
- Installation instructions
- Interface overview
- How to use all features
- Tips and tricks
- Troubleshooting
- FAQs
-
Development Guide: Set up your development environment
- Prerequisites and tools
- Building from source
- Running tests
- Debugging tips
- Common development tasks
-
Architecture Guide: Understand the application structure
- MVVM pattern explained
- Project structure
- Core components
- Data flow diagrams
- Design decisions
-
Contributing Guide: How to contribute to TABFRET
- Code of conduct
- Development workflow
- Coding standards
- Pull request process
- Reporting bugs
- CI/CD Quick Start: Quick guide to our automation
- CI/CD Summary: Overview of workflows
- Workflow Documentation: Detailed workflow guide
- Workflow Architecture: CI/CD architecture
Want to build TABFRET yourself or contribute to development? Follow these steps.
- Windows 10 or higher (WPF requires Windows)
- Visual Studio 2022 (Community Edition or higher)
- Install the ".NET desktop development" workload
- .NET 6.0 SDK or later
- Git for version control
-
Clone the repository
git clone https://github.com/GizzZmo/TABFRET.git cd TABFRET -
Restore NuGet packages
dotnet restore TABFRET.sln
-
Build the solution
dotnet build TABFRET.sln --configuration Release --no-restore
-
Run tests (optional but recommended)
dotnet test TABFRET.sln --configuration Release --no-build -
Run the application
dotnet run --project src/TABFRET.csproj
- Open
TABFRET.slnin Visual Studio 2022 - Press
Ctrl+Shift+Bto build - Press
F5to run with debugging - Or
Ctrl+F5to run without debugging
To create a distributable package:
dotnet publish src/TABFRET.csproj \
--configuration Release \
--output ./publish \
--runtime win-x64 \
--self-contained trueThe compiled application will be in the ./publish folder.
TABFRET/
โโโ src/ # Source code
โ โโโ Models/ # Data models
โ โโโ Views/ # XAML UI files
โ โโโ ViewModels/ # MVVM ViewModels
โ โโโ Services/ # Business logic
โ โโโ Utils/ # Helper utilities
โโโ tests/ # Unit tests
โโโ assets/ # Images and resources
โโโ .github/ # GitHub Actions workflows
โโโ docs/ # Additional documentation
TABFRET uses these key libraries:
- Melanchall.DryWetMidi (v6.0.0): MIDI file parsing and manipulation
- NAudio (v2.2.1): Audio playback support
- Microsoft.Extensions.DependencyInjection (v8.0.0): Dependency injection
See DEVELOPMENT.md for detailed development instructions.
We welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or suggesting ideas, your help is appreciated.
- Fork the repository on GitHub
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes following our coding standards
- Test your changes thoroughly
- Commit your changes:
git commit -m "Add: Description of changes" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request on GitHub
- ๐ Bug Fixes: Fix issues reported in the issue tracker
- โจ New Features: Add new functionality (discuss first in an issue)
- ๐ Documentation: Improve or add documentation
- ๐งช Tests: Add or improve test coverage
- ๐จ UI/UX: Enhance the user interface
- โก Performance: Optimize existing code
Please read our Contributing Guide for:
- Code of conduct
- Coding standards and style guidelines
- Development workflow
- Pull request checklist
- How to report bugs
- How to suggest enhancements
- Report a Bug: Found an issue? Let us know!
- Request a Feature: Have an idea? We'd love to hear it!
- Ask a Question: Need help? Start a discussion!
TABFRET is built using modern software engineering practices and design patterns.
- Framework: WPF (Windows Presentation Foundation)
- Language: C# (.NET 6.0)
- Pattern: MVVM (Model-View-ViewModel)
- Libraries: DryWetMidi, NAudio, Microsoft.Extensions.DependencyInjection
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ User Interface (XAML) โ
โ MainWindow โ GuitarNeckView โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ Data Binding
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ ViewModels (Logic) โ
โ MainViewModel โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ Services (Business Logic) โ
โ MidiParser โ TabMapper โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ
โ Models (Data Structures) โ
โ MidiNote โ TabNote โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- MVVM Pattern: Clear separation between UI, logic, and data
- Observable Collections: Automatic UI updates through data binding
- Service Layer: Reusable business logic separated from presentation
- Async/Await: Non-blocking I/O operations for better responsiveness
For detailed architecture information, see ARCHITECTURE.md.
This project is licensed under the MIT License - see the LICENSE file for details.
- โ Free to use for personal and commercial purposes
- โ Modify the code as you wish
- โ Distribute copies of the software
- โ Private use allowed
โ ๏ธ Must include copyright notice and license- โ No warranty provided
- GizzZmo - Creator and primary developer
Thank you to all contributors who have helped improve TABFRET! ๐
See the Contributors page for a full list.
TABFRET wouldn't be possible without these excellent open-source projects:
- Melanchall.DryWetMidi: Professional MIDI library for .NET
- NAudio: Audio and MIDI library for .NET
- Microsoft.Extensions.DependencyInjection: Dependency injection framework
Inspired by the needs of guitarists, music teachers, and MIDI enthusiasts who want to visualize and learn guitar music from MIDI files.
- ๐ User Guide: Comprehensive user documentation
- ๐ฌ Discussions: Ask questions and share ideas
- ๐ Issues: Report bugs or request features
- ๐ Wiki: Additional tips and tutorials (if available)
Q: Does TABFRET work on Mac or Linux?
A: Currently, TABFRET is Windows-only due to WPF. Cross-platform support may come in future versions.
Q: Can TABFRET play audio from MIDI files?
A: Visual playback is available now. Audio playback is planned for a future release.
Q: What MIDI formats are supported?
A: TABFRET supports standard MIDI files (.mid, .midi) - both Type 0 and Type 1.
Q: Can I use custom guitar tunings?
A: Currently, only standard tuning (EADGBe) is supported. Custom tunings are planned for future releases.
Q: Is TABFRET free?
A: Yes! TABFRET is open source and completely free to use under the MIT License.
For more FAQs, see the User Guide.
Join the TABFRET community:
- โญ Star this repo if you find it useful
- ๐๏ธ Watch for updates and new releases
- ๐ด Fork to create your own version
- ๐ฌ Discuss ideas and ask questions
Found a bug? Please report it!
- Check existing issues first
- Create a new issue if needed
- Include:
- Windows version
- TABFRET version
- Steps to reproduce
- Expected vs. actual behavior
- Screenshots (if applicable)
- โ MIDI file loading and parsing
- โ Guitar tablature generation
- โ Virtual fretboard visualization
- โ Real-time note highlighting
- โ Basic playback controls
- ๐ต Audio playback with synchronized visualization
- ๐๏ธ Speed control (slow down for practice)
- ๐ Loop sections for repeated practice
- ๐ธ Custom guitar tunings support
- ๐พ Export tablature as PDF/images
- ๐ Multi-track MIDI support
- ๐ธ Chord recognition and labeling
- ๐ฎ Interactive practice mode
- ๐ฑ Tablet/mobile companion app
- โ๏ธ Cloud storage for MIDI files
- ๐ฏ Difficulty analysis and recommendations
Check the Issues page for:
- ๐ท๏ธ "good first issue": Great for new contributors
- ๐ท๏ธ "help wanted": Features we'd love help with
- ๐ท๏ธ "enhancement": Planned improvements
Special thanks to:
- The WPF community for excellent documentation and examples
- The DryWetMidi project for an amazing MIDI library
- All contributors who have helped improve TABFRET
- Users who provide feedback and suggestions
Made with โค๏ธ for guitarists and MIDI enthusiasts
