--- /dev/null
+=head1 NAME
+
+LilyError - LilyPond error messages
+
+=head1 DESCRIPTION
+
+This page documents error messages.
+
+A correctly parsed F<input.ly> does not guarantuee output. A lot
+(most) of the checking is done B<after> parsing (some checks even are
+done after the break calc!); I'm sorry.
+
+The parser's job is to construct appropriate objects. It will B<only>
+detect parse errors.
+
+ can't find slur to end
+
+Eg. with:
+
+ {d g ( } ) g8
+
+The {} part generates two one-note C<Voice>s, the C<g8> another, which
+is translated to start right after the chord. Slurs are contained
+within voices. LilyPond can't find a slur which started in this
+C<g8>'s voice. (what should C<{ d( g ( } )g8 )g8 }> look like? Use
+
+ { \music { d } \music { g()g8 } }
+
+
=head2 other
-A correctly parsed .ly does not guarantuee output. A lot (most) of the
-checking is done B<after> parsing (some checks even are done after the
-break calc!); I'm sorry.
-
-The parser's job is to construct appropriate objects. It will *only*
-detect parse errors.
-
LilyPond first reads 'symbol.ini', which contains declarations crucial
to proper operation of LilyPond (symbol tables, note names).
This language looks a lot like Rayce's which in turn owes a lot to the
POVRay raytracer. Now, I know, musictypesetting and Raytracing do not
necessarily require the same input format, but I was just to lazy to
-make up a new and/or better input format. Suggestions welcome.
+make up a new and/or better input format. Suggestions appreciated.
--- /dev/null
+% Pavane pour une Infante d\'efunte
+% by Maurice Ravel
+%
+% (Ravel has been dead for over 50 years. This does not have copyright)
+%
+% (there is an accompanying LaTeX file, pavane.tex)
+%
+horn =
+staff {melodic
+ music{ $
+ \octave { ' }
+ \duration { 8}
+
+% 1
+ d2( [)d e cis `b] |
+ `a4 [`b cis] [cis `b] `b4 |
+ fis2( [)fis g e d] |
+ cis4 [d e(] [)e fis d cis] |
+ `b4 [cis d(] [)d e cis `b] |
+ cis2 r2^"c\'edez" |
+ r4 fis2 fis4 |
+ fis2^"en mesure" ()[fis e a fis]|
+ fis4-- e4-- d4-- e4-- |
+ `b2()[`b^"un peu retenu" `a( d cis]|
+% 11
+ )`b [`fis^"en \'elargissant"-- `a-- `b--] cis4-- `b4--|
+ `fis2 r2 |
+ cis4^"1er mouvement" d4^"tr\`es lontain" ()[d cis d e]
+ \octave { }
+ | a4 gis2. |
+ a4 b4()[b a b 'cis] |
+ fis4 e4 cis2 |
+ e4 fis4 () [fis e fis gis] |
+ cis4 `b4()`b8 r8 r4^"tr\`es soutenu" |
+
+ r4 r4 | %2/4 meter
+
+ 'cis4_"\dyn ppp" 'd4 () ['d 'cis 'd 'e] |
+ a4 gis2. |
+ a4 b4()[b a b 'cis] |
+ fis4 e4 cis2 |
+ e4_"\dyn pp" fis4()[fis e fis gis] |
+ cis4_"\dyn mf" `b4()`b8 r8 r4^"un peu plus lent" |
+ r1 |
+ r2 r4 r4 %^\fermata
+%% cut 'n paste.
+ \octave { ' }
+ | d2^"Reprenez le mouvement"( [)d e cis `b] |
+ `a4 [`b cis] [cis `b] `b4 |
+ fis2( [)fis g e d] |
+ cis4 [d e(] [)e fis d cis] |
+ `b4 [cis d(] [)d e cis `b] |
+ cis2 r2^"c\'edez" |
+ r4 fis2 fis4 |
+ fis2^"en mesure"()[fis e a fis] |
+ fis4-- e4-- d4-- e4-- |
+ `b2() [`b `a-. d-. cis-.] |
+ `b-. [`fis^"large" `a `b] cis4 `b4 `fis2 r2 |
+
+ %% mark B
+ r1^"1er mouvement"
+ \duration {8}
+ | r2 [c-.( e-. c-. )`a-. ]
+ \plet {2/3}\octave{} |
+ | [c e a ] \plet{1/1} b4-> () [b c-- e-- a--] |
+ b4. b8()g2 |
+ r1 |
+ r2 [f a f d]
+ \plet {2/3}
+ | [f a 'c] \plet{1/1} 'e4-^ () ['e f-> a-> 'c->] |
+ 'e4._"sf" 'e8()'c4 r4 |
+ r1 |
+ r4 r4-\fermata
+ \octave { ' }
+ |d2( [)d e cis `b] |
+ `a4 [`b cis] [cis `b] `b4 |
+ fis2( [)fis g e d] |
+ cis4 [d e(] [)e fis d cis] |
+ `b4 [cis d(] [)d e cis `b] |
+ cis2 r2^"c\'edez" |
+ r4 fis2 fis4 |
+ fis2()[fis e a fis] |
+ fis4-- e4-- d4-- e4--
+ \octave{ }
+ | b2()[b a 'd 'cis] |
+ b [fis a b ] 'cis4 b4 |
+ fis2 r2 |
+ r1-\fermata
+ $}
+ commands {
+ key $fis cis $
+ }
+}
+score {
+ staff {
+ horn
+ }
+ paper {
+ output "pavane.out"
+ unitspace 1.5 cm
+ geometric 1.4
+ width 12cm
+ }
+ commands {
+ meter 4 *4
+ skip 18:0
+ meter 2 *4
+ skip 1:0
+ meter 4 *4
+ skip 20:0
+ bar "|:"
+ skip 9:0
+ meter 2* 4
+ skip 1:0
+ bar ":|"
+ meter 4* 4
+ skip 13:0
+ bar "||"
+ }
+}
\ No newline at end of file