Musical Notation Program Comparison

I take a look at all the free music notation programs out there June 15, 2018 music software

I recently tried to notate a lead sheet for “More Than Words” using LilyPond. While I like LilyPond’s power and text-based input file format1, it’s not for the uninitiated computer user.

I decided to look at what free options for music notation are currently available, and I’ve posted the results here. There are two main paradigms in creating a score: with a visual editor (GUI-based), or with text-based input2.



MuseScore has a decent interface

MuseScore has a decent interface

MuseScore is touted as the open-source equivalent of Sibelius and Finale. Its interface reminds me of pre-ribbon Sibelius, which is refreshing for me because I don’t much like ribbon menus. This program is probably the most convenient for entering and editing music, but its engraving leaves a little to be desired. For example, although semantically different, ties look the same as slurs.

Another benefit of MuseScore is that its file format is XML-based, meaning that it’s stored in a simple text file. That doesn’t mean that it’s easy to read, but you could get your music from it if you really needed to.


Frescobaldi gives users the flexibility of LilyPond’s text input with the convenience of a GUI that simplifies the input process with a palette of buttons for common functions.

a common choice for working with LilyPond files (screenshot from

a common choice for working with LilyPond files (screenshot from

It features a two-panel layout, with the source code and tools on one side and the output on the other. Users can click on an object in the output panel, and Frescobaldi shows the corresponding code for that object in the editor panel.

This would definitely be a good choice for easing the learning curve of LilyPond.


There is another option called Denemo. Like most open-source software, it is lacking in UI design, although I can see potential in its workflow. It doesn’t easily support any extra features, however, so it’s off my list of viable options.

the interface is not well developed

the interface is not well developed

However, I will say that one benefit of its multi-window layout is that the window sizes are easy to manage with a tiling window manager such as dwm, which I’ve been using for a while now.



LilyPond is the de facto standard for text-based music notation. If you’re not familiar with programming concepts such as variables and functions, this will definitely have a steep learning curve.

Text-based input can either be its greatest weakness (no GUI) or its greatest strength, depending on your goals. For algorithmic composers, LilyPond’s ability to utilize functions written in Scheme3 is useful.

LilyPond can be tested out online at


ABC is a simple format for text-based music notation. Its focus is on traditional music, so it can’t do anything like LilyPond can, but it’s an option if you only need simple notation requirements. You can find a database of many folk and traditional songs on ABC’s web page.


Guido is yet another text format for music score generation. Its format seems more verbose than LilyPond for basic input. It doesn’t seem it’s commonly used, and just from a quick look at the example on Wikipedia, it seems harder to read than the equivalent LilyPond file.

According to the Wikipedia page, GUIDO is focused on “represent[ing] music in a logical format”, while LilyPond is focused on the engraving aspect of music. At any rate, it doesn’t seem like GUIDO is so commonly used, so using it might also be more difficult for the lack of community support.

Other options


Another program I stumbled upon is Impro-Visor. It’s more of an educational program, similar to Band-in-a-Box, which I’ve heard is a decent practice tool.

I’m excited to check this program out! On the Wikipedia page, it’s mentioned that Impro-Visor uses linguistic tools to generate melodies based on corpus data of a particular musician’s solos. The user can then use the generated melodies to assist in creating his own melodies based on his transcriptions of that musician. As a linguistics student, this is something that I had always thought about, and I’m glad to see I’m not the only one who’s thought linguistic techniques could be useful in music analysis and practice.

VexFlow js

An online option which intrigued me is called VexFlow. Its appeal is that it can be used inside your browser. It handles regular music notation as well as guitar tab, making it useful for typesetting modern music. The developer also created a Chrome browser extension which allows the user to create music examples and paste them in blogs, comments, forums, and other places on the internet. Its output isn’t perfect, but for most cases on the web, it works just fine.


If you are looking for a familiar approach, try MuseScore. Its output isn’t perfect, but if you just need a lead sheet for your band to read, MuseScore will probably be the most straightforward approach.

If you are familiar with coding and have some time to learn a completely different paradigm with some interesting benefits, then you should take a look at a LilyPond based solution like Frescobaldi, or just a plain text editor writing LilyPond files. The output is generally better than the alternative systems, or at least several authors claim.

There may be other systems available, but this about covers the main options currently available. I will continue to use LilyPond, because I am pretty technically minded, and I like the simplicity of editing music code in a plain text file. It’s not for everyone, but it kinda feels cool!

  1. Text-based data storage has benefits for its long-term accessibility. There’s even a movement to do accounting with text-based file formats. See this or this for more. [return]
  2. The two paradigms are also called WYSIWYG, “What You See Is What You Get”, where the program shows the user an approximation of the output, versus WYSIWYM—“What You See Is What You Mean”, where the program allows the user to enter the semantic content of the document and handles generation of the final product by itself. [return]
  3. Scheme is a programming language, one of the two main “dialects” of a language called Lisp. [return]
Randy Josleyn teacher-linguist-guitarist wannabe