13.1.6 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 ‘()’ para indicar 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.

La entrada para una articulación puede ser el símbolo del nombre de una inscripción, o bien una pareja, donde el primer elemento es el símbolo del nombre de una inscripción, y el segundo un indicador de dirección forzada para la inscripción.

[En el ejemplo siguiente, observe el uso de la abreviatura de cuasi-notación (‘`’) al principio de la expresión de Scheme en lugar de la abreviatura estándar de comilla (‘'’), que habilita a la abreviatura de no-comilla (‘,’) a evaluar el elemento que le precede.]

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

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       ()   #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]

Véase también

Archivos instalados: ly/drumpitch-init.ly.

Fragmentos de código: Percussion.

Referencia de funcionamiento interno: DrumStaff, DrumVoice.


Referencia de la notación de GNU LilyPond v2.25.31 (development-branch).