Braille Music Compiler

Braille Music Compiler

Author: Mario Lang
Date: 2016-03-01

Adventures in fully automated traanscription.

About me

I am (amongst many other things)

  • a blind hobby musician,
  • a computer programming and software freedom enthusiast.

In 2007, these two interests of mine merged into one vision.


While learning to play the traverse flute, I realized that I am not very good at playing complicated pieces by ear, and need some way of reading music notation to be able to learn and come back to musical pieces.

So I also started to learn braille music code.

And immediately realized that availability of music scores is sometimes difficult.


When looking for software to help me transcribe from other digital formats, I found GOODFEEL from Dancing Dots.

  • Only available for Microsoft Windows
  • Expensive (900 EUR when I checked)

Just too much for a hobby.

But a good reason for yet another one.

From MusicXML to Braille

So I decided to keep the money, and start writing Free Software to deal with Braille music code.

First I started to explore the problem domain by prototyping a MusicXML to Braille transcription in the programming language Python.

After roughly 4000 lines of code, I had learnt some things about the problem domain, and started a cross-platform portable project in Java.

Batch processing and Interactive Features

FreeDots can transcribe MusicXML files to Braille music code.

  • A command-line tool for batch processing files.
  • A user interface for interactively working with Braille scores

FreeDots Features

The interactive features of FreeDots are driven by what I immediately wanted to have while still learning Braille music code.

  • Play individual notes under the editing cursor.
  • Play whole score.
  • Move cursor while playing (for single staff)
  • Add or edit fingering annotations, save back to MusicXML.


Presenting a Braille score for viewing only is significantly eaiser to implement. So FreeDots does not allow to create new scores. But it allows to edit fingering. Analogous to what sighted people do with a pencil on a printed score.

A web service

Around 2009, I made contact with some people around the MuseScore project. They implemented the Wikifonia project (no longer available). A big collection of MusicXML scores for pop songs.

They helped, and FreeDots was intergrated into You could download every score of that site in Braille!

We still have

A Google AppEngine hosted version of FreeDots. Send your MusicXML, receive transcribed version as download.

Similar to what BrailleMUSE does.

Value ambiguity

  • The value of a note or rest is ambiguous.
  • Time signature and barlines absolutely necessary.
  • Note groupings (braille beaming).
  • Tuplets (underspecified, overlapping).

Voices and cross-measure spanners

  • LilyPond and MusicXML have score-global voices.
  • Braille Music voices are more local to a particular measure.
  • Intelligent mapping between both is difficult.
  • Spanners are a good hint, but is this enough?



Github Activity