lilypond-1.5.12
[lilypond.git] / Documentation / MANIFESTO.yo
blobe47053222bcd42b6f95f5ccbd5441e4ade230995
2 article(MANIFESTO -- Rationale behind the GNU LilyPond project)(HWN
3 and JCN)()
5 sect(Goals for LilyPond)
8 GNU LilyPond was written with some considerations in mind:
11 itemize(
12 it() Describing a well-defined language for defining music. We call
13     this language (rather arrogantly) The Musical Definition Language
14     (mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a
15     TeX file.  
16 it() Providing an easy-to-use interface for typesetting music in
17     its broadest sense. This interface should be intuitive from a musical
18     point of view. By broadest sense we mean: it is designed for music
19     printed left to right in staffs, using notes to designate rythm and
20     pitch.
21 it()Generating high-quality output. Ideally it should be of a professional
22     quality. We'd like to render Herbert Chlapiks words, "Fine music
23     setting is not possible without a knowledgeable printer,"  untrue.
24 it()Making a system which is fully tweakable. It should be possible to
25     typeset a book on how not to typeset music.
28 sect(Development constraints)
31 Further considerations while doing the programming
33 itemize(
34 it()GNU LilyPond uses TeX for its output. This is not a key issue: in a
35     future version, GNU LilyPond might bypass TeX, but at the moment TeX
36     is convenient for producing output.
37 it()GNU LilyPond does not display notes directly, nor will it be rehacked
38     to be used interactively. GNU LilyPond writes output to a file.  It
39     will not be extended to play music, or to recognize music.
40 it()GNU LilyPond is intended to run on Unix platforms, but it should
41     be portable to any platform which can run TeX and the GNU tools
42 it()GNU LilyPond is free. Commercial windows packages for setting music are
43     abundant. Free musicprinting software is scarce. For more thoughts on
44     this, please consult the file(gnu-music) documentation.
45 it()GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit
46     broken systems.
49 sect(Goals for mudela)
51 The design of Mudela has been (perfect past tense, hopefully) an
52 ongoing process, the most important criteria being:
54 itemize(
55 it()define the (musical) message of the composer as unambiguously as possible.
56     This means that, given a piece Mudela, it should be possible for a
57     program to play a reasonable interpretation of the piece.
59     It also means that, given a piece of Mudela, it should be possible for a
60     program to print a score of the piece.
61 it()be intuitive, and easily readable (compared to, say, Musi*TeX input,
62     or MIDI :-),
63 it()be easily writable in ASCII with a simple texteditor
66 Other considerations were (and will be):
68 itemize(
69 it()be able to edit the layout without danger of changing the original
70     music (Urtext),
71 it()allow for adding different interpretations, again, 
72     without danger of changing the original,
73 it()easy to create a conductor's score, 
74     as well as the scores for all individual instruments,
75 it()provide simple musical manipulations, such as em(i) extracting a
76     slice of music from a previously defined piece, em(ii) extracting
77     only the rhythm from a piece of music, em(iii) transposing, etc.,
78 it()easy to comprehend to both programmers and others.
81 One of the things that (might) be here would be: feasible to use in a
82 graphic editor. We don't have experience with these beasts, so we
83 don't know how to do this. Comments appreciated.
85 Musical pieces could be
87 itemize(
88 it()Orchestral scores, (eg Mahler)
89 it()piano pieces (eg. Schubert, Rachmaninov),
90 it()pop songs (lyrics and chords),
91 it()Gregorian chants,
92 it()Bach multivoice organ pieces,
93 it()Short excerpts to be used in musicological publications.