← Blog

A Typesetting Exercise

Using a published score to typeset a fragment out of it

While I am not teaching at a university this year, that hasn’t meant for me a year of doing nothing. Far from it, as a matter of fact; I have been busy as I prepare applications for various teaching positions for next year, working on projects that I have put off for far too long, and spending some very meaningful time as a musical typesetter for the fellow composers.

I feel fortunate to have worked as a typesetter parallel to my music career. I worked on several projects for Yūji Takahashi, and more recently I was part of preparing parts for Piano Concerto by Steven Kazuo Takasugi, both orchestral and ensemble versions. It is rather surreal to think that these professional musicians (whom I dream of working with one day) were all using the materials I prepared! It is one thing to work on my music with the aim of having them performed well, but working toward a successful performance of a piece by a composer other than me, and its success in part depends on how well the score and parts are prepared, is a big responsiblity to fulfill as a typesetter. But of course I would always love to help others when I can, and in that process, I learn a lot, as well.

Especially in this digital age, something must be said about composers copying scores by hand, which is of course a very old practice. There are anecdotes of composers obtaining other composers’ scores in that manner even after the World War II when scores were still very expensive to procure. Back then xeroxing was not a thing, and PDF files certainly didn’t exist. While I have not copied an entire score by hand, as a composer typesetting other composers’ works and following one note after another compels me to think about their compositional process. I actually feel it is a meaningful experience; it almost makes me feel I am taking a lesson from the composers whom I am working with as a typesetter. Because of this, I recommend my students to do typesetting at some point in their career, possibly when it is still in the early stage (asking them to handcopy an entire score might be a bit too much to ask for, after all). Besides, they’d be missing out on the opportunity to really learn what it takes to typeset music that is not only readable but also pleasing that motivates performers to learn.1

Anyway, I woke up today having an impulsive thought. It’s been about 2 years since I started to seriously use LilyPond. I wanted to see how comfortable I’ve become with it. So I decided to impose upon myself a bit of test: to typeset an excerpt from Ombres, a piano piece by Florent Schmitt:

Florent Schmitt, Ombres for piano, III. Measures 25 and 26.
Florent Schmitt, Ombres for piano, III. Meas. 25 and 26. Editions Durand, 1918.

Why this piece? I came across this piece during the pandemics, and I was flabbergasted by the way it was engraved. French scores from the early twentieth century are full of delights like this, what with very curvy slurs, crossing beams, and so on. I was still a Finale user back then; I wondered how I may go about implementing what I saw on the sheet music. I then put it off for many months, until just this morning I was reminded of it, thinking it would be a good exercise to do this on LilyPond.

So I did. It took some time to do this, actually, but I think I managed to come close to the published score:

My attempt at typesetting the Ombres excerpt

Here is the code to reproduce what you see above:

Show the LilyPond code
\version "2.26.0"

\language "english"




\paper {
 % Add space for instrument names
 indent = 0\mm
 #(set-paper-size "letterlandscape")
}

global = {
 \key b \major
 \time 3/4
 \mergeDifferentlyDottedOn
 \mergeDifferentlyHeadedOn

 \override Score.Stem.french-beaming = ##t
}

right = {
 \global

 \set tieWaitForNote = ##t
  <<
  {
   gs'4 \p ~ 
   \omit TupletBracket 
   \tuplet 3/2 { \shape #'((0 . -0.75) (-0.75 . 0.5) (0.74 . 0.5) (0 . -0.75)) Slur gs'16 ^( 
    a' 
    \set stemRightBeamCount = 1 gs'} 
    \hide TupletNumber 
    \tuplet 3/2 { \set stemLeftBeamCount = 1 fs' 
      gs' fs'} 
      gs'4 )
   \shape #'((0 . 0) (0 . 1) (0 . 1) (0 . 0)) Slur
   gs'4 ( 
   \change Staff = "middle" \hide TupletNumber 
   \tuplet 3/2 { \once \override Flag.stencil = ##f gs'8 ) 
    s8 s8 } 
    s8 \change Staff = "left" 
    s8
  } \\ {
   \set tieWaitForNote = ##t 
   \hide TupletNumber 
   \hide Beam 
   \tuplet 11/8 { s16. 
    s32 
    s 
    s 
    c'! ~ 
    e'~ 
    s s s } 
    <c' e'>4 ~ 
    \undo \hide Beam 
    \undo \hide TupletNumber  
    \hide TupletNumber 
    \tuplet 6/4 { \shape #'((1 . 0) (0 . 0) (0 . 0) (-1 . -0.75)) Slur \slurUp 16 ( 
      fs' 
      \set stemRightBeamCount = 1 e' 
      \set stemLeftBeamCount = 1 d' 
      e' d'} 
      <c'
        \single \shape #'((0.5 . -0.5) (0 . -2) (0 . -2) (0 . 0)) Slur
        \single \slurDown \=1(
        e'
        \single \shape #'((0.5 . -0.5) (0 . -2) (0 . -2) (0 . 0)) Slur
        \single \slurDown  \=2( 
      >4 ) 
      \stemUp \slurDown 
      \change Staff = "middle" 
      \once \undo \hide TupletNumber 
      \tupletUp 
      \tuplet 3/2 {
    \shape #'((0 . 0) (0 . 0) (0 . 0) (2 . 0)) Slur                                                                                                                                                                                                                                                                                                                                                                                                        \tweak Beam.positions #'(2.5 . 2.5) <cs'\=1) e'\=2) >8 ( <d' fs' a'>8 <c' e' gs'>8
   }
   \tuplet 3/2 {
    <a d' fs'>8 
    <c' e' gs'>8 
    <a d' fs'>8 ) }
  }
 >>

}

dynamicsOne = {
 \global
 % Dynamics follow here.

}

middle = {
 \global
 \clef "F"
 % Music follows here.
 s2 \clef "G" \voiceTwo \change Staff = "right"
 \once \override Beam.positions = #'(-6.5 . -9)
 \hide TupletNumber 
 \tuplet 6/4 {\shape #'((0 . 0) (-1 . -2.75) (0 . 2) (0 . 0)) Slur <c' e'>16 ( 
  \change Staff = "middle" 
  \stemUp 
  d' 
  \set stemRightBeamCount = 1  
  c' 
  \set stemLeftBeamCount = 1  
  a c' a )  } 
  |
 s2
}

dynamicsTwo = {
 \global
 % Dynamics follow here.

}

left = {
 \global

 <<
  {
   \hide TupletNumber
   \once \override Beam.positions = #'(5 . 8)
   \tuplet 11/8 {
    \slurDown
    \shape #'((1 . 0.75) (0 . 0) (0 . -2) (0 . 2)) Slur
    d,16. [ (  
      \set stemLeftBeamCount = 3 
      \set stemRightBeamCount = 2 
    a,32 
      \set stemLeftBeamCount = 2 
    d 
    \change Staff = "middle" \stemDown fs
    \change Staff = "right" c'! 
    e'  
    \change Staff = "left" \clef "G" \stemUp d'' 
    fs'' 
    a'' ]
   } 
   d'''8  ) 
   \tweak Y-offset #0 r8  
   \tweak Y-offset #0 r4
  } \\ {
   \shape #'((0 . -0.25) (0 . -1.5) (0 . -1.5) (0 . -0.25)) Tie
   d,2. _\markup{\musicglyph "pedal.Ped"} ~  \noBreak |
   \once \override Staff.Clef.stencil = 
   #(lambda (grob) (parenthesize-stencil 
      (ly:clef::print grob) 0.1 0.4 0.4 0.1))
   \clef "F"
   \once \override Beam.positions = #'(15 . 20)
   \hide TupletNumber
   \shape #'((0 . 0) (24.5 . 0) (-22.5 . 32.5) (0 . 19)) Slur
   \tuplet 10/8 {
    \stemUp 16. ( \change Staff = "middle" 
    \set stemLeftBeamCount = 3 
    \set stemRightBeamCount = 2 
    a'32 
    \set stemLeftBeamCount = 2 d'' 
    fs'' 
    a'' 
    \change Staff = "right" \stemDown d''' 
    fs''' 
    a'''} 
  d''''8 ) 
  \oneVoice r8 r4
  }
 >>


}
\markup {Florent Schmitt, \italic Ombres, III (mm. 25-26)}
\score {
 \new PianoStaff \with {
  % instrumentName = "Piano"
 } <<
  \new Staff = "right" \with {
   midiInstrument = "acoustic grand"
  } \right
  \new Dynamics \dynamicsOne
  \new Staff = "middle" \with {
   midiInstrument = "acoustic grand"
  } \middle
  \new Dynamics \dynamicsTwo
  \new Staff = "left" \with {
   midiInstrument = "acoustic grand"
  } { \clef bass \left }
 >>
 \layout { }
}

Some of you in the LilyPond community may wonder how I’ve managed to do the ties across two staves at the onset of the second bar.2 There’ve been occasions in which LilyPond users have asked about this on the mailing list and other internet forums over the years (e.g. here and here, and even here, and at the end of the last thread it is revealed that it’s an old bug).

I actually decided against using the tie because of the bug; instead, I took advantage of phrasing slurs, which I could overlay on top of each other by \=1( ... \=1) and \=2( ... \=2). It works for this purpose.3 You can also customize the shape of the tie/slur with \shape or \vshape even inside the chord construction < >; just watch out where you place it, and don’t forget to use \single!

This is really a fun exercise. You look at the sheet music, then you describe, in lines of LilyPond codes, what you see there. In fact, therein lies the key to getting used to LilyPond and improve the skill: it’s the process of getting used to translate what you see, being mindful of conserving information as intact as you can. I think if I were to write a tutorial for LilyPond beginners, I would focus on that aspect.

Having done these two measures by Schmitt, I was reminded of how Durand scores used to be expensive (they are still pretty expensive, but two decades ago they were even more expensive!). As idyosyncratic the notation as it might be, I am always in awe of how the engraver(s) at Durand working on these scores by Debussy, Ravel, even early Messiaen, always nailed the appearance of these pieces. I think becoming acquainted by these scores (and of course, pieces themselves) might be why I haven’t minded doing typesetting.

Footnotes

  1. Even for things like the projects I am working on right now, in an ideal world I would pass them on to my students so they can learn and even be paid. Perhaps once I am back in teaching in the near future (hopefully!), I will be in the position to do so. ↩

  2. In addition to the tie at that moment, some people might remark my S-shaped slur is a bit off. I am working on getting better at drawing slurs with cubic Bézier curve that LilyPond comes with. ↩

  3. I know that some purists may not be happy that I used phrasing slurs instead of ties. Oh well. Also, I love the way LilyPond Wiki defines the tie. I hope people leave it as is; we need some lightheartedness in life! ↩