Righi delle percussioni personalizzati

È possibile definire stili percussivi personalizzati, su cui poi impostare la proprietà drumStyleTable. Le notazioni esistenti possono essere ridefinite come una lista associativa in cui ogni voce deve essere costituita da quattro elementi: un nome, lo stile della testa di nota (o default), un segno di articolazione se necessario (o #f se non lo è), e la posizione della testa di nota sul rigo. Questa lista deve poi essere convertita in una tabella hash Scheme, usando la funzione alist->hash-table.

#(define mydrums '(
         (bassdrum        default   #f           -1)
         (snare           default   #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 <<
  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
  \new DrumVoice { \voiceOne \up }
  \new DrumVoice { \voiceTwo \down }
>>

[image of music]

Si possono aggiungere anche nuovi nomi a queste notazioni personalizzate attraverso la variabile drumPitchNames, che può essere ridefinita come una lista associativa (o aumentata appendendo una nuova lista al suo valore esistente, come illustrato sotto), ma anche attraverso le sue voci individuali. Ciò permette anche di definire alias: scorciatoie di input alternativo per alcune notazioni.

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]

In modo analogo, la proprietà drumPitchTable associa una certa altezza (ovvero un diverso suono di strumento, così come è fornito dai soundfont MIDI disponibili) a ciascuna notazione. Questa proprietà deve essere definita come una tabella di hash, che di nuovo viene convertita da una lista associativa (salvata per impostazione predefinita come variabile midiDrumPitches). La ridefinizione di queste associazioni si ottiene, come spiegato sopra, o definendo un’intera lista associativa oppure attraverso voci individuali. L’esempio seguente mostra come creare un insieme di notazione completo con la propria sintassi di input, notazioni personalizzate e output MIDI corrispondente.

drumPitchNames.dbass      = #'dbass
drumPitchNames.dba        = #'dbass  % 'db è già in uso
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      default  #f         -2)
    (dbassmute  default  stopped    -2)
    (dopen      default  #f          0)
    (dopenmute  default  stopped     0)
    (dslap      default  #f          2)
    (dslapmute  default  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]

Vedi anche

File installati: ly/drumpitch-init.ly.

Frammenti: Percussion.

Guida al funzionamento interno: DrumStaff, DrumVoice.


Guida alla Notazione di LilyPond v2.25.22 (development-branch).