Here is my feedback on writing drum sheet music with LilyPond and Frescobaldi software.

LilyPond1 is a libre software of musical notation. It is usually used in combination with the software Frescobaldi2. Unlike other music editor, LilyPond is based on a textual approach, the drum sheet music is generated from a script close to the TeX language.

Drum notation key

First of all, you must define your drum notation key. For example, you can use the notation referenced in the book “Guide to Standardized Drumset Notation” by Norman.

I worked with the “Dante Agostini” method, so I used the following notation to write my drum sheet music:

lily-legende.png
Drum notation key

#(define DanteAgostini '(
                           (ridecymbal    cross    #f        4)
                           (crashcymbal   xcircle  #f        6)
                           (crashcymbala  xcircle  #f        7)
                           (openhihat     cross    "open"    5)
                           (closedhihat   cross    "stopped" 5)
                           (pedalhihat    cross    #f       -5)
                           (hihat         cross    #f        5)
                           (lowmidtom     default  #f        2)
                           (snare         default  #f        0)
                           (sidestick     triangle #f        0)
                           (tambourine    default  #f       -2)
                           (lowtom        default  #f       -3)
                           (bassdrum      default  #f       -5)
                           (himidtom      default  #f        3)
                           (acousticsnare mensural #f        0)
 
 ))
global = {
  \set DrumStaff.drumStyleTable = #(alist-hash-table DanteAgostini)
}

By default, LilyPond uses the drumpitch-ini.ly file for setting the pitch of notes and symbols.

To define a personal notation, we create a variable DanteAgostini which contains our configuration. The define macro is used to substitute the notation list (crash, ride, etc…) with each DanteAgostini occurrence found.

Two-voices notation

In the principle of two-voice notation, the stems of the notes are up or down, to separate the cymbals (in blue) of the snare, bass drum and toms (in red).

lily-double-voix.png lily-double-voix.png
Two voices

upA = \drummode {\override NoteHead.color = #blue cymc8 hh hh hh r hh hh hh }  
downA = \drummode {\override NoteHead.color = #red bd4 sn8. sn16 sn sn bd bd sn8 r }
upB = \drummode {\override NoteHead.color = #blue hh8 hh hh hh r hh hh hh }
downB = \drummode {\override NoteHead.color = #red bd4  sn8. sn16 sn sn bd bd sn8 r}

partition =  {
  \global
  \repeat percent 1 {<<\new DrumVoice { \voiceOne \upA }  \new DrumVoice { \voiceTwo \downA }>> }
  \repeat percent 1 { <<\new DrumVoice { \voiceOne \upB }  \new DrumVoice { \voiceTwo \downB }>> }
  \bar "|."
}

Layout

In some pieces of music, reading the drum sheet music is more suitable when it is written on 4 measures per system. So to fix the number of measures per system, I use the following method:

ToutesLesQuatreMesures = \drummode { \repeat unfold 18 { s1 * 4 \break } }
  • AllFourMeasures => The name of the layer.
  • \ repeat unfload 18 => In this piece, there are 72 measures that represents 18 system (18 x 4 = 72).
  • {s1 * 4 \ break} => An empty measure s1 which is repeated 4 times with following a return to line.

This layer is associated with the partition as follows:

\score {
  \new DrumStaff
    \ToutesLesQuatreMesures
    \partition
}

However, Lilypond manages as much as possible the rendering on 4 measures according to the size of the paper and the number of notes. Lilypond can be helped in this task by changing the orientation of the paper and the size of the characters.

\paper {
  #(set-paper-size "a4" 'landscape)
}
\score {
  \layout {
    #(layout-set-staff-size 23)
  }
}

lilypond-book

To generate the two images that illustrate the article, I used lilypond-book. The program is part of the lilypond package dependencies.

In an empty HTML file:

  1. write the opening tag
  2. add the LilyPond script of the sheet music
  3. write the closing tag </ lilypond>

In a terminal run the following lilypond-book command:

lilypond-book --lily-output-dir=./ my-file.html --output=./output

Conclusion

At first, working with Lilypond can seem difficult and complex. But, the time spent to understand the mechanisms during the writing of the first partition will be very useful for the following ones.
Once the structure is mastered, ie: the drum notation key, the two-voices notation and the layout, the structure is like a model that can be reused for all the other partitions. We can now focus on writing the drum sheet music and it’s relatively simple.
Lilypond’s textual approach opens up more opportunities for automating tasks.

Sheet music

Group Title PDF files LilyPond Files
The black keys Tighten Up Tighten_Up.pdf Tighten_Up.ly
Muse Feeling Good Feeling_Good.pdf Feeling_Good.ly
Red Hot Chilli Peppers Don’t forget me Dont_forget_me.pdf Dont_forget_me.ly
Little Hurricane Baa Baa Black Sheep Baa-Baa-Black-Sheep.pdf Baa-Baa-Black-Sheep.ly