3.4.1 Organizar las piezas mediante variables

Cuando los elementos que hemos discutido anteriormente se combinan para producir archivos mayores, las expresiones musicales se hacen enormes. En música polifónica con muchos pentagramas, los archivos de entrada pueden volverse muy propensos a la confusión. Podemos reducir esta confusión utilizando las variables.

Con las variables (también conocidas como identificadores o macros), podemos trocear las expresiones musicales complejas. Una variable se asigna de la manera siguiente:

musicaConNombre = { … }

El contenido de la expresión musical musicaConNombre se puede usar posteriormente colocando una barra invertida delante del nombre (\musicaConNombre, igual que una orden normal de LilyPond).

violin = \new Staff {
  \relative {
    a'4 b c b
  }
}

cello = \new Staff {
  \relative {
    \clef "bass"
    e2 d
  }
}

{
  <<
    \violin
    \cello
  >>
}

[image of music]

Por convención, los nombres de variable consisten enteramente en caracteres alfabéticos. Para ver información detallada, consulte Estructura del archivo.

Las variables se deben definir antes de la expresión musical principal, pero se pueden usar tantas veces como se quiera, en cualquier lugar, una vez que han sido definidas. Incluso se pueden usar dentro de la definición de otra variable, proporcionando una vía para acortar el código si una sección musical se repite muchas veces.

tresilloA = \relative { \tuplet 3/2 { c'8 e g } }
compasA = { \tresilloA \tresilloA \tresilloA \tresilloA }

{ \compasA \compasA }

[image of music]

Las variables se pueden usar para otros muchos tipos de objetos dentro del código de entrada. Por ejemplo,

miAncho = 4.5\cm     % número pasado a una variable de \paper (unidades: milímetros)
miNombre = "Wendy"   % cadena pasada a un elemento de marcado
papelAcinco = \paper { #(set-paper-size "a5") }

Dependiendo de su contenido, la variable se puede usar en distintos lugares. El siguiente ejemplo utiliza las variables anteriores:

\paper {
  \papelAcinco
  line-width = \miAncho
}

{
  c4^\miNombre
}

Manual de aprendizaje de GNU LilyPond v2.25.22 (development-branch).