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.

#(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 }
>>

[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.22 (development-branch).