Music Notation Software for Linux: a Progress Report, Part 1

The following article presents a status report on the development of five of the most active notation software projects for Linux. Most of them are works in progress, but all are well along on their development track and in varying states of usability.

The LilyPond Connection

Before launching into my reports, I must add a few words about LilyPond and its special relationship to the programs profiled here.

I've written about the awesome LilyPond in previous articles for this column, and I'm happy to report that the project is still alive and flourishing in its version 2.12 stable branch. LilyPond's development tasks and maintenance duties are managed by a sizable community of users and programmers, and it is indeed a work in full maturity. Many users have switched to it from other popular music notation programs, despite its text-format interface and command-line operation. LilyPond's output quality really is that attractive.

Because of its plain ASCII text interface, many users are on the lookout for an effective GUI for LilyPond. Most of the programs reviewed in this article can be considered as LilyPond front ends, but they vary in the kind and degree of their support for LilyPond. They range from specialized text-editing environments to notation-based sequencing, but in all cases, LilyPond is the engine that drives their notation capabilities. In some cases, a working knowledge of LilyPond is required, while others entirely hide LilyPond's presence from the user.

Music Notation Software: General Remarks

Music notation software poses some considerable problems for application developers. A full-featured notation program involves complex graphics mechanisms, flexible audio and MIDI I/O, and support for importing and exporting a variety of file formats. Additionally, developers must decide whether their software falls into the category of composer's helpmate or music typesetter. This distinction determines many important aspects of the program's basic design, especially at the user interface level.

Many packages combine these design factors more or less successfully, but the demands of professional quality typesetting require a dedicated program. Music printed from a general-purpose sequencer may be useful, but it is unlikely to compare favorably with the output from a dedicated music typesetter such as LilyPond.

The essential requirements for all music notation programs include various score layout functions, data entry methods, music symbol palettes, audio output support modes and options for printing the finished score. Basic programs may include only a limited subset of the possible features, while more professional software offers more features for greater control over the details of a work. Of course, with greater control comes greater complexity. The designers of music notation programs work hard to balance ease of operation with the proliferation of features.

Consider the needs of the following users: desktop composers may want only a simple notation palette, but they also might need support for MIDI input (file or real-time) and accurate rendition of that input. Composers working with advanced music (that is, not programming) languages may not need MIDI at all, but they definitely need features such as an extensive symbol palette, part extraction and perhaps even support for score manipulation by routines in Python or another general-purpose language. The commercial music software world offers programs that cover this range of needs. Finale and Sibelius are two of the best-known full-service notation programs in the Windows/Mac world, and many lower-cost and lesser-featured packages are available (search Google for "music notation software").

Music notation also shows up in modern audio/MIDI sequencers, but the implementation is necessarily restricted. A full-featured notation program needs to be a standalone application, although I must admit that the notation tools in sequencers such as Cubase and Rosegarden certainly are adequate for purposes such as lead sheets, chord guides and relatively short pieces. More ambitious work can be done in those programs, but their notation capability is only one component of a multipurpose design. I must note, however, that Rosegarden's developers have lavished attention upon the notation page in their sequencer, and it is also worth noting that Rosegarden includes an Export To LilyPond feature.

The Test Bed

I chose a plain-vanilla Ubuntu 8.10 (with kernel 2.6.27-9) system for the test platform. My decision was influenced in part by Ubuntu's up-to-date package repositories, where I found any and all required build utilities and other dependencies. Real-time audio support is not absolutely required, though audio output is likely to be enhanced in a real-time environment.


Denemo leads a double life as an editor-with-GUI for composing and editing LilyPond scores and as a notation-based MIDI composition environment. Recent work on Denemo has greatly improved the GUI and the program's overall stability, and many new features have been added to the 0.8.0 public release. Current development is intense, and the development crew is open to suggestions for new and even unusual features.

Denemo's UI has opted to use a menu system instead of graphic palette displays that hold the notation symbol collections. At first glance, this design may seem to work against a fast work flow, but the key to productivity in Denemo is its extensive use of keyboard accelerators. Almost every aspect of the program is available from the computer keyboard, and once users become familiar with the keyboard assignments, the work flow moves rapidly.

Figure 1. Denemo 0.8.2

Data input also is possible via MIDI (real-time or file), an existing Denemo file or LilyPond score and real-time audio (!). Additionally, Denemo is extensible through the use of the Scheme programming language. Users can define and display new menu items for the program, giving Denemo a unique position among the LilyPond helpers reviewed in this article. Scheme is not a difficult language to learn (it's a Lisp varietal), and learning even a little can lend considerable power to your Denemo experience.

Denemo is filled with cool features for composers. You can switch freely between graphic and text-editing modes, figured bass and guitar chord symbols are supported, and its Scheme interface adds the potential for algorithmic composition. [Aside to the Denemo devs: this would be a very cool feature!] You can define your preferred playback applications for audio and MIDI output, including the rather remarkable ability to use Csound as its audio rendering engine. Thus, composers can access the incredible sonority of Csound through a standard notation interface. The Rosegarden sequencer can be used as a notation front end to produce Csound scores, but it provides no integral connection to Csound itself. As far as I know, only Denemo provides such a connection as an option for audio output.

Files can be loaded and saved in Denemo's own XML format or LilyPond's native format. You also can export to PDF. Alas, at the time of this writing, MusicXML is not supported for either import or export, but LilyPond's musicxml2ly utility can be used to translate a MusicXML file to a LilyPond file.

Past releases of Denemo have suffered from stability issues and a difficult learning curve. I'm happy to report that stability no longer appears to be a problem, and there's now plenty of useful and up-to-date reference material, example files and user-level documentation.


Frescobaldi comes to us from the developers of the outstanding lilypond-kde4 software. Frescobaldi is not a notation editor per se. Instead, it provides a specialized environment for editing scores in LilyPond's native text-based file format. The program supplies amenities such as syntax highlighting, on-line help (for LilyPond and Frescobaldi itself) and score previewing. Its user interface is polished and attractive, and the program is easily mastered.

Figure 2. Frescobaldi 0.7.7

The latest Frescobaldi requires an up-to-date KDE4, so it's not likely to be available in package repositories for older Linux systems (for example, 64 Studio 2.1 or JAD 1.0). It also is absent from my specified repos for Ubuntu 8.10, but as I mentioned earlier, that system is modern enough to accommodate a sufficient build environment. Any missing dependencies are resolved quickly via Synaptic, and I've had no trouble compiling and installing recent versions of the program.

I do have some suggestions for the developers. At present, the basic work flow requires that I save my edits before I can preview them. I'd like to see an edit mode with a one-click previewer that skips the explicit save, if such a mode is feasible. I have another quibble with Frescobaldi's printing capabilities. At the time of this writing, Frescobaldi prints only to a PostScript or PDF file. It would be nice to print to my system printer from the program itself. Finally, given LilyPond's ability to generate a MIDI file from its native file format, perhaps a playback utility could be added ?

Apart from that wish list, I like Frescobaldi and will follow its development closely. If you've been looking for a dedicated LilyPond editor (and would rather not learn how to use emacs), you should check out Frescobaldi.


Canorus began as a fork of the NoteEdit Project described in Part 2 of this article. At that time, it appeared that NoteEdit's programmer planned to abandon the project, so Reinhard Katzmann formed a new group of developers to carry the project forward. Canorus is the result of their efforts to provide "a free extensible music score editor [that] supports note writing, import/export of various file formats, MIDI input and output, scripting and more", and the beta release of Canorus 0.7 is their latest production toward that goal.

Figure 3. Canorus 0.7beta

The Canorus Web site stresses that the software is beta quality. Although the development release introduces a number of features not found in earlier releases, it may not run so steadily as the public stable release 0.5. In short, the beta release should not be considered for serious work at this stage. You're welcome to check it out; the developers want reports from users, but if you ride on the edge, be aware of the risks.

Stable and development releases are available through the links on the Canorus Web site. Official installable packages are available for Debian and Windows, along with platform-neutral source packages in zip or tarball formats.

A full build requires that a few dependencies are met before you can compile the source code, including a recent Qt4 and the cmake utility in your toolchain. LaTeX and the LyX viewer are required to build the documentation, but the versions I found for Ubuntu 8.10 are unusable with Canorus, and I was unable to build the docs. Fortunately, the documentation build is optional, so don't worry if your build also fails with the docs—just continue with the process steps as listed above. Alas, you won't be able to summon the user-level documentation from the Help menu, but this lack is mitigated somewhat by the GUI's tooltips and the program's relative ease of operation.

A rantlet: I realize that I'm testing a beta version and that the documentation is likely to be compiled and built in to the finished public release, but I think it would be wise for developers to furnish documentation in a compiled format even in pre-releases. I'm surprised that a system as recent as Ubuntu 8.10 does not supply a working toolchain for building the Canorus docs, and I'd be happy to download the user-level documentation from the Canorus Web site. Whatever format is included for the final package, a simple HTML version on the Web site would be a happy addition to the documentation materials.

The installer did not automatically add a launch icon to my Applications menu, so I started the program by entering canorus at an xterm prompt. No command-line help is available with either -h or --help. When Canorus starts, you'll see its splash screen for a few seconds, then the program presents a canvas with a single starter measure.

Canorus has embraced and extended the feature set originally found in NoteEdit. Outstanding features include an excellent input system for polyphonic notation, MIDI connectivity via the ALSA sequencer (that is, multiplexed MIDI I/O), scripting with Python and/or Ruby, a rich selection of standard symbols and support for user-defined events.

Canorus operates in either Select or Edit mode. In the latter mode, music symbols are entered onto and deleted from the staves (user-definable, of course) with the mouse and common emacs keybindings (Del to remove a selected symbol, Ctrl-Z for undo, Ctrl-A to select all and so on). Projects can be divided into separate sheets (Canorus-speak for the notation canvas), or separate sheets can hold different projects. Each sheet includes controls for MIDI channels and General MIDI instrument assignments. Context menus have been avoided in favor of pull-down menus, which may frustrate some users, but I find that the design leaves the screen relatively clear of clutter.

Regarding file support: you can import MIDI files and files in the MusicXML format. You can save your work to either the Canorus project archive format (*.can) or its XML-based document format, or you can choose to export it as a LilyPond or MusicXML file. You also can also export your work as a MIDI file or a graphics file in PDF or SVG format. Canorus prints your notation by filtering it through LilyPond. You can designate your LilyPond binary in the the Tools/Settings menu where you also can select your preferred PDF viewer (LilyPond's default output format).

Canorus is much like its excellent predecessor in its clear presentation and its overall ease of use. As I mentioned previously, the beta release wants testers, so if you're willing to take some risks, you can help with the development of this excellent program.


Similis sum folio de quo ludunt venti.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Algorythmic Compositions

Nils (Denemo Team)'s picture

Got your message. And I already work on a prototype in scheme to do automatic composition. Once its clear how to use it (for ourselves) it will be documented.

That's great news, Nils.

Dave Phillips's picture

That's great news, Nils. Please keep us informed about that development.

Thanks for the note ! :)



Similis sum folio de quo ludunt venti.


Anonymous's picture

I tried LilyPond before but wasn't able to get it to do anything beyond opening up and showing me a blank notation screen.

I tried something else, can't remember what, but it wouldn't even open.

There was a third that I tried, can't remember which on that was either (yeah, I know, I'm really helpful here), and I could write out my music, but I got no audio when it played back.

Finally, I stumbled across LMMS, which opened, worked, and did everything it was supposed to without having to muck about in the settings at all. My only complaint was it didn't automatically get added to my Gnome menu, even though I installed it through Synaptic.

That would be a packaging

Anonymous's picture

That would be a packaging bug - which looks like is fixed in the jaunty:

Importing LilyPond

Joel's picture

Although there are programs that claim to import and export in LilyPond format (for example Denemo, Canorus, MuseScore), there is a caveat in my experience. The programs can generally only import LilyPond scores THEY have created. Go to the Mutopia project site & try to open a score of one of these programs & you'll see what I mean.

Anyway, right now out of all these programs my interest in MuseScore is highest. It looks like a real up & comer.

Lilypond Tool

Anonymous's picture

Good article,

I hope you won't forget jEdit with Lilypond tool



Thanks for the report

Ari Torhamo's picture

A well written and useful report, thank you! I looking forward to the part two :-)


alex stone's picture

Dave, yet another highly interesting read, and it's good to see the progress continue at such a pace. As a notation by preference composer of many years, i remain constant in my interest in any notation app that forges ahead.

After reading this, i went and D/L Canorus to have a fresh look at the work that's been done (The testing version). Impressive stuff. The dev team have certainly had a productive 12 months.

And it's the same for Denemo, an app i'm really starting to get into, and watch grow almost daily.

There's only 2 things i'd like to see for further consideration in Linux notation editor/engraver builds, and that's a big range of keystroke options, particularly workflow related, where the user doesn't have to take his hands off the keyboard at all. (And the denemo team have led the way here, imho.) Using a mouse to notate with is, imho, a frustration waiting to happen. Might be ok for 3 and 4 piece short works at a pinch, but use a full score, and the workflow grinds to a near crawl. Igor Engraver, imho, was nearly flawless in this aspect of notating on a computer, and would be a good example for aspiring notation app devs to consider when building their own software.

The other is multiple ports out for jack midi.

Soundfonts were great in their time, and i still use a couple for quick drafting on the laptop (Debian Lenny ppc).
But with the options we have in the 21st century, for using multiple port/devices, having a port per staff, assignable by the user would really step up playback quality, and importantly, closer to the final reality for recording.

This is an old chestnut of mine, but not having such an option seems to me to be self defeating in using a notation app, where it could be possible to kill a lot of the donkey work involved in writing, tweaking midi, recording, and the final polish.
Jackmidi now gives us this option, ahead of anything else, and it seems a shame not to build for it, and use its power and potential.

The Denemo team have done this, and are working on finessing the result. In my modest testing, it's already proving highly useful, and something that may well set a high benchmark to follow.

I would hope the team at Canorus consider this as a viable option, as 16 channels just isn't enough for a big, full blooded, multi articulation/device/port orchestral playback, and i wouldn't like to see any linux app impose a pointless restriction on the fine work being done.

I would say finally that i have 1 reservation about multi-architecture apps.

And that's the concern that in building for the other OS's, devs don't 'dumb down' the framework we have in Linux to accomodate restrictions elsewhere, and ignore the much wider range of options available, a.k.a. unlimited ports.....



Frescobaldi has auto-save

Wilbert Berendsen's picture

Hi, thank you Dave for the nice review of Frescobaldi!

Regarding one-click preview: There is an option in the settings to let Frescobaldi save the file automagically when LilyPond is started. There is also a print button in the program that directly prints the PDF file to the default printer. A MIDI player is not yet built-in but in after a LilyPond run the generated MIDI file can be played with the default MIDI player by clicking a button on the bottom of the LilyPond log. There is also a menu (LilyPond -> Generated files) where up-to-date files can be viewed, played or printed.

Thanks for all the suggestions, they help me improving the (quite young) program.


Nicola's picture

What about MuseScore? Will you cover it in part 2?

In windows I'm using Sibelius and when I looked for a music notation software in Linux (more then 1 year ago) MuseScore was the one that most resembled it.

Thanks for all your articles about Linux and Music.


Author's reply

Dave Phillips's picture

NtEd will be profiled in Part 2.



Similis sum folio de quo ludunt venti.


Anonymous's picture

I don't understand how there can be no mention at all of NtEd.

NtEd forgotten ?

Anonymous's picture

Amen. Give NtEd a try and see.

Geek Guide
The DevOps Toolbox

Tools and Technologies for Scale and Reliability
by Linux Journal Editor Bill Childers

Get your free copy today

Sponsored by IBM

Upcoming Webinar
8 Signs You're Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
11am CDT, April 29th
Moderated by Linux Journal Contributor Mike Diehl

Sign up now

Sponsored by Skybot