Skip to content

**MidiGuitarTab** A Windows desktop application that displays MIDI files as guitar tablature and visualizes notes on a virtual guitar neck.

License

Notifications You must be signed in to change notification settings

GizzZmo/TABFRET

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

123 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TABFRET (MidiGuitarTab) ๐ŸŽธ

CI Build & Test Release .NET Version License: MIT Platform

TABFRET is a Windows desktop application that displays MIDI files as guitar tablature and visualizes notes on a virtual guitar neck in real-time.

TABFRET Screenshot


Table of Contents


Features

  • ๐ŸŽต 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

What Makes TABFRET Unique?

  • 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

Installation

For End Users

Prerequisites

  • Operating System: Windows 10 (version 1809 or later) or Windows 11
  • .NET Runtime: .NET 6.0 Desktop Runtime or later

Download and Install

  1. Download TABFRET

    • Go to the Releases page
    • Download the latest TABFRET-v*.*.*.zip file
  2. Extract the Files

    • Right-click the downloaded ZIP file
    • Select "Extract All..."
    • Choose a destination folder (e.g., C:\Program Files\TABFRET)
  3. Run TABFRET

    • Navigate to the extracted folder
    • Double-click TABFRET.exe
    • If prompted by Windows Defender SmartScreen:
      • Click "More info"
      • Click "Run anyway"

System Requirements

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

Quick Start

Get Playing in 3 Steps

  1. Launch TABFRET

    Double-click TABFRET.exe
    
  2. Load a MIDI File

    Click "Load MIDI" โ†’ Select your MIDI file โ†’ Click "Open"
    
  3. Watch and Learn

    Click "Play" and watch the notes highlight on the fretboard!
    

Finding MIDI Files

Don't have MIDI files? Try these free resources:

Your First Song

For the best experience, start with:

  • Simple melodies (not complex orchestral pieces)
  • Single-instrument tracks
  • Files labeled "guitar" or "guitar-friendly"

Usage

Basic Controls

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

Understanding the Display

The Fretboard

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

Note Display

  • 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)

How to Read Tablature

Each note shows:

  1. Which string to play (vertical position)
  2. Which fret to press (number inside circle)
  3. 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)

Tips for Best Results

  1. Use guitar-friendly MIDI files for clearer results
  2. Start with simple songs while learning the interface
  3. Pause frequently to study finger positions
  4. Practice sections repeatedly by stopping and replaying
  5. Learn the fret markers to quickly locate positions

Advanced Features (Coming Soon)

  • ๐ŸŽš๏ธ 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

Documentation

๐Ÿ“š 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.

For Users

  • User Guide: Comprehensive guide for end users
    • Installation instructions
    • Interface overview
    • How to use all features
    • Tips and tricks
    • Troubleshooting
    • FAQs

For Developers

  • 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 Documentation


Building from Source

For Developers

Want to build TABFRET yourself or contribute to development? Follow these steps.

Prerequisites

  • 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 and Build

  1. Clone the repository

    git clone https://github.com/GizzZmo/TABFRET.git
    cd TABFRET
  2. Restore NuGet packages

    dotnet restore TABFRET.sln
  3. Build the solution

    dotnet build TABFRET.sln --configuration Release --no-restore
  4. Run tests (optional but recommended)

    dotnet test TABFRET.sln --configuration Release --no-build
  5. Run the application

    dotnet run --project src/TABFRET.csproj

Using Visual Studio

  1. Open TABFRET.sln in Visual Studio 2022
  2. Press Ctrl+Shift+B to build
  3. Press F5 to run with debugging
  4. Or Ctrl+F5 to run without debugging

Create Release Package

To create a distributable package:

dotnet publish src/TABFRET.csproj \
  --configuration Release \
  --output ./publish \
  --runtime win-x64 \
  --self-contained true

The compiled application will be in the ./publish folder.

Project Structure

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

Dependencies

TABFRET uses these key libraries:

See DEVELOPMENT.md for detailed development instructions.


Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or suggesting ideas, your help is appreciated.

How to Contribute

  1. Fork the repository on GitHub
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Make your changes following our coding standards
  4. Test your changes thoroughly
  5. Commit your changes: git commit -m "Add: Description of changes"
  6. Push to your fork: git push origin feature/my-feature
  7. Open a Pull Request on GitHub

Contribution Areas

  • ๐Ÿ› 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

Before Contributing

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

Quick Links


Architecture

TABFRET is built using modern software engineering practices and design patterns.

Technology Stack

  • Framework: WPF (Windows Presentation Foundation)
  • Language: C# (.NET 6.0)
  • Pattern: MVVM (Model-View-ViewModel)
  • Libraries: DryWetMidi, NAudio, Microsoft.Extensions.DependencyInjection

Architecture Highlights

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         User Interface (XAML)       โ”‚
โ”‚  MainWindow  โ”‚  GuitarNeckView      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚ Data Binding
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         ViewModels (Logic)          โ”‚
โ”‚          MainViewModel              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚      Services (Business Logic)      โ”‚
โ”‚  MidiParser  โ”‚  TabMapper           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚       Models (Data Structures)      โ”‚
โ”‚   MidiNote   โ”‚   TabNote            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Design Decisions

  • 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.


License

This project is licensed under the MIT License - see the LICENSE file for details.

What This Means

  • โœ… 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

Credits

Author & Maintainer

  • GizzZmo - Creator and primary developer

Contributors

Thank you to all contributors who have helped improve TABFRET! ๐Ÿ™

See the Contributors page for a full list.

Third-Party Libraries

TABFRET wouldn't be possible without these excellent open-source projects:

Inspiration

Inspired by the needs of guitarists, music teachers, and MIDI enthusiasts who want to visualize and learn guitar music from MIDI files.


Support

Getting Help

  • ๐Ÿ“š User Guide: Comprehensive user documentation
  • ๐Ÿ’ฌ Discussions: Ask questions and share ideas
  • ๐Ÿ› Issues: Report bugs or request features
  • ๐Ÿ“– Wiki: Additional tips and tutorials (if available)

Frequently Asked Questions

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.

Community

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

Reporting Issues

Found a bug? Please report it!

  1. Check existing issues first
  2. Create a new issue if needed
  3. Include:
    • Windows version
    • TABFRET version
    • Steps to reproduce
    • Expected vs. actual behavior
    • Screenshots (if applicable)

Roadmap

Current Version (v1.x)

  • โœ… MIDI file loading and parsing
  • โœ… Guitar tablature generation
  • โœ… Virtual fretboard visualization
  • โœ… Real-time note highlighting
  • โœ… Basic playback controls

Planned Features

Version 2.0

  • ๐ŸŽต Audio playback with synchronized visualization
  • ๐ŸŽš๏ธ Speed control (slow down for practice)
  • ๐Ÿ” Loop sections for repeated practice
  • ๐ŸŽธ Custom guitar tunings support

Future Enhancements

  • ๐Ÿ’พ 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

Want to Help?

Check the Issues page for:

  • ๐Ÿท๏ธ "good first issue": Great for new contributors
  • ๐Ÿท๏ธ "help wanted": Features we'd love help with
  • ๐Ÿท๏ธ "enhancement": Planned improvements

Acknowledgments

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

Stay Updated

  • ๐Ÿ“ข Releases: Download the latest version
  • ๐Ÿ“ Changelog: See what's new

Made with โค๏ธ for guitarists and MIDI enthusiasts

โฌ† Back to Top

About

**MidiGuitarTab** A Windows desktop application that displays MIDI files as guitar tablature and visualizes notes on a virtual guitar neck.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •