Skip to content

Why neumaRk — and how it compares to ABC and LilyPond

At first glance neumaRk looks like other text-based music formats — ABC Notation in particular. In truth its real starting point was closer to LilyPond than to ABC: from LilyPond it takes the declarative approach — you describe the music and the software works out the rendering — along with the convenience of having burdensome details such as beaming handled automatically (in ABC they are left to whoever is writing).

That said, both LilyPond and ABC were created to produce a well-engraved score. What I was after, instead, was a text format that sat more on the musician's side than the music editor's. neumaRk grew out of that need, guided by a few core principles.

Musical content before graphic rendering

Writing in neumaRk means describing the music, not the way it should be drawn on the page: the graphic representation is the software's responsibility.

For example, a note with a duration of 8*5 (five eighths) is automatically split into several rhythmic figures, with ties and beaming determined by context, so that it reads properly on the staff. In the same way, a chord symbol is not a label attached to a melody note but identifies a harmonic area independent of any melodic content — to the point that you can write an entire chart without entering a single melody note.

A source that people can read, too

One of the main goals was a source that looked as much as possible like a real lead sheet.

That is why the format is two-dimensional: chords, notes, lyrics, dynamics and other layers are laid out on parallel rows and aligned vertically, so that the simultaneity of events is immediately visible, as it naturally is in a score. The result is a source that stays largely readable even for someone who doesn't know neumaRk's syntax or full music notation.

Speed of writing

Source readability and speed of writing, on their own, pull in opposite directions. neumaRk doesn't choose: it lets you choose. You can enter the music in a compact, or shorthand, form and let the app expand it into a more readable version, keeping a perfectly equivalent NRK source.

This applies in particular to durations, which are entered in implicit forms and made explicit later. The compact form is not meant to be read back like prose: it is an input gesture whose symbols mirror a musical thought. As an example — this line:

a16 !!' .,'! .!,! '!,! | ! ?

is automatically expanded into the explicit form, with every note written out in full:

a16 a16 a16 a'16^ a16 a,16 a'16 a16^ a16 a16 a,16 a16 a'16 a16 a,16 a16 | a16 a8.^ a4^ a2

that is, a run of sixteenth notes on A leaping between octaves, with a few held notes. A legend of the handful of tokens involved:

token meaning
a16 note a, sixteenth duration (pitch and duration then persist)
! re-strikes the previous note (same sound, same duration)
' like !, but one octave up
, like !, but one octave down
. holds: extends the previous note by one unit with a tie
? fills the rest of the bar holding the current note

Once learned, those symbols let you transcribe certain phrases — repeated notes, octave leaps, held notes — as fast as you think them. And the source stays readable anyway: just ask the app for the expanded form.

Lyrics, too, can be entered without worrying about manual alignment, through the LYRICS construct, which is then synchronized with the musical structure.

Musician-oriented constructs

neumaRk introduces a few elements that hardly belong to the tradition of music engraving but are useful while studying, rehearsing or playing live. Among them: collapsible or versionable sections, form expressions (PLAY and FORM), lyrics in several languages, and quick ways to annotate chords, notes and bars with a minimum of markup support.

The goal is to make the most, within the language, of what a score on a device offers compared with the static nature of paper or PDF.

Immediate rendering

Finally, rendering is essentially real-time. Unlike LilyPond's traditional "compile and check" cycle, every change is displayed immediately, keeping the writing process fluid.


Ultimately, neumaRk is not meant as an alternative to ABC or LilyPond in their natural domains: ABC is excellent for quickly transcribing monophonic melodies, and LilyPond is an outstanding tool for high-quality music engraving. neumaRk comes from a different need: a language for writing a lead sheet — or a simple score — from the point of view of the person who plays it, leaving the software the job of turning that description into clear, readable notation.