LilyPond Helper Applications: Development Status

Our audio expert checks in with some of the core Linux audio projects to see what's new.

Last month
I presented a brief update about the LilyPond music typesetting
software. This month I look at three graphic front-ends that can make
LilyPond easier to use for beginners and for users who simply prefer the more
familiar interface of standard music notation. Denemo, NoteEdit and
Rosegarden all provide GUIs that imitate conventional Western music staff
paper. Each program also provides palettes or menus for note and rest
types, expression marks, instrumental articulations and other standard
music notation symbols. In these programs the interface is designed to
resemble the tools and elements of standard Western music notation.

I've reviewed or referred to each of these programs in previous
articles. Readers who want to know about their basic features and
usage should read those articles (see Resources) and check out the latest news on the
application Web sites. In this month's column, my focus is the current
development status of these projects, paying particular regard to their
LilyPond support.
Regarding Development
On the surface, a report about a project's development status may not seem
to be an interesting topic, but it can be a fascinating study. Main
sources of information include various documents in the source package,
such as changelogs, roadmaps, authors credits, goal statements and
ToDo lists. Of course, the most up-to-date information can be found
on a project's mail lists, particularly on the developer's list. This
documentation often is quite interesting, revealing historical moments
that otherwise remain hidden to the user. A changelog is, in fact, a
historical document, a record of the project's development membership,
problems encountered and resolved (or not), milestone release dates and
so forth. Documents titled "ToDo" or "Goals" are interesting as well, laying
out plans and intentions for the project's future. These forward-looking
texts can be valuable if you have an interest in a project and would
like to have a better sense of its progress.

Denemo is a music notation program for Linux that helps you quickly
prepare notation for publishing with LilyPond. Denemo does NOT strive
to display all notation graphically or be the most complete graphic
environment. Denemo is a front-end to LilyPond. If you are looking for a
WYSIWYG editor Denemo may not be for you. If you are looking for a way to
quickly prepare scores for final editing in LilyPond give Denemo a whirl.

Thus the
Denemo Web page
succinctly describes the program's design philosophy.
Figure 1. Denemo, CVS Build
Denemo is not a young project. Developer Matthew Hiller began working on
Denemo in 1999, designing it specifically to be a graphic front-end for
LilyPond. In 2001 he turned over the project to Adam Tee, Denemo's current
manager. The project's primary goal remains the same, but naturally some
widening of its potential has occurred during its long existence.

Denemo's current stable release version is 0.7.4, indicating only one
major release increment per year of development. A read through its
ChangeLog and AUTHORS files reveals some reasons for this slow rate
of growth. The development team always has been a small group, and
the bulk of the core work has been done by Matthew Hiller or Adam
Tee. The AUTHORS file lists other significant contributors, but the
referenced documents make it clear that Matthew and Adam have been the
most prolific contributors.

Denemo's development pace also is affected significantly by the changes
in LilyPond's stable releases. Thus, the main Denemo developers must
track not only their own project but LilyPond's as well. And, LilyPond
is a large and complex project with many developers lending their hands
to it. Denemo's smaller development team must show proficiency in both
the LilyPond and the Denemo codebases, a non-trivial requirement.
Therefore, Denemo's development track sometimes has been slowed by the
more rapid pace of LilyPond's development group.

Thanks especially to the efforts of Aarom Mehl, Denemo currently is
undergoing a development revival. The new core team includes the venerable
Adam Tee and newcomers Jeremiah Benham and Benoit Rouits. The group is
coming together nicely, roadmaps have been drawn and goals clarified
and CVS sources are being reorganized. The project's current work
domains include these priority areas:

  • Modularize/stabilize source code
  • Separate main engine and user interface
  • Create an API (application programming
  • Synchronize to current stable LilyPond release

Other areas of interest include the definition of a plugin API, support
for ALSA and JACK, LilyPond file import and a Windows port. The project
also is looking for interested participants. Programming skills are
welcome, but there's more to the project than coding. If you'd
like to get involved in a cool LilyPond-related project, see the
Denemo Web page
for information on joining the development team.

The developers currently are working on many known problems and welcome reports
from users brave enough to compile and run CVS Denemo. I'm currently
testing a version built from the CVS source code from March 14 (see Figure
1) on a system running Demudi 1.3, with up-to-date development packages
(GNU autotools, GCC, GTK2, libXLM2 and others). I've loaded and played files
from earlier versions without problems, but I haven't seriously tested
this latest build. I'll keep working with it and sending in my reports.

I like Denemo. It's a unique and effective approach to a front-end
for LilyPond, and I'm glad to see it evolve. Your participation
definitely is encouraged.
According to its Web page,
NoteEdit is a music score editor for Linux. It
has an impressive list of features and offers support for unlimited staves
and staff length, same-staff polyphony (up to nine voices), flexible MIDI
playback, chord symbols and frames for guitarists and lyrics underlay.
It also offers a wide variety of output formats, including MIDI,
MusicXML and, of course, LilyPond.

NoteEdit's design philosophy differs fundamentally from
Denemo. Denemo is essentially a front-end for LilyPond, whereas NoteEdit is a
more broadly oriented application. It can function as a notation-based
GUI for MIDI composers and as a score preparation utility for a variety
of output targets.
Figure 2. NoteEdit
NoteEdit was created by Joerg Anders in the late 1990s. In 2004 he
officially ended his association with the project, and from that time
on, it has been managed primarily by a group led by Reinhard Katzmann. NoteEdit
originally was conceived to be a KDE-based application, and the current build
still requires the KDE and Qt libraries and development packages. For
the most complete experience, NoteEdit also should be built with Pete
Goodliffe's excellent
TSE3 MIDI library. NoteEdit can be built without
TSE3, but its MIDI capabilities are be less flexible.

NoteEdit is a mature application. Joerg Anders' last release had attained
version level 2.7.3, and the current stable release is version 2.8.0. The source package ChangeLog indicates that the
new development team has been adding features, fixing bugs, adding
translations and modernizing the codebase. In addition, the project maintainers
have set up a Subversion (SVN) repository for the NoteEdit source code
at the
BerliOS Developers
. (BerliOS is a project development site
similar to SourceForge, Subversion is a code maintenance system similar
to CVS). The source package also has added support for the
SCons build management system.
The GNU autotools still are supported, but SCons has become popular with

I compiled the latest SVN sources, NoteEdit version 2.9.0, without
problems on the same Demudi system I used to build Denemo. The ChangeLog
indicates only a few changes relevant to LilyPond, but those changes
include some notable bug fixes and a few additions to the LilyPond Export
dialog (Figure 3).
Figure 3. NoteEdit's LilyPond Export Dialog
The source package includes a TODO list that includes only one item,
a statement of intent to migrate to Qt4. The latest Hydrogen drum
machine/rhythm programmer requires Qt4, and I must say that its GUI
improvements are sweet. NoteEdit's appearance certainly will improve,
and I'm sure we also can expect improvements for LilyPond, such as
catching up with the latest stable release.

NoteEdit is an excellent notation-based music program that works equally
well as a composition tool and a score preparation utility. It also is
another testament to open-source development. Joerg Anders
thoughtfully protected his work under the GPL, and it still is covered
by the GPL v.2. When he retired from NoteEdit development, the source code was
available publicly for anyone who had an urge to continue the project. A
new development team has carried NoteEdit forward, but help is always
welcome. See the Web
for more information about the NoteEdit development effort.
RosegardenFigure 4. Rosegarden-4 1.2.3
You don't have to spend much time in the Linux audio world before you
hear about
also known simply as Rosegarden. Rosegarden is an integrated audio/MIDI
sequencer with a variety of user interfaces, including an excellent
notation-based GUI (Figure 5). Rosegarden's support for standard notation
was an essential aspect of the program's original design. LilyPond export
capability appeared with Rosegarden's major upgrade to Rosegarden-4,
thanks to Hans Kieserman. Although Rosegarden supports direct printing,
the developers recommend exporting to LilyPond for the highest quality
printed output. Figure 5. Rosegarden's Notation Editor
I must confess that this profile is not based on Rosegarden's cutting edge
Subversion sources. The version displayed in Figure 4 is the latest stable
release. It was not yet packaged for my system--Demudi includes version
1.0--so I built it myself, again using the same development environment
as I used for Denemo and NoteEdit. Compiling Rosegarden is not difficult,
but it does have a lengthy list of dependencies, including the KDE/Qt
development packages and the latest JACK and ALSA audio/MIDI systems.
Also, the build now requires SCons.

Rosegarden's notation editor is not designed to be a graphic front-end
for LilyPond, but it functions well in the role. When your Rosegarden notation
is satisfactory, open the Export LilyPond File dialog from the File/Export
menu. After naming your new LilyPond file, you're presented with the
LilyPond Export dialog shown in Figure 6. Check and set the preferences
that apply, click OK and watch Rosegarden create your new LilyPond file.
Figure 6. Rosegarden's LilyPond Export Dialog
Rosegarden originally was written in the early 1990s for SGI hardware.
It later was ported to Linux, which is its current primary development platform. The
original developers still maintain the project, but Rosegarden has
generated a large community of participating users and contributing
developers. The AUTHORS file tells the tale: in addition to the core
team of Chris Cannam, Richard Bown and Guillaume Laurent, it lists more
than two dozen contributors responsible for translations, code fixes,
enhanced MIDI support, SCons support and more. Alas, I couldn't find a
TODO list or other guide to Rosegarden's future, but I can join
the Rosegarden mail lists and ask.
And Out...
Next month we'll spend some time with FOMUS, a tool for converting the
output from algorithmic composition programs, such as Common Music,
into music notation formats, such as LilyPond. Until then, stay tuned.
At the Sounding Edge: LilyPond, Part 1

At the Sounding
Edge: LilyPond, Part 2



Dave Phillips is a musician, teacher and writer living in Findlay, Ohio.
He has been an active member of the Linux audio community since his
first contact with Linux in 1995. He is the author of The Book of Linux
Music & Sound
, as well as numerous articles in
Linux Journal. He can be reached at


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.


Reinhard's picture

Hi Dave,

Thank you very much for your great article and the positive feedback on the current NoteEdit. We're finally anticipating a new release and the first beta will be released this week. It's been a long time since the last one.

Also for those who really enjoy the bleeding edge: Read some important announcement on the NoteEdit development list: and the answer by myself.
I will go to a more broad public as soon as we have something useful to present (hopefully ready when the LAC starts).



White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState