Difference between revisions of "Lilypond"

From CCARH Wiki
Jump to navigation Jump to search
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
__TOC__
 +
 
LilyPond is the most feature-rich of the non-interactive graphical music notation rendering systems.  It evolved from TeX-based music notation display systems <ref>http://icking-music-archive.org/software/indexmt6.html</ref>. Therefore, the data format is similar to TeX or LaTeX syntax.  
 
LilyPond is the most feature-rich of the non-interactive graphical music notation rendering systems.  It evolved from TeX-based music notation display systems <ref>http://icking-music-archive.org/software/indexmt6.html</ref>. Therefore, the data format is similar to TeX or LaTeX syntax.  
  
Line 23: Line 25:
 
}
 
}
 
</pre>
 
</pre>
 +
Typing the command:
 +
    lilypond [[Media:trans.ly|trans.ly]]
 +
will generate a PDF file containing the following graphical music:
 
<center>
 
<center>
[[Image:lilypond-transpose.svg|508px|Rendered notation]]
+
[[Image:lilypond-transpose.svg|600px|Rendered notation]]
 
</center>
 
</center>
 
<br><br>
 
  
 
Here is a more complicated example of using the lilypond data format as a programming language to describe the prelude in C major from J.S. Bach's first book of the Well-tempered Clavier:
 
Here is a more complicated example of using the lilypond data format as a programming language to describe the prelude in C major from J.S. Bach's first book of the Well-tempered Clavier:

Latest revision as of 21:51, 2 December 2010

LilyPond is the most feature-rich of the non-interactive graphical music notation rendering systems. It evolved from TeX-based music notation display systems [1]. Therefore, the data format is similar to TeX or LaTeX syntax.

The primary lilypond data format is a form of programming language which can contain macros and functions with which to generate the music. For example, here is a melodic fragment (c, d, e, f, g) which is repeated starting on other pitches by using the function \transpose which takes three arguments: two pitches which define the transposition interval, and a sequence of notes to transpose.

\version "2.12.3"

melody =  \relative c' {
      c d e f g
}

sequence = \relative c' {
   \melody
   \transpose c d \melody
   \transpose c e \melody
   \transpose c f \melody
   \transpose c g \melody
}

\score {
   \new Staff \sequence
   \layout{}
}

Typing the command:

   lilypond trans.ly

will generate a PDF file containing the following graphical music:

Rendered notation

Here is a more complicated example of using the lilypond data format as a programming language to describe the prelude in C major from J.S. Bach's first book of the Well-tempered Clavier: http://nicolas.sceaux.free.fr/prelude/prelude.html

Compiled data

The above example can be converted into a list of notes using this command within the lilypond file:

   { \displayMusic \sequence }

This will generate the following data in the more conventional sense of musical data (note that (ly:make-pitch 0 0 0) is middle C). This output is suitable for converting to other data formats, unlike the original example which in a meta format of the actual underlying musical data. The data is in a LISP structure since it is processed internally in lilypond with Scheme.


(make-music
  'RelativeOctaveMusic
  'element
  (make-music
    'SequentialMusic
    'elements
    (list (make-music
            'RelativeOctaveMusic
            'element
            (make-music
              'SequentialMusic
              'elements
              (list (make-music
                      'EventChord
                      'elements
                      (list (make-music
                              'NoteEvent
                              'duration
                              (ly:make-duration 2 0 1 1)
                              'pitch
                              (ly:make-pitch 0 0 0))))
                    (make-music
                      'EventChord
                      'elements
                      (list (make-music
                              'NoteEvent
                              'duration
                              (ly:make-duration 2 0 1 1)
                              'pitch
                              (ly:make-pitch 0 1 0))))
                    (make-music
                      'EventChord
                      'elements
                      (list (make-music
                              'NoteEvent
                              'duration
                              (ly:make-duration 2 0 1 1)
                              'pitch
                              (ly:make-pitch 0 2 0))))
                    (make-music
                      'EventChord
                      'elements
                      (list (make-music
                              'NoteEvent
                              'duration
                              (ly:make-duration 2 0 1 1)
                              'pitch
                              (ly:make-pitch 0 3 0))))
                    (make-music
                      'EventChord
                      'elements
                      (list (make-music
                              'NoteEvent
                              'duration
                              (ly:make-duration 2 0 1 1)
                              'pitch
                              (ly:make-pitch 0 4 0)))))))
          (make-music
            'TransposedMusic
            'element
            (make-music
              'RelativeOctaveMusic
              'element
              (make-music
                'SequentialMusic
                'elements
                (list (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 1 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 2 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 3 1/2))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 4 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 5 0))))))))
          (make-music
            'TransposedMusic
            'element
            (make-music
              'RelativeOctaveMusic
              'element
              (make-music
                'SequentialMusic
                'elements
                (list (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 2 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 3 1/2))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 4 1/2))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 5 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 6 0))))))))
          (make-music
            'TransposedMusic
            'element
            (make-music
              'RelativeOctaveMusic
              'element
              (make-music
                'SequentialMusic
                'elements
                (list (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 3 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 4 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 5 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 6 -1/2))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 1 0 0))))))))
          (make-music
            'TransposedMusic
            'element
            (make-music
              'RelativeOctaveMusic
              'element
              (make-music
                'SequentialMusic
                'elements
                (list (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 4 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 5 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 0 6 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 1 0 0))))
                      (make-music
                        'EventChord
                        'elements
                        (list (make-music
                                'NoteEvent
                                'duration
                                (ly:make-duration 2 0 1 1)
                                'pitch
                                (ly:make-pitch 1 1 0)))))))))))

Links

Beethoven Piano Sonata Example

Mutopia Link for Beethoven Piano Sonata (PDF)

Compare to a professionally typeset version (France, 1911):

Compare to typesetting with full-featured graphical music notation editor (Sibelius 5):

Comments on the automatically typeset music (using Lilypond 2.12.2):

  1. m72-79: rests in top voice placed too high. The algorithm for placing rests in multi-voice staff parts should be adjusted: if the other voice is not overlapping the middle of the staff, and particularly if the notes of the voice are in the middle of the staff, the rests for that voice should occur in the default positions as if there were only one voice in the staff.
  2. In general, staves of system placed too far apart. This make it easier to typeset automatically since there will be less collisions to deal with, but allows for less music on a page and makes it slightly more difficult to read the music.
  3. Up-stems in m11 are way too short. This causes a collision of the accidental with the beam which decreases legibility.
  4. m41 con espressione is occluded by the barline, also decresc. in m90. The barline should break when text passes across it in most situations.
  5. Page 6 is partially filled (could be fixed by shrinking the music size to get the music to fit on 5 pages).
  6. Barlines are thicker than staff lines. This is more useful for single-staff parts where it is more difficult to see the barlines. For multi-staff parts (such as piano), barlines should have the same thickness as the staff lines because the barlines are easy to see between staves.
\version "2.12.2"

 \header {
  title = "Piano Sonate Opus 2 No 1 (1st Movement)"
  composer = "Ludwig Van Beethoven"
  mutopiatitle = "Sonata No. 1 (1st Movement: Allegro)"
  mutopiacomposer = "BeethovenLv"
  mutopiainstrument = "Piano"
  mutopiaopus = "Op. 2, No. 1"
  date = "1794/95"
  source = "Breitkopf & Hartel (1862-1865)"
  style = "Classical"
  copyright = "Public Domain"
  maintainer = "Stelios Samelis"
  lastupdated = "2008/January/06"
  version = "2.10.3"
  footer = "Mutopia-2008/01/07-1211"
}

\score {

 \new GrandStaff
 <<
 \new Staff = "up" {
 \clef treble
 \key f \minor
 \time 4/4
 \override Score.MetronomeMark #'transparent = ##t
 \tempo 4 = 190
 \override TextScript #'padding = #2.0
 \repeat volta 2 {
 \partial 4 c'4\p\staccato^\markup { \large \bold "Allegro." } f'\staccato
 aes'\staccato c''\staccato f''\staccato aes''4.( \times 2/3 { g''16[
 f'' e''] } f''4\staccato) r4 g'\staccato c''\staccato e''\staccato
 g''\staccato bes''4.( \times 2/3 { aes''16[ g'' f''] } g''4\staccato)
 r4 \acciaccatura c''16 aes''4.\sf( \times 2/3 { g''16[ f'' e''] }
 f''4\staccato) r4 \acciaccatura c''16 bes''4.\sf( \times 2/3 { aes''16[
 g'' f''] } g''4\staccato) r4 <c'' f'' aes'' c'''>2\ff\arpeggio\> bes''8([
 aes'' g'' f''\!]) \grace { e''16[ f'' g''] } f''4\p( e''\staccato)
 r4^\fermata r4 R1 R1 << { g''4\rest g''8\rest \times 2/3 { ees''16([
 des''! c''] } des''4\staccato) des''\staccato des''1~ des''4. \times
 2/3 { ees''16([ des'' c''] } des''4\staccato) des''\staccato g''4\rest
 g''8\rest \times 2/3 { des''16([ c'' b'] } c''4\staccato) c''\staccato
 } \\ { aes'1~ aes'4. \times 2/3 { bes'16([ aes' g'] } aes'4\staccato)
 aes'\staccato g'1 aes'1 } >> << { c''4\<( bes'!2\!\> aes'4\!) } \\ {
 f'1 } >> g'4\staccato ees''( des''! c'')~ c''4\<( bes'2\!\> aes'4\!)
 g'4 <ees' ees''>4\f( <des'! des''!> <c' c''>)~ <c' c''>4( <bes bes'>2
 <aes aes'>4) <g g'>4 r r fes''4\p( ees''4 des''! bes' g') fes'4.\sf(
 ees'8 aes'4\staccato) fes''4( ees'' des'' bes' g') fes'4.\sf( ees'8
 aes'4\staccato) fes''4( ees'' des'' bes' g') r8 g'( bes' aes') r a'( c''
 bes') r b'( des'' c'') r d''8\<( aes''\!\> d''\!)  ees''4 r r8 d''8\<(
 aes''\!\> d''\!) ees''4 r r8 g''8\<( fes'''\!\> g''\!) aes''4 r r8
 g''8\<( fes'''\!\> g''\!)  r8 g''\<( bes'' aes'') r a''( c''' bes'')
 r b''( des''' c''') r c'''( ees''' des'''\!)  r8 d'''8\f( f''' ees'''
 des''' c''' bes'' aes'' g''8 f'' ees'' des'' c'' bes' aes' g' f'\p ees'
 d' ees' d' ees' d' ees' d' ees' f' ees' d' ees' f' ees') r8 aes''8\f(
 f''' ees''' des'''! c''' bes'' aes'' g'' f'' ees'' des'' c'' bes' aes'
 g' f'\p ees' des' c' bes aes g f ees f g aes bes c' des' bes aes4) r4
 \acciaccatura d'16 ces''4._\markup { \italic "con espressione" }( bes'8)
 aes'2 g'4.( ees''8) ees''4\sf( aes'4) \acciaccatura d'16 ces''4.( bes'8)
 aes'2 g'4.( ees''8) ees''4\sf( aes'4) \acciaccatura d''16 ces'''4.(
 bes''8) aes''2 g''4.( ees'''8) <des'' g'' ees'''>1\ff\> <c'' ees''
 aes''>4\!\p r4 r }

 ees'4\p\staccato aes'\staccato c''\staccato ees''\staccato aes''\staccato
 c'''4.( \times 2/3 { bes''16[ aes'' g''] } aes''4\staccato) r4
 \acciaccatura des''16 des'''4.( \times 2/3 { c'''16[ bes'' a'']
 } bes''4\staccato) r4 bes'4\staccato des''\staccato g''\staccato
 bes''\staccato \acciaccatura des''16 des'''4.( \times 2/3 { c'''16[ bes''
 a''] } bes''4\staccato) r4 \acciaccatura des''16 des'''4.\<( \times 2/3
 { c'''16[ bes'' a''] } bes''4\staccato) r4\!  a''4\fp r r ges''( f''
 ees''! c'' a') ges'4.\sf( f'8 bes'4\staccato) ges''4( f'' ees'' c''
 a') ges'4.\sf( f'8 bes'4\staccato) ges''4( f'' ees'' c'' a') r8 a'(
 c'' bes') r bes'\<( des'' c'') r c''( ees'' des'') r b'( d'' c''\!)
 b'4\fp r r aes''!( g'' f''! d'' b') aes'4.\sf( g'8 c''4\staccato)
 aes''4( g'' f'' d'' b') aes'4.\sf( g'8 c''4\staccato) f'8 d' f'8 d' f'
 d' f' d' f' d' << { d''4\rest b'4( c'') d''4\rest R1 d''4\rest a'4(
 bes'!) d''4\rest R1 } \\ { f'8 d' f' d' ees' c' ees' c' ees' c' ees'
 c' ees' c' ees' c' ees' c' ees' c' des'! bes des' bes des'8 bes des'
 bes des' bes des' bes } >> << { r2 g'2 r2 aes'2^\sf r2 f'2 r2 g'2^\sf
 r2 e'2 r2 f'2^\sf r2 f'2^\sf } \\ { des'8 bes des' bes des' bes des'
 bes c' aes ees' aes ees' aes ees' aes des' aes des' aes des' aes des'
 aes des'8 g des' g des' g des' g c' g c' g c' g c' g aes f c' f c'
 f c' f des' f des' f des' f des' f } >> d'8 f <aes d' f'> f <aes d'
 f'> f <aes d' f'> f <g c' e'>4 r r c''4( aes'4\staccato) r4 r f''4(
 e''4\staccato) r4 r c'''4( f''\staccato) r \set doubleSlurs = ##t <f''
 f'''>2\sf( <e'' e'''>4\staccato) \set doubleSlurs = ##f r4 r \afterGrace
 c''4^\trill( { b'16[ c''] } aes'4\staccato) aes'\staccato r4 \afterGrace
 f''4^\trill( { e''16[ f''] } e''4\staccato) e''\staccato r4 \afterGrace
 c'''4^\trill( { b''16[ c'''] } f''4\staccato) f''\staccato r <f''
 f'''>4( <e'' e'''>\staccato) <e'' e'''>\staccato r4 <des''! des'''!>4(
 <c'' c'''>\staccato) <c'' c'''>\staccato r <f'' f'''>4_\markup {
 \italic "decresc." }( <e'' e'''>\staccato) <e'' e'''>\staccato r4
 <des''! des'''!>( <c'' c'''>\staccato) <c'' c'''>\staccato r4 <f''
 f'''>4( <e'' e'''>\pp\staccato) r4 r2 R1 r4 r8 \times 2/3 { aes'16([
 ges' f'] } ges'4\staccato) r4 r4 r8 \times 2/3 { ees'''16([ des'''
 c'''] } des'''4\staccato) r4 r4 r8 \setTextCresc \times 2/3 { f'16\<([
 e' d'] } e'4\staccato) r4 r4 r8 \times 2/3 { des'''!16([ c''' b''] }
 c'''4\staccato) r4 r4 r8 \times 2/3 { ees'16([ d' c'] } d'4\staccato)
 r4 r4 r8 \times 2/3 { c'''16([ bes'' a''] } bes''4\staccato) r4\!
 f'4\f\staccato aes'!\staccato c''\staccato f''\staccato aes''4.\sf(
 \times 2/3 { g''16[ f'' e''] } f''4\staccato) r4 g'4\staccato
 c''\staccato e''\staccato g''\staccato bes''4.\sf( \times 2/3 { aes''16[
 g'' f''] } g''4\staccato) r4 \acciaccatura c''16 aes''4.\sf( \times 2/3
 { g''16[ f'' e''] } f''4\staccato) r4 \acciaccatura c''16 bes''4.\sf(
 \times 2/3 { aes''16[ g'' f''] } g''4\staccato) r4 <c'' f'' aes''
 c'''>2\ff\arpeggio\> bes''8([ aes'' g'' f''\!]) \grace { e''16[ f''
 g''] } f''4\p( e''\staccato) r4^\fermata r4 R1 R1 bes''4.( \times 2/3
 { aes''16[ ges'' f''] } ges''4\staccato) ges''4\staccato << { ges''1~
 ges''4. \times 2/3 { ges''!16([ f'' e''] } f''4\staccato) f''4\staccato
 f''1 a''4\rest a''8\rest \times 2/3 { g''!16([ f'' e''] } f''4 g''
 aes''! e'' f'' b') } \\ { f'4\rest f'8\rest \times 2/3 { des''!16([ c''
 b'] } c''4\staccato) c''4\staccato c''1~ c''4.  \times 2/3 { c''16([
 bes'! a'] } bes'4\staccato) bes'4\staccato b'1 s1 } >> c''4\<( e'' f''
 g''\! aes''\> e'' f'' b'\!) <e' c''>4 r r des''4\p( c'' bes'! g' e')
 des'4.\sf( c'8 f'4\staccato) des'''4( c''' bes'' g'' e'') des''4.\sf(
 c''8 f''4\staccato) des'''4( c''' bes'' g'' e'') r8 e''8( g'' f'') r
 f''( aes'' g'') r g''( bes'' aes'') r b''\<( f'''\!\> b''\!) c'''4 r r8
 b''8\<( f'''\!\> b''\!)  c'''4 r4 r8 e''8\<( des'''!\!\> e''\!) f''4 r4
 r8 e''8\<( des'''!\!\> e''\!)  r8 \setTextCresc e''8\<( g'' f'') r f''(
 aes'' g'') r g''( bes'' aes'') r a''( c''' bes''\!)  r8 c'''8\f( f'''
 ees'''! des''' c''' bes'' aes''! g'' f'' ees'' des'' c'' bes' aes' g'
 f' e' des' c' b c' b c' b8\pp c' des' c' b c' des' c') r8 c'''8\f(
 f''' ees'''! des''' c''' bes'' aes'' g'' f'' ees'' des'' c'' bes'
 aes' g' f' e' des' c' b c' b c' b8\pp c' des' c') c'( bes! aes g f4)
 r4 aes'4._\markup { \italic "con espressione" }( g'8) f'2 e'4.( c''8)
 c''4\sf( f'4) aes'4.( g'8) f'2 e'4.( c''8) c''4\sf( f'4) \acciaccatura
 b'16 aes''4.( g''8) f''2 e''4.( c'''8) <c'' ees''! c'''>1\ff <bes'
 des'' f''>4 r r r8 <bes' des'' bes''>8 <bes' des'' bes''>1\ff <aes' c''
 ees''>4 r r <aes' c'' aes''>\sf\staccato <g' bes' des''>\staccato <g'
 bes' g''>\sf\staccato <f' aes' c''>\staccato <f' aes' f''>\sf\staccato
 <f' g' des'' f''>4\ff\staccato r <e' g' bes' c'' e''>\staccato r <f'
 aes' c'' f''>4\staccato r r4^\fermata \bar "|."
}

 \new Staff = "down" {
 \clef bass
 \key f \minor
 \time 4/4
 \repeat volta 2 {
 \partial 4 r4 R1 r4 <f aes c'>4\staccato <f aes c'>\staccato <f aes
 c'>\staccato <e g bes c'>4\staccato r4 r2 r4 <e g bes c'>\staccato
 <e g bes c'>\staccato <e g bes c'>\staccato r4 <f aes c'>\staccato
 <f aes c'>\staccato <f aes c'>\staccato r <g bes e'>\staccato <g bes
 e'>\staccato <g bes e'>\staccato r4 <aes c' f'>\staccato r <bes des'
 g'>\staccato r4 <c' g'>4\staccato r4^\fermata g,4\staccato^\p c\staccato
 ees!\staccato g\staccato c'\staccato ees'!4.( \times 2/3 { d'16[ c' b] }
 c'4\staccato) c'4\staccato <c' f'>1 <bes! f'>1 <bes ees'>1 <aes ees'>1
 des'2 d' ees'4 r r << { ees'4 f'2 f' ees'4 } \\ { c'4 des'2 d' ees'4 }
 >> r4 r << { ees4 f2 f2 } \\ { c4 des2 d2 } >> ees8 ees' ees ees' ees
 ees' ees ees' ees8 ees' ees ees' ees ees' ees ees' << { des'!2( c'4)
 s4 } \\ { ees4 ees ees8 ees' ees ees' } >> ees8 ees' ees ees' ees ees'
 ees ees' << { des'2( c'4) s4 } \\ { ees4 ees ees8 ees' ees ees' } >>
 ees8 ees' ees ees' des' ees' des' ees' c' ees' c' ees' g ees' g ees'
 aes! ees' aes ees' f d' aes d' ees8 ees' g ees' f d' aes d' ees ees'
 g ees' des! bes fes bes c aes ees aes des bes fes bes c8 aes ees aes
 g, g ees g aes,! aes ees aes bes,! bes ees bes c4 ees2\sf aes4 des4
 f2\sf bes4 ees4 aes2\sf c'4 des'!( bes g des) c,4 ees,2\sf aes,4 des,4
 f,2\sf bes,4 ees, aes,2\sf c4 des4( bes, g, ees,) aes,4 aes r <d f aes
 ces'>\staccato r4 <ees aes c'!>4\staccato r <ees bes des'!>\staccato r4
 <aes c'>\staccato r <d f aes ces'>\staccato r <ees aes c'!>\staccato r
 <ees bes des'!>\staccato r4 <aes c'> \clef treble r <d' f' aes' ces''>
 r <ees' aes' c''!> r <ees' bes' des''!> <aes bes des' ees' g'>1\ff\>
 <aes c' ees' aes'>4\!\p r4 r4 }

 r4 R1 \clef bass r4 <aes c' ees'> <aes c' ees'> <aes c' ees'> r <g bes
 des' ees'> <g bes des' ees'> <g bes des' ees'> R1 r4 <g bes des' e'>
 <g bes des' e'> <g bes des' e'> r <ges bes des' e'> <ges bes des' e'>
 <ges bes des' e'> f8 f' f f' f f' f f' f f' f f' f f' f f' << { ees'!2(
 des'4) s4 } \\ { f4 f f8 f' f f' } >> f8 f' f f' f f' f f' << { ees'2(
 des'4) s4 } \\ { f4 f f8 f' f f' } >> f8 f' f f' ees' f' ees' f' des'
 f' des' f' c' f' c' f' bes8 f' bes f' aes! fis' aes fis' g g' g g' g g'
 g g' g g' g g' g g' g g' << { f'!2( ees'4) s4 } \\ { g4 g g8 g' g g'
 } >> g8 g' g g' g g' g g' << { f'2( ees'4) } \\ { g4 g g } >> aes4(
 g f d b,) aes,4.\sf( g,8 c4\staccato) ges4( f ees c a,) ges,4.\sf(
 f,8 bes,4) fes4( ees des! bes, g,!)  fes,4( ees,2) ees4\sf~ ees c2 c,4~
 c,4 des,2 des4\sf~ des bes,2 bes,,4~ bes,, c,2 c4\sf~ c4 aes,2 aes,,4
 r4 bes,,2 bes,4 r b,,2 b,4 c,8 c e c e c e c f c f c f c aes c g8 c g
 c g c bes! c aes c c' c b c d' c c' c e c e c g c f c f c f c aes c g
 c g c g c bes! c aes8 c c' c b c d' c c' c c' c bes! c bes c aes c c'
 c b c d' c c' c c' c bes! c bes c aes c c' c b c d' c c'4\pp\staccato(
 c'\staccato c'\staccato c'\staccato) c'\staccato( c'\staccato
 c'\staccato c'\staccato) <c' des'!>\staccato( <c' des'>\staccato
 <c' des'>\staccato <c' des'>\staccato) <bes des'>\staccato(
 <bes des'>\staccato <bes des'>\staccato <bes des'>\staccato) <bes
 c'>\staccato( <bes c'>\staccato <bes c'>\staccato <bes c'>\staccato) <aes
 c'>\staccato( <aes c'>\staccato <aes c'>\staccato <aes c'>\staccato)
 <aes bes!>\staccato( <aes bes>\staccato <aes bes>\staccato <aes
 bes>\staccato) <g bes e'>\staccato( <g bes e'>\staccato <g bes
 e'>\staccato <g bes e'>\staccato) <f aes! c'>4\f r r2 r4 <f aes c'>
 <f aes c'> <f aes c'> <e g bes c'>4 r r2 r4 <e g bes c'> <e g bes c'>
 <e g bes c'> <f aes c'>2 r2 <g bes e'>2 r2 <aes c' f'>4\ff r <bes des'
 g'> r <c' g'>4\p r r4^\fermata c4\p\staccato f4\staccato aes\staccato
 c'\staccato f'\staccato \clef treble aes'4.( \times 2/3 { g'16[ f' e']
 } f'4\staccato) f'4\staccato <f' ges'>1 <ees' ges'>1 <ees' a'>1 <des'
 f'>1 << { f'2.( e'4 f'4 g' aes' f') e'4( g' f' e' f' bes'! aes' f') } \\
 { d'1~ d'1 c'1~ c'2 des'!2 } >> \clef bass c8 c' c c' c c' c c' c c' c c'
 c c' c c' << { bes2( aes4) s4 } \\ { c4 c c8 c' c c' } >> c8 c' c c' c c'
 c c' << { bes2( aes4) s4 } \\ { c4 c c8 c' c c' } >> c8 c' c c' bes c'
 bes c' aes8 f' c' f' g e' bes e' f c' aes c' des b f b c c' e c' des b f
 b c c' e c' bes,! g des g aes, f c f bes, g des g aes,8 f c f e, e c e f,
 f c f g, g c g aes,4 c2\sf f4 bes,4 des2\sf g4 c4 f2\sf aes4 bes!4\pp(
 g e bes,!)  aes,4 c2\sf f4 bes,4 des2\sf g4 c4 f2\sf aes4 r4 c,4 c, c,
 f,4 f r <des f b>\staccato r4 <c f aes c'>\staccato r <c g bes!>\staccato
 r <f aes>\staccato r <des f aes b>\staccato r4 <c f aes c'>\staccato
 r <c g bes!>\staccato r4 <f aes>4\staccato \clef treble r <des' f'
 aes' b'>\staccato r4 <c' f' aes' c''> r \clef bass <bes! c' g'> <a c'
 f'>1\ff <bes des' f'>4 r r r8 <bes des' f'>8 <g bes ees'>1\ff <aes! c'
 ees'>4 r r <f des'>4\sf\staccato <g des'>\staccato <e c'>\sf\staccato
 <f c'>\staccato <des des'>\sf\staccato <bes, des g bes>\ff\staccato r
 <c e g c'>\staccato r <f, aes, c f>4\staccato r r4^\fermata \bar "|."
} >>

 \layout { }

}