Encoding methods for percussion parts.

Percussion parts are encoded in **kern spines, using a percussion clef and markers to indicate unpitched or semipitched notes, as well as interpretation or layout parameter control of notehead shapes.

Percussion clef

Use *clefX for a percussion clef, with X meaning unpitched.

If a number is given after X, the clef will be centered on that line.

Staff lines

To set the number of lines for a staff, add the interpretation *stria at the start of the spine before any data (notes/rests), adding the number of lines at the end of the interpretation.

Unpitched notes

The placement of notes on the staff is controlled by assigning pitch names to the notes, and they will be positioned as if they were on a treble-clef staff. If there is a single line on the staff, then that is treated as the bottom line of the treble clef, and the notes placed on this line have the “pitch” of e.

Percussion notes must include R to indicate that they are unpitched. This is important for analysis purposes, so percussion-clef notes without an R qualification will be highlighted in red to indicate a problem:

Partially pitched notes

If notes are not pitched, but also not fully unpitched, the marker RR can be used to indicate that a note is partially pitched. This is useful for instruments such as tom-toms or rototoms where the drums are pitched from low to high. In this case the general pitch-height is useable for analysis rather than the notated pitch.

Notehead shapes

Notehead shapes can be set either by layout parameters applied to individual notes, or a notehead shape interpretation that affects all notes after it in the music. Available notehead shapes:

shape description
x notehead shaped like an “x”
plus notehead shaped like a plus sign
dia notehead shaped like a diamond
slash slash chord notehead shape
solid notehead shape of quarter notes and shorter
open notehead shaped like a half note
whole notehead shaped like a whole-note
regular regular notehead shape

Layout parameter method

Add a note layout parameter immediately before the note with a “head” parameter set to the notehead shape:

Interpretation method

If the notehead shape does not change often, use the *head interpretation:


Rests will usually be centered on staff lines:

Since rests are not pitched, there is no need to add R markers that are needed for unpitched sounding notes.

To move rests vertically, add the treble-clef pitch for the desired position on the staff, where the lowest line of the percussion clef is e:


Unlike pitched notes, unpitched notes will not be transposed by the transpose filter:

Applying the filter transpose -t m3 to transpose the music up a minor third:

The final transposed data (compile filter with alt-c):

If you need to transpose unpitched notes, then temporarily remove the R marker, and then add it back after transposing the music. Use the shed filter to convert R into an unused signifier, such as Z and then back again after transposition as an easy method to force unpitched notes to transpose.

The filter -k -e 's/R/Z/g' first changes all R characters into Z in **kern data (-k means only process **kern spines, and only data tokens will be processed by default). Then the transpose -t m3 filter transposes all notes up a minor third in both pitched and previously unpitched notes. And finally shed -k -e 's/Z/R/g' changes the Z characters back into R characters. Here is the final data after unpitched note transposition:

Analysis considerations

If you want to do rhythmic analysis with data containing unpitched notes, nothing special needs to be done to the music. However, for pitch analysis with tools that are not aware of the R marker, first convert the R into r to make these notes appear as rests in the data. This can be done easily with the shed filter:

Add the filter shed -ke 's/R/r/g' to the data:

There is currently a bug in verovio that causes the notation to not show if there is a beam containing only rests, so the filter shed -s1 -e 's/[JLKk]//g' needs to be added if you want to see the rests (this is not otherwise necessary preparation for input to analysis tools, and should be fixed in verovio in the future). The -s1 option means to only apply the sed commands to the first spine.

And after compiling the filter (with alt-c), the data has rests that were originally unpitched notes:

Percussion instrument codes

Percussion instruments can be categorized as such with the *ICidio (idiophone) interpretation. Specific insturments:

Code Name MIDI key #
*Ibdrum bass drum (kit) 35
*Icasts castanets  
*Ipiatt cymbals  
*Isdrum snare drum (kit) 38
*Icrshc crash cymbal (kit) 49/57
*Igong gong  
*Imarac maracas 70
*Iridec ride cymbal (kit) 51/59
*Ispshc splash cymbal (kit) 55
*Itabla tabla  
*Itambn tambourine 54
*Itom tom-tom drum 41/43/45/47/48/50
*Itrngl triangle 81/80