Hi, How do I control the placement of ornaments when defining my own drum style? I'd like for some of them to show up below the notehead, not above the stem.

I will try to answer this as comprehensively as possible. Let’s start with a simple drum template:

\version "2.18.2" up = \drummode { \stemUp

umericTimeSignature } \score { <<

ew DrumStaff << \up >> >> }

And now to this we’ll add some customization. For the drum transcriptions I make, I employ pretty heavy customizations. The ride and hi-hat share a space (the treble clef G space above the staff), the toms are arranged so that I can transcribe a 4-piece or 5-piece kit without having to change the tom layout (A and E spaces for low and hi toms, with the B line used for the mid tom), and I use custom ornamentation for open and half-open hi-hat. Here’s my complete customization list,

#(define md '( (ridecymbal cross #f 5)(ridebell xcircle #f 5) (crashcymbal cross #f 6)(splashcymbal harmonic #f 6) (pedalhihat cross #f -5)(hihat cross #f 5) (snare default #f 1)(sidestick cross #f 1) (lowmidtom default #f 0)(lowtom default #f -1) (hightom default #f 3)(bassdrum default #f -3)))

And here is the custom open and half-open ornamentations

pth = #'((moveto 1 0.4) (lineto 0 -0.4)) hop = \markup{\hspace #0.5 \draw-circle #.4 #0.1 ##f} hhop = \markup{ \combine \hop \path #0.1 #pth }

With these elements in place, we’ll look at a hi-hat example. For my transcriptions, I place the “open” symbol for a struck open hi-hat above the stem, but I place the same symbol below the staff for a stepped flanged hi-hat. Note that instead of using the hyphen character to attach my ornaments, which would instruct Lilypond to place them in a default position, I am instead specifying specifically above the staff using the carat, or below the staff using an underscore.

hh4^\hop hhp4_\hop

And here is the complete Lilypond source for the example above

\version "2.18.2" #(define md '( (ridecymbal cross #f 5)(ridebell xcircle #f 5) (crashcymbal cross #f 6)(splashcymbal harmonic #f 6) (pedalhihat cross #f -5)(hihat cross #f 5) (snare default #f 1)(sidestick cross #f 1) (lowmidtom default #f 0)(lowtom default #f -1) (hightom default #f 3)(bassdrum default #f -3))) pth = #'((moveto 1 0.4) (lineto 0 -0.4)) hop = \markup{\hspace #0.5 \draw-circle #.4 #0.1 ##f} hhop = \markup{ \combine \hop \path #0.1 #pth } up = \drummode { \stemUp

umericTimeSignature hh4^\hop hhp4_\hop } \score { <<

ew DrumStaff << \set DrumStaff.drumStyleTable=#(alist->hash-table md) \up >> >> }

One last thing I will cover, and that is how to place an ornament directly below the notehead within the staff rather than below it. For example, if you have a triple-stop event in which the hi-hat, bass drum and snare needed accents. In that situation, you would need 3 accent marks - above the staff for the hi-hat, below the staff for the bass drum, and below the notehead for the snare drum. You can manually place the snare accent by using a combination of and \override on TextScript and a custom ornament rather than the default greater-than designation.

The \override would be specified like this:

\override Script.Y-offset = #'-0.5

And to create a second accent, we need to create a custom \markup block in which we manually place the music glyph representing the accent mark.

act = \markup {\left-align \musicglyph #"scripts.sforzato"}

We can then combine these two things with a split staff and place all 3 accents. Our stems-up voice would look like this:

4_>^\act

And the stems-down voice would just be an accented bass drum.

bd4_>

Combine all of these and we get a single triple-stop event in which all 3 notes have their own accent marks.

Here’s the complete source for this example

\version "2.18.0" #(define md '( (ridecymbal cross #f 5)(ridebell xcircle #f 5) (crashcymbal cross #f 6)(splashcymbal harmonic #f 6) (pedalhihat cross #f -5)(hihat cross #f 5) (snare default #f 1)(sidestick cross #f 1) (lowmidtom default #f 0)(lowtom default #f -1) (hightom default #f 3)(bassdrum default #f -3))) act = \markup {\left-align \musicglyph #"scripts.sforzato"} up = \drummode {

umericTimeSignature \once \override Script.Y-offset = #'-0.5 4_>^\act } down = \drummode { bd4_> } \score { <<

ew DrumStaff << \set DrumStaff.drumStyleTable=#(alist->hash-table md)

ew DrumVoice {\voiceOne \up}

ew DrumVoice {\voiceTwo \down} >> >> }