Pautas de percusión personalizadas

Se pueden definir estilos de percusión personalizados, a los que después puede establecerse la propiedad drumStyleTable. Las notaciones existentes se pueden redefinir como una lista de asociación en la que cada entrada debe estar compuesta de cuatro elementos: un nombre, el estilo de cabezas de nota (o default), un símbolo de articulación si es necesario (o #f en caso contrario), y la posición de la cabeza sobre la pauta. Dicha lista se debe entonces convertir a una tabla de hash de Scheme usando la función 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]

También se pueden añadir nombres nuevos a dichas notaciones personalizadas mediante la variable drumPitchNames, que se puede redefinir como una lista de asociación (o aumentada añadiendo al final una lista nueva a su valor existente, como se muestra más abajo), pero también a través de sus entradas individuales. Esto también hace posible definir nombres alternativos o alias.

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 manera similar, la propiedad drumPitchTable asocia una altura específica (con el significado de un sonido instrumental distinto, tal y como lo proveen las fuentes de sonido MIDI) a cada notación. Dicha propiedad necesita definirse como una tabla de hash, que es de nuevo convertida a partir de una lista de asociación (almacenada de forma predeterminada como la variable midiDrumPitches). La redefinición de estas asociaciones se consigue como se ha explicado más arriba, ya sea definiendo una lista de asociación completa o mediante las entradas individuales. El siguiente ejemplo muestra cómo crear un conjunto completo de notaciones con su propia sintaxis de entrada, su propia notación personalizada y la salida MIDI correspondiente.

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      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]

Véase también

Fragmentos de código: Percussion.

Referencia de funcionamiento interno: DrumStaff, DrumVoice.


Referencia de la notación de GNU LilyPond v2.25.20 (rama de desarrollo).