Inspiration

Recently, I bought a guitar and started trying to learn how to play. Even though I already knew how to read sheet music, I quickly realized that translating it to guitar wasn’t as straightforward as I expected. Guitar tablature was just an easier notation to follow and more intuitive.

So, we decided to build a website that takes in sheet music and converts it into guitar tabs. The goal is to make it easier to play and practice songs you like, rather than spending time trying to translate notes into something usable on the guitar.

What it does

Tably converts sheet music files and score images into playable guitar tablature. Users can upload formats like PNG, JPG, MusicXML, or MSCZ, then view, play back, and download the generated tabs in an interactive web app.

How we built it

Frontend

  • React-based web app for uploading, managing, and viewing sheet music files
  • AlphaTab integration for interactive guitar tab rendering and playback
  • Supports file upload, tab preview, playback controls, and downloads

Backend

  • Python FastAPI server for handling uploads and conversion requests
  • Processes MuseScore, MusicXML, and image files into MusicXML guitar tablature
  • Integrated HOMR for optical music recognition, enabling conversion into MusicXML

Conversion Pipeline

  • MuseScore files converted into MusicXML through backend processing
  • Image files parsed with optical music recognition to extract notation
  • Generated MusicXML passed through tab conversion logic for tablature friendly output

Playback / Interaction

  • AlphaTab is used to display tablature and enable playback in the browser
  • Users can hear generated tabs, switch files, and export results

Deployment

  • Full-stack app deployed on a cloud-hosted server with a custom domain
  • Frontend and backend connected through API routing for live file conversion

Challenges we ran into

  • Creating playable tablature was difficult because each note had to be placed on a string and fret that was both correct and comfortable to play.

  • The HOMR library often takes very long to analyze inputted PNGs and uses a lot of resources.

  • Analyzing chords was challenging because multiple notes had to be assigned across strings at once. We solved this with a recursive algorithm that generated possible fingerings and selected the best one using a cost function.

  • Rendering our backend-generated MusicXML in AlphaTab was also difficult because we needed clean tablature, playback support, and realistic guitar sound.

Accomplishments that we're proud of

  • Built a full system that converts sheet music and score images into guitar tablature

  • Designed a fingering and chord selection algorithm focused on real playability

  • Integrated interactive tablature rendering, playback, and download functionality

  • Created a tool that makes it easier for everyone to learn and play songs on guitar

What we learned

  • How to design a full stack application that connects a React frontend with a FastAPI backend
  • Process and convert multiple music file formats into a unified output
  • Algorithm creation that balances musical accuracy with playability
  • Analyze chords and assign notes across strings using recursive logic and cost-based evaluation
  • Integrate AlphaTab for interactive tablature rendering and playback

What's next for Tably

  • Support for more complex inputs such as full piano scores
  • Improved algorithm for assigning notes and chords
  • Audio input to guitar tablature

Built With

Share this project:

Updates