[ << Specialist notation ] | [Top][Contents][Index] | [ General input and output >> ] |
[ < Percussion staves ] | [ Up : Common notation for percussion ] | [ Ghost notes > ] |
Custom percussion staves
Custom percussion styles may be defined, to which the
drumStyleTable
property may then be set.
Existing notations may be redefined as an association list
where each entry has to be comprised of four items:
a name, the note head style (or ‘()’ to indicate the default), an
articulation sign if needed (or #f
if not), and
the note head’s position on the staff. That list must then
be converted into a Scheme hash table, using the
alist->hash-table
function.
#(define mydrums '( (bassdrum () #f -1) (snare () #f 0) (hihat cross #f 1) (halfopenhihat cross halfopen 1) (pedalhihat xcircle stopped 2) (lowtom diamond #f 3))) up = \drummode { hh8 hh hhho hhho hhp4 hhp } down = \drummode { bd4 sn bd toml8 toml } \new DrumStaff \with { drumStyleTable = #(alist->hash-table mydrums) } << \new DrumVoice { \voiceOne \up } \new DrumVoice { \voiceTwo \down } >>
New names may also be added to these custom notations through
the drumPitchNames
variable, that may be redefined as
an association list (or augmented by append
ing a new list
to its existing value, as demonstrated below), but also through
its individual entries. This also makes it possible to define
aliases: alternate input shorthand for some notations.
drumPitchNames = #(append '((leftsnap . sidestick) (rightsnap . ridecymbal)) drumPitchNames) drumPitchNames.ls = #'sidestick drumPitchNames.rs = #'ridecymbal \drums { leftsnap4. rightsnap8 leftsnap4 rightsnap ls8 rs ls rs ls4 rs }
In a similar manner, the drumPitchTable
property
associates a specific pitch (meaning a different instrument
sound, as provided by available MIDI sound fonts) to each
notation. That property needs to be defined as a hash table,
which is again converted from an association list (stored by
default as the midiDrumPitches
variable). Redefining
these associations is achieved as explained above, either by
defining an entire association list or through individual entries.
The following example demonstrates how to create a whole
notation set with its own input syntax, custom notations and
corresponding MIDI output.
drumPitchNames.dbass = #'dbass drumPitchNames.dba = #'dbass % 'db is in use already drumPitchNames.dbassmute = #'dbassmute drumPitchNames.dbm = #'dbassmute drumPitchNames.do = #'dopen drumPitchNames.dopenmute = #'dopenmute drumPitchNames.dom = #'dopenmute drumPitchNames.dslap = #'dslap drumPitchNames.ds = #'dslap drumPitchNames.dslapmute = #'dslapmute drumPitchNames.dsm = #'dslapmute #(define djembe-style '((dbass () #f -2) (dbassmute () stopped -2) (dopen () #f 0) (dopenmute () stopped 0) (dslap () #f 2) (dslapmute () stopped 2))) midiDrumPitches.dbass = g midiDrumPitches.dbassmute = fis midiDrumPitches.dopen = a midiDrumPitches.dopenmute = gis midiDrumPitches.dslap = b midiDrumPitches.dslapmute = ais test = \drummode { dba4 do ds dbm dom dsm } \score { \new DrumStaff \with { \override StaffSymbol.line-count = 3 instrumentName = "Djembé " drumStyleTable = #(alist->hash-table djembe-style) drumPitchTable = #(alist->hash-table midiDrumPitches) } { \time 3/4 \test } \layout {} \midi {} }
See also
Installed Files: ly/drumpitch-init.ly.
Snippets: Percussion.
[ << Specialist notation ] | [Top][Contents][Index] | [ General input and output >> ] |
[ < Percussion staves ] | [ Up : Common notation for percussion ] | [ Ghost notes > ] |