]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/mudela.doc
release: 0.1.59
[lilypond.git] / Documentation / mudela.doc
1 % -*-tex-*-
2
3 % this document should be run through the mudela-book script after lilypond
4 % has been installed.  The rules have been precooked into the
5 % Documentation/Rules.make file; do 
6 %
7 %   make out/introduction.dvi
8 %
9 % or
10 %
11 %   mudela-book --outdir=out/ --outname=introduction.mudtex introduction.doc
12 %   latex '\nonstopmode \input out/introduction.mudtex'
13
14 % Hoi Tim, hier staan wat 'enge' commando's (die dingen met een '\'
15 % zoals \documentclass en \def\mudela...).
16 % Daar moet je je niets van aantrekken, ga gewoon naar Introduction
17 % en begin te tiepen.
18
19 \documentclass{report}
20 \usepackage{a4wide}
21 \title{Mudela}
22 \author{Jan Nieuwenhuizen \& Han-Wen Nienhuys}
23 \date{March 2, 1998}
24
25 \def\file#1{\verb+#1+}
26
27 % ugh: trick to get examples not generate par
28 % these are for 16pt
29 \def\mudelapaperlinewidth{-28.452756}%
30 \def\mudelapaperindent{28.452756}%
31 \def\mudelapaperrulethickness{0.400000}%
32 \def\mudelapaperbarsize{16.000000}%
33 \def\mudelapaperinterline{4.000000}%
34 \def\mudelapapernotewidth{5.930000}%
35 \def\mudelapaperwholewidth{8.640000}%
36 \def\mudelapaperunitspace{22.000000}%
37 \def\mudelapaperbasicspace{4.000000}%
38 \def\mudelapapergeometric{0.000000}%
39 \def\mudelapaperarithmetic_basicspace{2.000000}%
40 \def\mudelapaperarithmetic_multiplier{4.800000}%
41 \def\mudelapaperinterbeam{3.140000}%
42 \def\mudelapapergourlay_energybound{100000.000000}%
43 \def\mudelapapergourlay_maxmeasures{14.000000}%
44 % huh?
45 % \def\exampleheight{2\mudelapaperbarsize pt}
46 \def\exampleheight{2cm}
47
48 % ful of pars, needs the above
49 \input lilyponddefs
50 % generates par
51 \musixsixteendefs
52 \def\musixsixteendefs{}
53 % generates par
54 \turnOnPostScript%
55 \def\turnOnPostScript{}
56 % generates par
57 \def\interscoreline{}
58
59
60 \begin{document}
61 \maketitle
62
63 %\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm}
64 %\def\interexample{\hbox to10mm{\hfill\hbox to0pt{\hss\vbox to\exampleheight{\vss$\Longrightarrow$\vss}\hss}\hfill}}
65 \def\interexample{}
66 \def\preexample{\par}
67 \def\postexample{\par\medskip}
68
69 \def\file#1{{\texttt{#1}}}
70 \setcounter{secnumdepth}{-1}
71
72 \chapter{A tutorial}
73
74 \emph{\Large ***Under construction***}
75
76 \section{Introduction}
77
78 This chapter is a gentle introduction to using LilyPond to typeset
79 simple music.
80
81 LilyPond is a so called ``batch'' program.  This means, that you use a
82 text editor (such as \texttt{emacs} or \texttt{vi}) to create an input
83 file.  When you are done editing your input file, you save it, and you
84 run LilyPond on the file.  If Lily finds any errors in your input file
85 then she\footnote{ We're sure that if computer programs could have
86 gender, LilyPond would be a female computer program.  So we will refer
87 to the program as a she. This gender-bending is not to tease you, dear
88 reader.  We do it in real life as well. In the past two years LilyPond
89 has become sort of a baby daughter to us, keeping us awake at night,
90 but also providing us lots of joy.  We hope you do not mind our little
91 aberration from computer-manual tradition.
92
93 % The name LilyPond is actually sort of a girl's name.  Can you guess which
94 % one ?
95 %
96 } will complain.  If everything is well, than she'll generate a file, that
97 you can process further to view or print.
98
99 Using LilyPond to print or view some music is a procedure with four
100 steps.  To get you started we'll run down the full procedure for you
101 once.
102
103 \begin{enumerate}
104 \item
105 Fire up your favourite editor (if you know none, try \texttt{joe silly.ly}),
106 and key in the following text:
107 \begin{verbatim}
108 \score {
109         <
110         \type Staff = aStaff \melodic { g'2 e'4 }
111         \type Lyrics = yell \lyric { Air2 ball!4 }
112         >
113         \paper {}
114 }
115 \end{verbatim}
116
117 Save your file as \file{silly.ly}.
118
119 %The input files for LilyPond have the default extension \file{.ly}.
120
121 \item
122 Run LilyPond on your newly created file: enter \verb+lilypond silly+.
123 LilyPond will then print all kinds of mumbo jumbo that can safely be
124 ignored.  You might see something like this:
125 \begin{verbatim}
126 GNU LilyPond 0.1.55/FlowerLib 1.1.39
127 Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/
128
129         ... stuff left out here ...
130
131                                 Documentation/silly.ly]
132 Interpreting music ...[1] (time: 0.04 seconds)
133 Preprocessing elements... 
134 Calculating column positions ... [2]
135 Approximated: 1 lines, (with an average of 4.0 columns)
136 Time: 0.01 seconds
137 warning: Can not solve this casting problem exactly; revert to Word_wrap
138 [2]Time: 0.00 seconds
139
140 Postprocessing elements...
141 TeX output to silly.tex ...
142 \end{verbatim}
143 All has gone well; there were some warning but no errors.  The output
144 is a TeX file, and it is called \file{silly.tex}.  \file{TeX} is
145 usually spelled as \TeX.  It is batch program for typesetting text,
146 developed by the great programmer and scientist Donald Knuth to
147 typeset his famous The Art of Computer Programming bookseries.  As you
148 can see \TeX\ can be adapted to do a lot more.  In fact, the document
149 that you are reading now was also done with \TeX.
150 \item
151   To do something useful with the output you have to run \TeX\ on it
152   first.  Run the command \verb+tex silly+.  The output should resemble this:
153 \begin{verbatim}
154 This is TeX, Version 3.14159 (C version 6.1)
155 (silly.tex
156 Babel <v3.6h> and hyphenation patterns for american, dutch, loaded.
157 (/home/hanwen/lib/texmf/tex/lilypond/lilyponddefs.tex
158 (/home/hanwen/lib/texmf/tex/lilypond/dyndefs.tex)
159 (/home/hanwen/lib/texmf/tex/lilypond/fetdefs.tex
160 (/home/hanwen/lib/texmf/tex/lilypond/feta20.tex)
161 (/home/hanwen/lib/texmf/tex/lilypond/lily-ps-defs.tex))) [1] )
162 Output written on silly.dvi (1 page, 3084 bytes).
163 Transcript written on silly.log.
164 \end{verbatim}
165   The human translation is ``everything went OK, the result is one
166   page long, and I put it in \file{silly.dvi}.''
167
168 \item The \file{silly.dvi} file is a description of how a piece of
169 text looks when it is printed.  You can view it, or print it.  If you
170 are using a Unix system equipped with X-Windows, then you can issue
171 the command \file{xdvi silly} to view the result.  If this is not the
172 case, consult your local \TeX\ guru on printing and viewing DVI files.
173 What is in your window should look like this:
174 \begin{mudela}
175 \score {
176         <
177         \type Staff = aStaff \melodic { g'2 e'4 }
178         \type Lyrics = yell \lyric { Air2 ball!4 }
179         >
180 }
181 \end{mudela}
182 \end{enumerate}
183
184 The remainder of this document is not about \TeX, and mostly not even
185 about LilyPond.  What you entered into your text editor in step~1. and
186 fed to LilyPond is a special kind of file composed of notenames,
187 special words and punctation.  The remainder of this document explains
188 how to combine these elements to express a piece of music in the
189 language that LilyPond understands.  In other words, we try to explain
190 how to use LilyPond, and not how LilyPond works.  For want of a better
191 name we call this language Mudela (short for Music Description
192 Language).
193
194 This document does not cover all of Mudela.  Due to technical details,
195 the precise working of Mudela is coupled to the innards of LilyPond.
196 If you really want to know all the details, your best bet would be to
197 get the sources to LilyPond and read the parser and scanner source.
198 They are in \file{lilypond-x.y.z/lily/parser.y},
199 \file{lilypond-x.y.z/lily/lexer.l\footnote{Of course, it would be even
200 better if you would improve LilyPond and send the resulting diffs to
201 us.  But that would a really different ballpark (And we haven't
202 started with the programming guide yet.)}
203
204 In the following sections the basic elements of Mudela are presented.
205 We don't want to bore you too much with details, so we will leave-out
206 some red tape that's needed for a valid piece of Mudela: to be
207 precise, we will write \verb+X Y Z+, when we really mean
208 \begin{verbatim}
209 \score {
210         \melodic { X Y Z }
211         \paper {}
212 }
213 \end{verbatim}
214 Usually, we will also print the resulting fragment of music on the
215 right just as it was produced by LilyPond.  
216
217 For the remainder we will assume that you can carry out steps 1 to 4
218 from the above instruction.  We will also assume that you know how
219 music notation works.  If you are not familiar with the English terms
220 for music notation, then you should consult XXXX [FIXME], it contains
221 a glossary of musical terms.
222
223 \section{Music copying versus music definition}
224
225 If you have done music copying before, then using LilyPond may seem
226 awkward to you in the beginning.  The purpose of LilyPond is informally
227 explained by the term ``music typesetter.''
228
229 This may give the impression that the program is like a drawing tool
230 that lets you control precisely how the music is formatted.  This is
231 not the case: not only does the program print musical symbols,
232 LilyPond also tries to make esthetic decisions---to be precise, we
233 programmed her to do what we find pretty.  You do not have complete
234 control over what is happening.  On the other hand, good engraving is
235 a very complex trade, so it is a Good Thing that you do not have to
236 worry about what is happening.
237
238 Secondly, LilyPond operates on musical definitions.  This really is
239 something different from graphical definitions.  If you copy music by
240 hand from a printed score, you don't have to know what the score
241 means; you just copy the symbols.  With LilyPond such a thing is not
242 possible: we expect you to enter the meaning of the score, not the
243 score itself.  If put more concretely: you do not enter ``black
244 notehead without flag, fourth staff line'', but ``a quarter note,
245 pitch d$^2$''.  LilyPond will figure out from the musical info what
246 kind of graphic presentation is needed.
247
248 This has some drawbacks: most notably, it is difficult to enter sheet
249 music that you cannot read.  On the other hand, any piece of music
250 once entered can be played and transposed automatically.
251
252
253 \section{When you know the notes to print\ldots}
254
255 The basic building block of music is the note.  You can have LilyPond
256 print a note by specifying its pitch and the duration.  The pitch of
257 the central C, also known as c$^1$, is written as \verb+c'+.  A quarter
258 note duration is written as \verb+4+.  So, to print quarter note with
259 central C pitch, you enter the following
260 \begin[fragment,verbatim,center]{mudela}
261 c'4
262 \end{mudela}
263 The pitch \verb+c'+ actually consists of two parts: one for the note
264 name, and one part for the octave.  The number of apostrophes
265 specifies the octave to use, and the letter which note name to use.
266 The note names simply are the letters \verb+a+ to \verb+g+.
267
268 For example,
269 \begin[fragment,verbatim]{mudela}
270   c'4 d'4 e'4 c'4 c''4 d''4 e''4 f''4 g''4 a''4 b''4 c'''4
271 \end{mudela}
272
273 The duration of a note is specified as a number: a whole note is
274 denoted by 1, the half note by 2, the quarter by 4, and so on.  Here
275 are some random notes to show how it works
276 \begin[fragment,verbatim]{mudela}
277 'c8 c8 c'16 c''32 d''64 b'64 c'''2 c1 c'4 d'4 e'4 f'4 g'4 a'4
278 \end{mudela}
279
280 This gives us already enough material to make simple songs:
281 \begin[fragment,verbatim]{mudela}
282         c''4 d''4 e''4 c''4
283         e''4 f''4 g''2
284         g''8 a''8 g''8 f''8 e''4 c''4
285         c''4 g'4 c''2
286 \end{mudela}
287
288 There is only one part about pitches that we haven't told you:
289 chromatically altered pitches.  The names ``a'' to ``g'' for typing
290 pitches are convenient: they are short, pronounceable and they
291 resemble the normal vocabulary for pitches.
292
293 Enter flats and sharps.  In English there is no standard terse word
294 for C sharp or C flat.  For this reason, we implemented a different,
295 non-english convention for entering altered pitches, see
296 table~\ref{notename-tab}: one makes a note sharp by adding the suffix
297 ``--is'' to the name, one makes the a note flat by adding the suffix
298 ``--es.''  For a double sharp you simply add another ``--is'' suffix,
299 flats ditto.
300
301
302 \begin{table}[h]
303   \begin{center}
304     \caption{Defaults note names}\label{notename-tab}
305     \begin{tabular}{ll}
306       english         &LilyPond\\
307       \hline\\
308       c double flat   &ceses\\
309       c flat          &ces\\
310       c natural       &c\\
311       c sharp         &cis\\
312       c double sharp  &cisis\\
313     \end{tabular}
314     
315   \end{center}
316 \end{table}
317
318 Variations on this convention are used in a number of germanic
319 languages, notably Dutch, German, Swedish, and Norwegian.  To be
320 precise, LilyPond actually defaults to dutch notenames, with aes,
321 aeses, ees and eeses added for consistency.
322
323 If you are not comfortable with these names, you can make your own
324 names.  Included with the example initialisation files are note names
325 for different languages, among others English (C sharp is abbreviated
326 to cs), Italian, Swedish, Norwegian
327
328 \section{Hairy rhythms}
329
330 \section{Handy input}
331
332 % \subsection{Durations}
333
334 However, having only quarter notes may get a bit dull.
335 Durations are entered as their reciproce values
336 % a1 a2 a4 a a8 a a16 a a32 a a64 a a a a
337 \begin[fragment,verbatim,center]{mudela}
338 a1 a2 a4 a a8 a a16 a32 a64
339 \end{mudela}
340 note that you only have to specify
341 the duration when it changes:
342 Lily assumes a note has the same duration as the previous one.
343
344 Now we can already write a little tune
345 \begin[fragment,verbatim,center]{mudela}
346 c d e c | c d e c | e f g2
347 \end{mudela}
348 As you'll probably have guessed,
349 the vertical bar (pipe) \verb+|+ may be used to mark
350 measures.
351
352 In the scale shown above
353 we left-out the last c note of the next octave.
354 Postfixing the pitch with a quote \verb+'+
355 produces a note by one octave higher
356 \begin[fragment,verbatim,center]{mudela}
357 c c' c''
358 \end{mudela}
359
360 Prefixing the pitch with a quote \verb+'+
361 produces a note by one octave lower
362 \begin[fragment,verbatim,center]{mudela}
363 a 'a ''a
364 \end{mudela}
365
366 \section{Slurs and Ties}
367
368 A tie connects two adjacent noteheads
369
370 \begin[fragment,verbatim,center]{mudela}
371 e' ~ e
372 \end{mudela}
373
374 Whereas a slur rather connects `chords', 
375 and tries to avoid crossing stems
376
377 \begin[fragment,verbatim,center]{mudela}
378 e'( )e
379 \end{mudela}
380
381 And of course, such a (legato) slur can span several notes
382 \begin[fragment,verbatim,center]{mudela}
383 c( d e )f
384 \end{mudela}
385
386 \section{Beams and Plets}
387
388 A beam is 
389 \begin[fragment,verbatim,center]{mudela}
390 [a8 a] [a16 a a a]
391 \end{mudela}
392
393 Here's a beamed triplet
394 \begin[fragment,verbatim,center]{mudela}
395 [/3 a8 a a]/1
396 \end{mudela}
397
398 a triplet without a beam
399 \begin[fragment,verbatim,center]{mudela}
400 \[/3 a4 a8\]
401 \end{mudela}
402
403 and a combination
404 \begin[fragment,verbatim,center]{mudela}
405 [/3 a8 a16 a] a8 \]
406 \end{mudela}
407
408 Abbreviations
409 \begin[fragment,verbatim,center]{mudela}
410 c1:16 [:16 e1 g]
411 \end{mudela}
412
413 \begin[fragment,verbatim,center]{mudela}
414 c4:32 [:16 c8 d8]
415 \end{mudela}
416
417 \section{Notenames}
418
419 Lily has predefined sets of notenames
420 for various languages%
421 \footnote{These are Dutch, English, German, Italian and Swedish.
422 Simply include the language specific init file \file{<language.ly>}.}.
423 The default set are the ones we like best are the Dutch notenames.
424
425 A sharp is formed by adding \verb+is+
426 \begin[fragment,verbatim,center]{mudela}
427 cis dis eis fis gis ais bis
428 \end{mudela}
429
430 and a flat is formed by adding \verb+es+%
431 %\footnote{Exceptions: \verb+es+ and \verb+as+.}
432 \footnote{Exceptions: {\tt es} and {\tt as}.}
433 \begin[fragment,verbatim,center]{mudela}
434 ces des es fes ges as bes
435 \end{mudela}
436
437 With the obvious names for double sharps
438 \begin[fragment,verbatim,center]{mudela}
439 cisis disis eisis fisis gisis aisis bisis
440 \end{mudela}
441
442 and double flats
443 \begin[fragment,verbatim,center]{mudela}
444 ceses deses eses feses geses ases beses
445 \end{mudela}
446 See why we like-em?
447
448 There are two special `notenames', the rest
449 \begin[fragment,verbatim,center]{mudela}
450 r16 [a a a]
451 \end{mudela}
452
453 and the space
454 \begin[fragment,verbatim,center]{mudela}
455 a2 s-"diminuendo" | a
456 \end{mudela}
457
458
459 \section{Commands}
460
461 \begin[fragment,verbatim,center]{mudela}
462 \clef "bass"; 'c
463 \end{mudela}
464
465 and a clef-change
466 \begin[fragment,verbatim,center]{mudela}
467 \clef "violin"; f' e' \clef "alto"; d' c'
468 \end{mudela}
469
470 \begin[fragment,verbatim,center]{mudela}
471 \meter 3/4; c g g |
472 \end{mudela}
473
474 \begin[fragment,verbatim,center]{mudela}
475 \key fis cis;
476 'g 'a 'b cis d e fis g'
477 \end{mudela}
478 Note how Mudela allows you to 
479 convey a musical message
480 rather than forces you to produce a list of typesetting commands.
481 If the music a \verb+cis+, you type a \verb+cis+.
482 Depending on the key and context of the note
483 Lily will determine what accidentals to typeset.
484
485 A reminder accidental can be forced by
486 using an exclamation mark \verb+!+
487 on a pitch a reminder accidental
488 \begin[fragment,verbatim,center]{mudela}
489 cis d e cis | c! d e c |
490 \end{mudela}
491
492 \begin[fragment,verbatim,center]{mudela}
493 \meter 2/4;
494 \bar "|:"; c c \bar ":|:"; c c \bar ":|"; c c \bar "|."; 
495 \end{mudela}
496
497 \section{Chords and Voices}
498
499 Here's a simple chord
500 \begin[fragment,verbatim,center]{mudela}
501 <c e g>
502 \end{mudela}
503
504 here are a few
505 \begin[fragment,verbatim,center]{mudela}
506 <
507         { c()d()c }
508         { e()f()e }
509         { g()a()g }
510 >
511 \end{mudela}
512
513 and similarly voices
514 \begin[fragment,verbatim,center]{mudela}
515 <
516         { \voiceone c g c g }
517         { \voicetwo 'c2 'g2 }
518 >
519 \end{mudela}
520
521
522 \section{A complete example}
523 %\label{se:complete}
524
525 A Mudela file needs some red tape
526
527 \begin[verbatim,center]{mudela}
528 \score{
529         \melodic {
530                 \octave c';
531                 c d e c |
532                 c d e c |
533                 e f g2 |
534         }
535 }
536 \end{mudela}
537
538 \section{Lyrics}
539
540 \begin[verbatim,center]{mudela}
541 \score{
542         < 
543                 \melodic{ 
544                         \octave c'; 
545                         c d e c | c d e c |
546                         e f g2 | e4 f g2
547                         \bar "|.";
548                 }
549                 \type Lyrics \lyric{ 
550                         Fr\`e-4 re Ja- que
551                         Fr\`e- re Ja- que
552                         Dor- mez vous?2
553                         Dor-4 mez vous?2
554                 }
555         >
556 }
557 \end{mudela}
558
559 \section{Variables}
560
561
562 \section{Ly2dvi}
563 Check-out this handy little script 
564 that not only may save you quite some keystrokes,
565 but produces titles and takes care of
566 margins and (hopefully) papersizes.
567 See \file{ly2dvi (1)}.
568
569 \chapter{Input format reference}
570
571 October 8, 1997
572
573 This document describes the the GNU LilyPond input format, which is an
574 effective language for defining music.  We call this language (rather
575 arrogantly) The Musical Definition Language or Mudela, for
576 short.\footnote{If anybody comes up with a better name, we'd gladly
577   take this. Gourlay already uses Musical Description Language,
578   G-Sharp Score Definition Language.  ISO standard 10743 defines a
579   Standard Music Description Language.  We're not being original here}
580
581 The first aim of Mudela is to define a piece of music, being complete
582 from both from a musical typesetting, as from a musical performing
583 point of view.
584
585 The Musical Definition Language (Mudela), has a logical structure,
586 making use of identifiers, that allows for flexible input, and
587 definition reuse. See \file{MANIFESTO} for reasons and design considerations.
588
589 The below included for explanatory purposes only (i.e., for a complete
590 and up-to-date definition, see \file{lily/parser.y} and
591 \file{lily/lexer.l}):
592
593 As a related note, you should take a look at the examples and the init
594 files, as this document does not cover every aspect of mudela yet, and
595 may be out of date.\footnote{Ok, I am being pessimistic here.  This
596   just is a disclaimer.  Docs usually are written after the program
597   itself.}  This document intends to give an idea of how it works, it
598 is not a guide on how to use it.  
599
600
601 \section{Basic elements}
602
603 \subsection{Files}
604
605 The de-facto extension of Mudela is \file{.ly}. Files may be included by
606 entering \verb+\include+ at the start of a line:
607
608 \begin{verbatim}
609 \include "a_file.ly"
610 \end{verbatim}
611
612
613 \subsection{Comments}
614
615 Line comments are introduced by a
616 \verb+%+. 
617 Block comments are delimited
618 by 
619 \verb+%{+ 
620 and
621 \verb+%}+. 
622 They do not nest.
623
624 \subsection{Versions}
625
626 Occasionally, small changes in syntax across different versions of
627 Mudela might give syntax errors. To warn you about possible
628 incompatibilities, you can specify the Mudela version for which the
629 inputfile was written,
630 \begin{verbatim}
631 \version "0.0.50";
632 \end{verbatim}
633
634 A perl-script which tries to convert to newer versions
635 (\file{convert-mudela}) is included in the LilyPond distribution.
636
637 \subsection{Words}
638
639 Keywords are preceded by a backslash: \verb+\+. They contain
640 alphabetic characters only.
641
642 Identifiers in their normal form consist start with a backslash, a
643 alpha character, followed by alpha-numerics. Identifiers can contain
644 any characters (except whitespace, 
645  and \verb+%+), if you use this construct:
646
647 \begin{verbatim}
648 \$i'm_a_weird!!!identifier
649 \end{verbatim}
650
651 (which is the identifier with the name
652 \verb+i'm_a_weird!!!identifier+).  \verb+$+ Takes any sequence of
653 characters which are not whitespace, \verb+$+ and \verb+%+.
654 \verb+$i'm_a_weird!!!string+
655 \def\foobar{$} % silly fontlock mode 
656
657 \subsection{Nesting characters}
658
659 Mudela uses the brace (\verb+{+ and \verb+}+) for most hierarchical
660 structures.  For chords the \verb+<+ and the \verb+>+ are used as
661 nesting braces.
662
663 \subsection{Constants}
664
665 Please note that -.5 is not a Real.
666
667 \begin{verbatim}
668 "I am a string"
669 -1.2e3          % a real
670 12              % an int
671 \end{verbatim}
672
673         
674 \subsection{Identifiers}
675
676 When assigning identifiers you use
677
678 \begin{verbatim}
679 string = ...
680 \end{verbatim}
681
682 If you reuse identifiers, then the previous contents will be thrown
683 away after the right hand is evaluated, eg
684 \begin{verbatim}
685 bla = \melodic { \bla }
686 \end{verbatim}
687 is legal
688
689 When using identifiers they have to be escaped:
690
691 \begin{verbatim}
692 oboe = \melodic { ... }
693 \score{ \melodic { \oboe }}
694 \end{verbatim}
695
696 The left-hand part of the assignment is really a string, so 
697 \begin{verbatim}
698 "Foo bar 4 2 " = \melodic { .. }
699 \end{verbatim}
700
701 is also a valid assignment (but you would have trouble referencing to it)
702
703
704 \subsection{Hierarchical structures}
705
706 The general structure consists of declarations:
707 \begin{verbatim}
708 IDENTIFIER = \TYPE{
709         <type specific data>
710 }
711 \end{verbatim}
712 and instantiations:
713
714 \begin{verbatim}
715 \TYPE{ <type specific data> }
716 \end{verbatim}
717
718 (Currently, \verb+\score+ is the only type that can be instantiated
719 at top level. Currently declarations can only be done at top level)
720
721 Most instantiations that use an IDENTIFIER are specified as follows:
722
723 \begin{verbatim}
724 \TYPE{ IDENTIFIER [...] }
725 \end{verbatim}
726
727 Some exceptions on this rule have been made to prevent inputting
728 Mudela becoming tedious
729
730
731 \subsection{Modes:}
732
733 To simplify different aspects of music definition (entering the notes
734 and manipulating them) Mudela has a number of different input "modes":
735
736 \begin{description}
737
738
739 \item[Normal mode]
740
741 At the start of parsing, Mudela assumes normal mode.
742 In Normal mode, a word is looked up in the following order:
743 \begin{description}
744 \item{\verb+word+}    string
745 \item{\verb|"string"|} string
746 \item{\verb|\word|} keyword, identifier
747 \end{description}
748 In normal mode, a word is assumed to start with an alphabetic
749 character, followed by alpha-numeric characters.
750
751 \item[Note mode] Note mode is introduced by the keyword
752   \verb+\melodic+.  In Note mode, a word is looked up in the following
753   order:
754 \begin{description}
755 \item{\verb+word+} notename, string
756 \item{\verb|"string"|} string
757 \item{\verb|\word|} keyword, identifier
758 \end{description}
759
760 In Note mode a word is considered to have alphabetic characters only,
761 so the underscore (\_) is illegal.  If you accidently mistype a
762 notename, the parser will assume that you are entering a string (and
763 it will most likely complain that you should be in \verb|\lyrics| mode to
764 do lyrics)
765
766
767 \item[Lyric mode] Lyrics mode (and thus Simple mudela) is introduced
768   by the keyword \verb+\lyrics+.  Because of the various control
769   characters that can appear in lyrics, eg, ``foreign language''
770   accents, the inputting a string containing these has been made very
771   easy.
772
773 In Lyrics mode, a word is looked up in the following order:
774 \begin{description}
775 \item{\verb+word+}    string (thus a lyric)
776 \item{\verb|"string"|} string
777 \item{\verb|\word|} keyword, identifier
778 \end{description}
779
780 In Lyric mode every sequence of non-digit and non-white characters
781 starting with an alphabetic character or the \_ is considered a word.
782
783 \begin{verbatim}
784 a&@&@&TSI|{[    % a word
785 1THtrhortho     % not a "word"
786 Leise Fl\"u\ss{}teren meine Sapfe       % 4 words
787 _ _ _ _         % 4 words: 4 spaces
788 \end{verbatim}
789 \end{description}
790
791 These modes are of a lexical nature. Normal and Note mode largely
792 resemble each other, save the possibility of entering Reals, 
793 meaning of \verb+_+ and the resolution of words
794
795 \subsection{Notes}
796
797 You enter a note by giving the name and the reciprocal of the duration:
798
799 \begin[fragment,verbatim]{mudela}
800 a'4     % Dutch names
801 \end{mudela}
802
803 is a A-1 pitched crotchet. The ' signifies an octave change.  A-1 is 440
804 Hz concert-pitch. \verb+c'+ is also known as the central c. More examples:
805
806 \begin[fragment,verbatim]{mudela}
807         'a      % 110
808         a       % 220
809         A       % 110, uppercase octavates down
810         a'      % 440
811         a''     % 880
812         'as4.*2/3
813 \end{mudela}
814
815 The last one  is an A flat, (just below 110 Hz concert-pitch). The \verb+*2/3+
816 signifies that this note is part of a triplet (3 in stead of 2). The
817 duration is one and a half quarter note (\verb+4.+) times 2/3.
818
819 Notenames are just a special kind of identifiers, and can be declared
820 for any language appropriate (see \file{init/dutch.ly}).  The default language
821 for notenames is defined to be Dutch. In Dutch, the notenames are
822 a,b,c,d,e,f and g. Sharps are formed by adding the extension "is",
823 flats by adding ``es''
824
825 \begin{verbatim}
826 % double sharp
827 cisis disis eisis fisis gisis aisis bisis
828 % sharps
829 cis dis eis fis gis ais bis
830 % naturals
831 c d e f g a b 
832 % flats
833 ces des es fes ges as bes
834 % double flats
835 ceses deses eses feses geses ases beses
836 \end{verbatim}
837
838 Rests are named r or s
839 \begin{verbatim}
840 r       % print a rest
841 s       % a "space" rest, nothing is printed.
842 \end{verbatim}
843
844 These notenames along with duration are enough material to construct
845 simple melodies:
846
847 \begin[verbatim,fragment]{mudela}
848 \octave c';
849 c4 c4 g4 g4 a4 a4 g2
850 f4 f4 e4 e4 d4 d4 c2
851 \end{mudela}
852
853 Music is able to express more. generally speaking, the other
854 'features' are either connected between notes (slurs, beams: spanning
855 requests) or attached to notes (eg. accents). The former are
856 implemented as START and STOP stop features and then attached to the note.
857
858 \begin{description}
859 \item{[ and ]}      start and stop a beam
860 \item{( and )}      start and stop a slur
861 \end{description}
862
863 example: 
864 \begin[verbatim,fragment]{mudela}
865   \octave c';
866   [c8 () d8 () e8  
867   e8(] [)g8 <c'8] e'8>              % NO nesting!
868   [2/3 c8 c8 c8]1/1       % a triplet
869 \end{mudela}
870
871 Please note that these two characters do \emph{not} necessarrily nest,
872 they should be attached to the note.  For this reason, the construct
873 \verb+[ <c4 c4>]+ will generate a parse error.
874   
875 \subsection{Slurs and Ties}
876
877 Ties connect the noteheads of adjacent notes. They are entered as follows:
878
879 \begin[verbatim,fragment]{mudela}
880 a'4 ~ a''4
881 \end{mudela}
882
883 Slurs connect whole chords, and try to avoid crossing stems. They are
884 entered as follows:
885
886 \begin[verbatim,fragment]{mudela}
887 a'4(  )a''4
888 \end{mudela}
889
890 \subsection{Scripts}
891
892 Symbols which can be put at either side (above or below) of a staff
893 are entered as follows:
894 \begin[verbatim,fragment]{mudela}
895         a-^     % marcato, direction: default
896         %a^-     % portato, direction: above note
897         a_.     % staccato, direction: below note
898         a^\fermata      % predefined identifier
899         c_"marcato"     % add a text
900         c^"marcato"
901         c-"marcato"
902 \end{mudela}
903
904 If you want to define your own scripts refer to \file{init/script.ly} for
905 details.
906
907
908 Dynamics can be put after the notename:
909 \begin{verbatim}
910 a4 \dynamic { 0 } % 0 = fff, 7 = ppp
911 \end{verbatim}
912
913 Mudela defines the following dynamic identifiers:
914
915 \begin{verbatim}
916 ppp pp p mp mf f ff fff sfz fz fp
917 \end{verbatim}
918 and the following abbreviations:
919 \begin{verbatim}
920 \<      %start crescendo
921 \>      % start decrescendo
922 \!      % end crescendo/decrescendo
923 \end{verbatim}
924
925 \subsection{Defaults}
926
927 If omit the duration of a note, a default value is substituted. For
928 this default value mudela uses the last duration explicitly entered.
929
930 Thus the following inputs are  equivalent
931 \begin{verbatim}
932 c4 c4 c16 c16 c16 s16 c4 c16
933 c4 c c16 c c c c4 c16
934 \end{verbatim}
935
936 If you are typing music which does not lie in the "small" and "large"
937 octave, you can prevent having to type \verb+'+ all the time by using the
938 \verb+\octave+ command: These two lines have the same pitch.
939 \begin{verbatim}
940 c'' d'' e'' c d e c d e
941 \octave c''; c d e ''c ''d ''e \octave c; c d e
942 \end{verbatim}
943
944 By default the setting of \verb+\octave+ is 0.
945
946 \subsection{Lyrics}
947
948 Lyrics in Mudela resemble Simple mudela a lot, with notes substituted
949 by text. 
950
951 All syllables are entered separately, separated by whitespace 
952 \begin{verbatim}
953 Twin-4 kle4 twin-4 kle4 ... 
954 \end{verbatim}
955
956 Two syllables or words that compose a single
957 duration entry are bound together using an underscore 
958 \begin{verbatim}
959 He_could4 not4
960 \end{verbatim}
961
962 \section{Composition: forming bigger structures}
963
964 The previous examples tacitly assumed that a sequence of notes is
965 printed in a left to right manner. This is not entirely correct, you
966 will get the bigger picture in this section. 
967
968 In mathematics you can form expressions by combining expressions,
969 which are ultimately some kind of atom or terminal symbol.  The same
970 goes for mudela: there are some basic building blocks, and by
971 combining those you create complex music.
972
973 You can combine music in three ways:
974 \begin{itemize}
975 \item If you enclose a sequence of music-elements in braces ( \verb+{+
976     and \verb+}+ ), then you form another kind of music called (Voice) with those pieces.
977   The duration of the Voice is the sum of the durations of its elements
978 \begin{verbatim}
979 { c c g g a a g2 }      % twinkle twinkle
980 { { c c g g} { a a g2 } }
981 \end{verbatim}
982 \item You can stack music by enclosing a sequence of music elements
983   with \verb+<+ and \verb+>+. This is called a Chord.  The duration of a Chord is
984   the union of the durations of its elements Example:
985 \begin{verbatim}
986 <a4 {cis8 cis8} e'4>      % a-major chord
987 \end{verbatim}
988 \item 
989   You can form music by transposing music:
990 \begin{verbatim}
991 \transpose  
992                 d       % from c to the d that's one octave down
993                 { e4 f4 }       % the horizontal music
994 \end{verbatim}
995 \end{itemize}
996
997 Of course you can also combine these three mechanisms.
998 \begin{verbatim}
999 { c <c e> <c e g> <c e g \transpose d' dis > }  % 4 increasing chords
1000 \end{verbatim}
1001
1002 The basic building block in Mudela is called Request. Examples of
1003 Requests are: Timing (such as Meter), Rhythmic, Melodic, Note (which is a combination of
1004 Rhythmic and Melodic), Musicscript (put an accent over a note or
1005 rest), etc.  For the actual up to date listing, you should consult the
1006 LilyPond source code: the Request types form a big class hierarchy.
1007
1008 Normally you don't enter Requests directly, since that would be
1009 tedious.  Mudela has standard abbreviations for the most common
1010 combination of Requests. If you enter \verb+c4+, this is an
1011 abbreviation for:
1012 \begin{verbatim}
1013 Request_chord{
1014   Note_req{
1015     notename: 0 acc: 0 oct: -1
1016     duration { 4}
1017   }
1018   Stem_req{
1019     duration { 4}
1020   }  
1021 }
1022 \end{verbatim}
1023
1024 The \verb+Request_chord+ is a special kind of chord which only allows
1025 Requests as its elements.  The examples of the previous section were
1026 processed with \verb+{+ and \verb+}+ enclosing the input.
1027
1028 \subsection{Durations}
1029
1030 A duration always starts with the duration type (1,2,4 etc), and then
1031 any optional multipliers/dots.  Old fashioned durations can be entered
1032 as follows
1033 \begin{verbatim}
1034 'c\breve
1035 gis'\longa
1036 \end{verbatim}
1037
1038
1039         
1040 \subsection{Meters/groupings}
1041
1042 A meter has this form:
1043 \begin{verbatim}
1044 \meter 3/4 ;
1045 \end{verbatim}
1046
1047 Rhythmic grouping is  a concept closely associated with this. For
1048 example, in a 5/8 meter, the counts are grouped 2+3. In mudela this is
1049 entered as
1050 \begin{verbatim}
1051 \grouping  8*2 8*3 ;
1052 \end{verbatim}
1053 You can start the piece with a partial measure, the command takes the
1054 same syntax as grouping: 
1055 \begin{verbatim}
1056 \partial 16*3 4;
1057 \end{verbatim}
1058
1059 Make the piece start with a upstep [english translation?]
1060 lasting 1 3/4 quarter notes.
1061
1062 These commands are also "voice elements", and constitute ``Music''
1063 (consisting of stuff with duration 0).
1064
1065
1066 \subsection{Voicegroups}
1067
1068
1069 [OUTDATED]
1070
1071 If more than one "voice" is in a staff, then you have the option of
1072 putting the different voices into so called voicegroups: members of
1073 the same voicegroup share certain characteristics, among others:
1074
1075         - dynamics
1076         - text
1077         - beams and stems
1078         - scripts
1079
1080 For the actual list, see the init file \file{init/register.ly}
1081
1082 Putting different musical lines in to the same voicegroup effectively
1083 makes LilyPond try to form chords of all those lines. Putting
1084 different musical lines in to different voicegroups effectively makes
1085 LilyPond try to set those lines as independently as possible. 
1086
1087 [adsolete. Has to be fixed in lily]
1088
1089 You can set the voicegroup of a voice with the command \verb+\group+, e.g.,
1090
1091 \begin{verbatim}        
1092         oboeI = \melodic { 
1093                 \group "oboes"; 
1094                 [e8 f8
1095                 \group "+solo";
1096                 [g16 a16 g16 fis16]
1097                 \group "-";
1098                 g8 f8
1099         }
1100         oboeII = \melodic { \group "oboes";
1101                 c8 d8]
1102                 e4
1103                 e8 d8
1104         }
1105         ///     ...
1106
1107         \staff { 
1108                 melodicregs \melodic{ oboeI }
1109                 \melodic { oboeII}
1110 }
1111 \end{verbatim}
1112
1113 In this example, the two oboe voices share one staff and are initially
1114 in the voicegroup called "oboes". They will share beams, dynamics etc.
1115 After two quarter notes, oboeI "pushes" its group: a new voicegroup is
1116 created, called "oboes+solo". The \verb+\group "-"+ command makes the
1117 voice enter "oboes" again.
1118
1119 Please do note that [] are voicegroup wide; the previous input is
1120 valid: the beam, started in oboeI, voicegroup "oboes" is also ended in
1121 voicegroup "oboes", albeit not in oboeI but oboeII
1122
1123 This concept may seem contorted, but it allows you to set the separate
1124 oboe parts without changing the \verb+oboeI+ and \verb+oboeII+ (assuming that
1125 you edit the [] in the example.)
1126
1127 The construct
1128 \begin{verbatim}
1129 < { .... } {......} >
1130 \end{verbatim}
1131 makes a chord (all horizontal parts are in the same voicegroup). The construct
1132 \begin{verbatim}
1133 \multi 2 < { ....} { .... } >
1134 \end{verbatim}
1135 creates horizontal parts which behave independently. You will have to
1136 set voicegroup features by hand (\verb+\stem+ and \verb+\hshift+. See examples)
1137
1138 The construct
1139 \begin{verbatim}
1140 \multi 3 < { ....} { .... } >
1141 \end{verbatim}
1142 creates  a chord with each part in a different staff
1143
1144
1145 \subsection{Examples}
1146
1147 Examples are included with the GNU LilyPond distribution. For the sake of
1148 maintenance no long examples are included in this document.
1149
1150
1151 \section{History}
1152
1153 This language has a number of roots. First and foremost, GNU
1154 LilyPond's predecessor mpp was the inspiration of the Note-mode input.
1155 Secondly, the hierarchical structure looks a lot like Rayce's (Rayce
1156 is a raytracer that I've written as a hobby project. ), which in turn
1157 owes a lot to POVRay.
1158
1159 Now, we know, musictypesetting and raytracing do not necessarily
1160 require the same input format, and we know that a lot more ways exist
1161 to convert music to ASCII, but we did give this language some
1162 thoughts. As always suggestions are appreciated.
1163
1164 \end{document}
1165
1166