At the Sounding Edge: Music Notation Software For Linux

Dave starts a new series on music notation software and explains why Linux has some of the best available on any platform.

When I was an untutored rock musician, I envied my colleagues who could read and write music notation. They could access and study material that literally was a closed book to me. So, at one point in my musical life, I dedicated myself to mastering the basics of notation. I've never regretted the effort I put into that study. I now advise my serious students that their careers in music will be considerably more flexible and lucrative if they devote time to mastering the conventions of standard Western music notation.

Linux-based musicians will be pleased to discover that their favorite OS supports some excellent music notation packages. As an heir to the UNIX tradition of high-quality printing, particularly TeX-based printing, Linux can lay claim to some of the most powerful notation software available for any platform. This is a bold statement to be sure, so over the next few months this column will present a series of profiles of some of the best Linux music notation software. I hope you enjoy this survey.

Some History and Definitions

Modern Western music notation is the result of a practice that has been evolving over hundreds of years. From its beginnings as a means of notating monophonic plainchant, the system has grown to accommodate a bewildering array of symbols, signs and objects. All of them are intended to convey a more-or-less accurate description of a composer's musical intentions regarding any number of instrumental and vocal resources. Learning to read and write standard Western music notation is a non-trivial task, and achieving fluency requires considerable time and effort. Fortunately, your computer can relieve many burdensome aspects of music composition, manuscript preparation and score printing. All you need is your machine and the right software for the job--the right Linux software, that is.

Music notation software can be classified into the two overlapping categories of music scoring and music typesetting. Scoring software may be thought of as the composer's assistant, that is, the virtual music manuscript. A GUI usually is associated with software in this category, and it typically presents a graphic representation of a staff display and a palette or palettes of common music symbols. The interface may be controlled with the mouse; the computer keyboard; an external MIDI device, such as keyboard, MIDI guitar or wind controller; or any combination of those controls. In addition, it usually is possible to import a MIDI file for conversion to notation.

To work with music scoring software, the user first selects notation objects from a symbol palette and enters them onto a staff display. This often occurs with real-time audio as notes are placed on the staff. Playback usually is available whenever the user wishes to audition his work from any point in the score. When the notation is complete, it can be saved or exported in a variety of formats, such as PostScript and Adobe PDF, for printing; a MIDI file, for playing or editing in a MIDI sequencer; or MusicXML, for interchange with other notation programs. Linux music notation editors in this category include NoteEdit, MuseScore and the Rosegarden audio/MIDI sequencer.

Music typesetting software prepares publication-quality music scores. The user writes a specification file that encodes the details of his score. The file then is processed by the typesetting program. Output usually occurs in a scalable graphics format that can be printed with common printing tools and a PostScript-compatible printer. Given a powerful enough typesetting specification language, every detail of a score's appearance can be defined as needed for perfectly readable and beautifully printed music.

Linux has inherited powerful text preparation software from its UNIX lineage, including the TeX and PostScript formatting and printing environments. These tools were designed to render high-quality displays to high-resolution plotters and printers. It did not take long for the necessary fonts, macros, symbols and other elements to be combined to form powerful music typesetting packages. In fact, TeX is a required component for some of the applications profiled in this article series.

To a user familiar with the graphic displays of popular notation editors for Windows and the Mac, a specification language may seem like a poor way to deal with something as visual as music notation. Typically the Win/Mac notation editors fall into the category of scoring software, providing relatively less control over the finer details of score preparation. Preparing a music manuscript for printing is not necessarily a straightforward process. Note groupings, placement of accidentals, beaming requirements, stem directions and many other factors influence the appearance and usability of the printed score. The variations of those factors cannot be predicted and accommodated easily, not even by a computer. In the most flexible GUI-based scoring software, the underlying program logic must make decisions that affect the output. By contrast, a specification language allows a degree of output customization not commonly encountered in programs dependent on graphical interfaces. As we shall see, a music typesetting language such as LilyPond or Mup is easy to learn, and with a little practice, you quickly can enter complex scoring indications.

Music Notation File Formats

MIDI and audio applications enjoy the convenience of widely accepted standard file formats. Most audio software can load and save files in the common WAV and AIFF formats, and most MIDI applications support the import and export of files in the Standard MIDI File format, aka, MIDI files. Alas, until recently no standard format has appeared for the exchange of music notation data between music scoring and typesetting applications. Many notation programs import and export MIDI files, but the extent of that support varies. Although the ability to read and write a MIDI file is a great amenity in notation software, the MIDI file format simply is not a substitute for a full-featured exchange format for the display of music notation symbols.

Recently the MusicXML format has been promoted as a universal music notation file format. MusicXML has much to recommend it. It is an open and humanly readable format based on the popular XML mark-up language; it is free of cumbersome patent and royalty issues; and it already is supported in dozens of commercial and free music notation programs. If you need to move your music notation between applications or platforms, consider saving it in the MusicXML format.

As Easy as abc...

My first profile in this series is devoted to the wonderful abc notation system. abc is a free and open-source music notation specification language originally designed to provide a means of notating monophonic melodies in simple ACSII text. It has evolved into a flexible environment capable of representing polyphonic compositions, with processing extensions available to add multiformat output and MIDI realization. A large community of users has grown around the abc software family, and many example scores are now available on-line that demonstrate the power of this simple but useful language. abc is licensed under a Creative Commons license.

Building abc

There is no abc package per se. All that is required to set up a complete basic abc system is some knowledge of the language, a text editor and one or more of the many available abc file format conversion tools. The language details are described in the abc Standard available from the main abc Web site (see Resources). A common editor such as vi or emacs is all that is needed to write an abc file. After the file has been written, it can be converted to a standard MIDI file using abc2mid or to a print-ready format using abc2mtex (MusicTeX), abc2ps (PostScript) or abc2pdf (Adobe PDF). A native abc format player (playabc) also is available. Those applications can be downloaded from the main abc Web site. You need to build and install them from their source code, but most follow this simple command sequence:

	gcc -o progname progname.c

The abc support utilities are simple programs with no unusual dependencies. If you receive fatal error messages while compiling them, you may not have a complete C programming development system installed. Consult your distribution's package management system for details regarding installing the C development packages, often called devel packages. The full AGNULA/Demudi and Planet CCRMA systems include these required packages.

Using abc

For our first example we enter some simple abc code in a text editor, convert it to PostScript and MIDI files and play the native abc file with the playabc player. We start by encoding a simple scale, starting from middle C, in 4/4 time. The scale is played through once and then repeated. Open your text editor and enter the following code:

  X:1
  T:A Scale In C
  C:DLP
  M:4/4
  L:1/4
  K:C
  C D E F | G A B c |1 c/2B/2A/2G/2 | F/2E/2D/2C/2 :|2 c4 ||

Here's what's going on in this code. First, we have a header that supplies various informative and notation-specific details:

  X A reference number
  T Title
  C Composer's name
  M Meter
  L Default rhythmic unit
  K Key signature

A series of notated pitches and rhythms follows the header, with measure lines indicated by the | and || symbols. Repeat signs are represented by the |: and :| markers. The notes extend from middle C (C) to an octave above (c), with first and second endings indicated by the |1 and :|2 symbols. The default rhythmic unit (L:1/4) is in steady quarter notes until the endings. Eighth-notes are indicated here by the /2 marker, and beaming is accomplished by grouping the notes without spaces. When printed, this code:

	c/2 B/2 A/2 G/2

would result in a series of unbeamed single eighth notes. This grouping:

	c/2B/2A/2G/2

represents the same notes beamed (see Figure 1).

Save this file as first-test.abc, and then use the abc2ps program to format it for PostScript output. The following command processes first-test.abc and produces a PostScript file named first-test.ps:

	abc2ps first-test.abc -o -O first-test.ps

Figure 1 illustrates the output as seen in the GhostView PostScript file viewer.

Figure 1. A Simple Scale from abc

Now, let's create a MIDI file from the same abc file. We need the abc2midi utility from Jim Allwright's abcMIDI package, which we use in this manner:

	abc2midi first-test.abc -o first-test.mid

Our new MIDI file now is ready for use within any MIDI composition and editing environments, such as MusE or Rosegarden. Incidentally, the abcMIDI package also includes a utility for converting MIDI files to abc files.

You can play your new MIDI file with a player such as TiMidity, pmidi or ALSA's aplaymidi. If you are profoundly short on resources, you can play the native abc file (first-test.abc) with Don Ward's playabc program. playabc's output goes only to the PC speaker, but in the absence of any other sound-producing hardware, playabc can be a welcome utility.

By now it should be apparent that using abc involves a number of separate programs. Fortunately, GUI front-ends are available to simplify the configuration and use of the individual tools. Figures 2 and 3, respectively, show off Wil Macaulay's Skink GUI, which requires Java, and Jean-Francois Moine's tkabc GUI, which requires Tcl/Tk. These programs bring together the components needed for a complete system to edit, display and render abc files, putting all the needed tools into one container.

Figure 2. The Skink abc Editor

Figure 3. Tkabc

Closing Remarks

abc can be used for almost any purpose requiring standard music notation. Its active community has extended the original utility to notate unusual instruments, such as the bagpipe or the dulcimer, process MIDI file I/O and accommodate complex polyphonic voicing. Many excellent abc scores are available on the Internet, so many that tools have appeared for indexing and locating them on-line. The language is easy to learn and use, the supported output formats provide high-quality printable scores and the specification continues to evolve. abc is a fine example of distributed development and is a highly recommended addition to the Linux sound and music software collection. I look forward to its continued growth.

______________________

Similis sum folio de quo ludunt venti.

Comments

Comment viewing options

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

text-based alternative

Ari's picture

I've created an alternative to ABC called Mascii, which stands for Musical Ascii. Being new, Mascii is not as mature as ABC in terms of 3rd party tool support (currently there is only a mascii-to-midi converter at http://composersnotebook.com), but Mascii often requires less typing, and has included easy expression of polyphony and complex rhythms since day one. Its approach to notating the rhythmic dimension in music is quite different from any system I've seen, and gives it a flexibility and power I also haven't seen in other systems. Mascii also includes support for "pop chord" symbols, and can easily and accurately represent a wide range of musical styles, from classical to pop to jazz to latin, in a format that is designed to be easily readable and writable to the composer using any common text editor.

Some demonstrations of its power and a free online mascii-to-midi converter are at composersnotebook.com

PMW

Soruk's picture

Have you come across PMW? Although its file format is its own thing, I've found it to be very intuitive, and it even comes with a 180-odd page manual in PDF format as part of the distribution.

hey

ckn's picture

thats cool, thanx.
music software on linux is about to rise, finally?

Quick input via Dasher

Alan Peery's picture

For a very interesting GUI input technique, see
http://www.inference.phy.cam.ac.uk/dasher/

There is an ABC specific set of hints for Dasher on its download page...
http://www.inference.phy.cam.ac.uk/dasher/Download.html

runabc

Anonymous's picture

The runabc software package is also quite useful:

http://ifdo.pugmarks.com/~seymour/runabc/top.html

Author's reply

Anonymous's picture

I learn a new thing every day. :)

Thanks for the tip, I'll add runabc to the notation page at linux-sound.org.

Best,

dp

¿ABC?

Anonymous's picture

IMHO, ABC is a toy. If you want professional scores, you should use Lilypond.

$base

Peter Strasiniuk's picture

hi all, i worked with steinberg software since the beginning... nothing is better... cu@all

ABC is more than a toy

Dave Holland's picture

Of course you're welcome to your (humble) opinion, but you might like to look at some of the more heavyweight pieces of music that have been typeset with ABC: Bach preludes and fugues, Handel organ concerto, etc at Jef Moine's page.

Why ABC as "best"?

Anonymous's picture

Why not look at Rosegarden (credible Cubase replacement with a notation editor) and especially Lillypond? Not to detract this article, but if you are looking at Linux for music notation over the "usual" Mac/Widrosh then at least show some good apps, not this hacker crap.

Have you tried Musix ? (

Marcos's picture

Have you tried Musix ? ( http://musix.org.ar )

Here is in english: https://www.musix.org.ar/wiki/index.php/Documentation

Author's reply

Anonymous's picture

This article is the first in a survey of the available notation applications. LilyPond will get its due, as will MusixTeX, MuseScore, CMN, NoteEdit, and others.

Patience, grasshopper. :)

Best,

Dave Phillips

Why ABC as best?

aslug's picture

I must take offence at the term "hacker crap". If it were not for the efforts of hackers, we would not have such a rich choice of applications to choose from. Let's remember, choice is what is important. Good stuff thrives, "crap" naturally withers. The reason opensource is the best model is that everyone can try ideas. Yes, many may ultimately be classified as "crap" but let's not bite the hand that feeds us. If you think something is "crap", don't use it. But give the rest of the community the opportunity to make up their own mind and give credit to the hackers who, through their own sweat have given us something to try.

ABC notation

Kent's picture

Surprised abc2midi didn't squawk. Shouldn't your first ending be one measure instead of two?

Thanks for highlighting abc.

Author's reply

Anonymous's picture

Ah, you noticed ! ;-)

I don't recall if I converted that example, but you're correct, abc2midi would have squawked. My mistake, sorry about that.

Thanks for the correction !

Best,

dp

Debian and Ubuntu packages

anon's picture

abc2ps, abcde, abcm2ps, abcmidi, and abcmidi-yaps are also in the Debian and Ubuntu "universe" repositories.

Debian and Ubuntu packages

anon's picture

abc2ps, abcde, abcm2ps, abcmidi, and abcmidi-yaps are also in the Debian and Ubuntu "universe" repositories.

Music notation software

Ron Skingley's picture

I know this is a very old page now, so don't expect anyone will read this, but...
I've converted from Windows to Linux.
Used to use Sibelius in Windows, and so far none of the Linux stuff comes within a mile of the Sibelius standard.
Isn't there anything like Sib for Linux?

Ron

Re: music notation software on Linux

Corey Mwamba's picture

Submitted by Ron Skingley (not verified) on Sun, 2006-07-02 02:24.

"I know this is a very old page now, so don't expect anyone will read this, but...
I've converted from Windows to Linux.
Used to use Sibelius in Windows, and so far none of the Linux stuff comes within a mile of the Sibelius standard.
Isn't there anything like Sib for Linux?"

No, is the simple answer. Because, in fact, notation software for Linux isn't very good, especially if you're doing professional work. If you want to copy a Handel score, etc., then fine; but if you compose and need flexible, user-friendly tools you're better off sticking with Windows or Mac where you can get Sibelius or Lime...

I've tried Canorus [not in any way finished], Note Edit [not intuitive, limited in layout], Rosegarden's notation editor [not really meant for proper notation: think Logic and you'll what I mean] on Suse 10.2. I love the concept of Linux, and it is a stable system. But it really is the software that lets it down.

It seems to me that the software designers in this field haven't looked at a professional program to see how that works. Sometimes things are popular because they just work. I paid £45 for Lime on Windows; I write for small to medium ensembles and it does a great job, with a simple GUI and a flexible, open method of doing chord symbols, layout, etc. Because it's my job I'd be happy to pay for software on Linux if it just did the job.

Used to use Sibelius in

andrew what's-his-name's picture

Used to use Sibelius in Windows, and so far none of the Linux stuff comes within a mile of the Sibelius standard.
Isn't there anything like Sib for Linux?

Sadly, no. No open source solution comes within a million miles of Sibelius or Finale. Considering the reasons why such a disparity in completeness and ease of use exists between proprietary and open source music notation applications, I seriously doubt that this situation will change any time soon.

This is a terrible shame. GNU/Linux offers the potential for providing an operating system for music production with amazing stability, performance, and low latency--the sort that Microsoft and Apple couldn't hope to match without re-writing their codebase from scratch. I'd love to see this potential realized as I use GNU/Linux exclusively, but it's not going to happen any time soon.

That said, Rosegarden and Lilypond are definitely worth checking out. I've used both for years until recently. Rosegarden R4 has the delightful habit of hard locking my machine *completely*, requiring power cycling. Lilypond has become unusable for me as well, mostly due to rendering problems that I'm sure I'll sort out soon. However, these applications have worked for me in the past and a lot of people report fabulous success with them. Do give them a try.

If you don't mind a Red Hat/Fedora Core-based system, you're migrating from Microsoft Windows to GNU/Linux, and you're interested in music-related software, you might want to check out Stanford University's Planet CCRMA project:

http://ccrma.stanford.edu/planetccrma/software/

There are a number of GNU/Linux distributions available that are designed specifically for music production, but Planet CCRMA might be the most painless way of getting ready made music notation packages working--without using live media, anyway.

Sibelius in linux

Anonymous's picture

I have been able to install Sibelius using the Crossover Office program from codeweavers.com but it abruptly terminates just after loading the new sound patches.

I have many, but not all of the features working using the latest version of Wine.

Sibelius in Linux

Anonymous's picture

I too have been able to get Sibelius going with Crossover but have the same problem with termination. I can get a lot of the features working with wine as well, but the graphics do not display correctly, time signatures are missing the bottom number, key signature setup page is garbled, and notes and clefs are clunkly looking. Any ideas?

there is NO alternative

Joachim Brackx's picture

Same here, I'm a composer of contemporary classical music, so I need to be able to handle fairly complex notation with a simple GUI. No music typesetting in ascii for me...

I've been looking for a while and it is really quite simple: there is NO alternative to Sibelius / Finale under Linux.

Please prove me wrong. Please?

Wine?

Echo's picture

Correct the newb if I'm wrong, but wouldn't Wine allow it to be run in linux with few problems? I'm relatively new to linux(still getting used to xubuntu 9.04 and loving it), but from what I understand, Wine solves many Windows/linux compatibility issues. Should be worth a try at least?

Same here. Sibelius under

Psyborg's picture

Same here. Sibelius under M$, looking for similar thing under Linux.

I too am looking for a

Anonymous's picture

I too am looking for a Sibelius/Finale replacement in Linux.....

and have not yet found it.

Lilypond for linux

chopin2256's picture

Lilypond is an excellent typesetter compatible in both Windows and Linux systems. The program produces far better output than Finale or Sibelius in my opinion.

Here is my composition process:

First, I use the notation software, Personal Composer to compose my pieces since a visual GUI is desirable when composing a roughdraft work. Then I use Lilypond to typeset my music since its output is amazing. Lilypond basically is a compiler, and you have to know the lilypond language, so there is a learning curve. The benefits to this, is that you complete control over how your score looks.

Rosegarden.

Dan Winslow's picture

Rosegarden.

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