MANIFESTO -- Rationale behind the GNU LilyPond project

HWN and JCN

Table of Contents

1: Goals for LilyPond

2: Development constraints

3: Goals for mudela



1: Goals for LilyPond

GNU LilyPond was written with some considerations in mind:

  • Describing a well-defined language for defining music. We call this language (rather arrogantly) The Musical Definition Language (mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a TeX file.
  • Providing an easy-to-use interface for typesetting music in its broadest sense. This interface should be intuitive from a musical point of view. By broadest sense we mean: it is designed for music printed left to right in staffs, using notes to designate rythm and pitch.
  • Generating high-quality output. Ideally it should be of a professional quality. We'd like to render Herbert Chlapiks words, "Fine music setting is not possible without a knowledgeable printer," untrue.
  • Making a system which is fully tweakable. It should be possible to typeset a book on how not to typeset music.
  • 2: Development constraints

    Further considerations while doing the programming

  • GNU LilyPond uses TeX for its output. This is not a key issue: in a future version, GNU LilyPond might bypass TeX, but at the moment TeX is convenient for producing output.
  • GNU LilyPond does not display notes directly, nor will it be rehacked to be used interactively. GNU LilyPond writes output to a file. It will not be extended to play music, or to recognize music.
  • GNU LilyPond is intended to run on Unix platforms, but it should be portable to any platform which can run TeX and the GNU tools
  • GNU LilyPond is free. Commercial windows packages for setting music are abundant. Free musicprinting software is scarce. For more thoughts on this, please consult the gnu-music documentation.
  • GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit broken systems.
  • 3: Goals for mudela

    The design of Mudela has been (perfect past tense, hopefully) an ongoing process, the most important criteria being:

  • define the (musical) message of the composer as unambiguously as possible. This means that, given a piece Mudela, it should be possible for a program to play a reasonable interpretation of the piece.

    It also means that, given a piece of Mudela, it should be possible for a program to print a score of the piece.

  • be intuitive, and easily readable (compared to, say, Musi*TeX input, or MIDI :-),
  • be easily writable in ASCII with a simple texteditor
  • Other considerations were (and will be):

  • be able to edit the layout without danger of changing the original music (Urtext),
  • allow for adding different interpretations, again, without danger of changing the original,
  • easy to create a conductor's score, as well as the scores for all individual instruments,
  • provide simple musical manipulations, such as i extracting a slice of music from a previously defined piece, ii extracting only the rhythm from a piece of music, iii transposing, etc.,
  • easy to comprehend to both programmers and others.
  • One of the things that (might) be here would be: feasible to use in a graphic editor. We don't have experience with these beasts, so we don't know how to do this. Comments appreciated.

    Musical pieces could be

  • Orchestral scores, (eg Mahler)
  • piano pieces (eg. Schubert, Rachmaninov),
  • pop songs (lyrics and chords),
  • Gregorian chants,
  • Bach multivoice organ pieces,
  • Short excerpts to be used in musicological publications.

  • Return to GNU LilyPond's home page.

    Please send GNU LilyPond questions and comments to gnu-music-discuss@gnu.org.

    Please send comments on these web pages to (address unknown), send other FSF & GNU inquiries and questions to gnu@gnu.org.

    Copyright (c) 1997, 1998, 1999 Han-Wen Nienhuys and Jan Nieuwenhuizen.

    Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


    This page was built from GNU LilyPond-1.1.57 by

    root <(address unknown)>, at Tue Jul 13 11:30:28 1999 CDT.