Personnalisation de portées de percussion

LilyPond offre la possibilité de construire son propre style de percussion grâce à une définition de la propriété drumStyleTable. Les notations existantes peuvent se redéfinir au travers d’une liste associative dans laquelle chaque entrée doit comporter quatre éléments : un nom, le style de tête de note (ou ‘()’ pour adopter la valeur par défaut), un éventuel signe d’articulation (ou #f dans le cas contraire) et, enfin, le positionnement de la tête de note sur la portée. Cette liste devra alors être convertie en table de hachage à l’aide de la fonction alist->hash-table.

L”entrée pour une articulation peut être soit un nom symbolique de script, soit une paire, auquel cas le premier élément est le nom symbolique du script et le second un indicateur de positionnement de ce script.

[Dans l’exemple ci-dessous, notez bien l’utilisation de l’apostrophe inversée (‘`’) au début de l’expression Scheme au lieu de l’apostrophe normale (‘'’), ce qui permet de traiter correctement la virgule (‘,’) pour l’évaluation de l’élément qui précède.]

#(define mydrums `(
         (bassdrum        ()        #f               -1)
         (snare           ()        #f               0)
         (hihat           cross     #f               1)
         (halfopenhihat   cross     halfopen         1)
         (pedalhihat      xcircle   stopped          2)
         (splashhihat     xcircle   (open . ,DOWN)   2)
         (lowtom          diamond   #f               3)))

up = \drummode { hh8 hh hhho hhho hhp4 hhs }
down = \drummode { bd4 sn bd toml8 toml }

\new DrumStaff \with { drumStyleTable = #(alist->hash-table mydrums) }
  <<
  \new DrumVoice { \voiceOne \up }
  \new DrumVoice { \voiceTwo \down }
>>
[image of music]

De nouveaux noms peuvent venir s’ajouter à ces notations personnalisées grâce à la variable drumPitchNames qui peut être redéfinie en tant que liste associative (ou augmentée par ajout d’une nouvelle liste aux valeurs existantes comme indiqué ci-dessous). Ceci permet par ailleurs de définir des alias : raccourcis pour la saisie de certaines 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
}
[image of music]

De la même manière, la propriété drumPitchTable associe une hauteur spécifique (autrement dit un son instrumental différent tel que fourni par les fontes sonores MIDI disponibles) à chaque notation. Cette propriété requiert d’être définie sous forme de table de hachage, convertie elle aussi à partir d’une liste associative (enregistrée par défaut en tant que variable midiDrumPitches). La redéfinition de ces associations s’effectue comme indiqué ci-dessus, soit en créant l’intégralité d’une liste associative, soit certains de ses membres. L’exemple ci-dessous démontre la manière de créer un jeu entier de notation, avec sa propre syntaxe de saisie, sa notation personnalisée et les instruments MIDI correspondants.

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 {}
}
[image of music]

Voir aussi

Fichiers d’initialisation : ly/drumpitch-init.ly.

Morceaux choisis : Percussion.

Référence des propriétés internes : DrumStaff, DrumVoice.


GNU LilyPond – Manuel de notation v2.25.26 (development-branch).