Manual de aprendizaje de GNU LilyPond: 4.7.3 Hojas de estilo

### 4.7.3 Hojas de estilo

La salida que produce LilyPond se puede modificar profundamente; consulte Trucar la salida para leer detalles sobre este asunto. Pero ¿qué ocurre si tiene muchos archivos a los que les quiere aplicar sus propios trucos? O ¿qué ocurre si, sencillamente, quiere separar los trucos de la propia música? Todo esto es bastante fácil de conseguir.

Veamos un ejemplo. No se preocupe si no entiende las partes que tienen todos los `#()`. Esto se explicará en Trucos avanzados con Scheme.

>     mpdolce =
>       \tweak self-alignment-X #-0.6
>       #(make-dynamic-script
>         #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

>     inst =
>     #(define-music-function
>          (string)
>          (string?)
>        #{ <>^\markup \bold \box #string #})

>     \relative {
>       \tempo 4=50
>       a'4.\mpdolce d8 cis4--\glissando a |
>       b4 bes a2 |
>       \inst "Clarinet"
>       cis4.\< d8 e4 fis |
>       g8(\! fis)-. e( d)-. cis2 |
>     }

Hagamos algo respecto a las definiciones `mpdolce` e `inst`. Éstas producen la salida que deseamos, pero quizá las querríamos utilizar en otra pieza. Podríamos simplemente copiarlas y pegarlas al principio de cada archivo, pero sería bastante molesto. También hace que se queden las definiciones a la vista dentro de nuestros archivos de música, y yo personalmente encuentro todos los `#()` bastante poco estéticos. Los vamos a esconder dentro de otro archivo:

>     %%% guardar esto en un archivo con el nombre "definiciones.ily"
>     mpdolce =
>       \tweak self-alignment-X #-0.6
>       #(make-dynamic-script
>         #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

>     inst =
>     #(define-music-function
>          (string)
>          (string?)
>        #{ <>^\markup \bold \box #string #})

Haremos referencia a este archivo utilizando la instrucción `\include` al principio del archivo de música (la extensión `.ily` se utiliza para distinguir este archivo de inclusión –que se supone que no debe ser procesado de forma independiente– del archivo principal). Ahora modificaremos la música (guardemos este archivo como ‘`musica.ly`’).

>     \include "definiciones.ily"

>     \relative {
>       \tempo 4=50
>       a'4.\mpdolce d8 cis4--\glissando a |
>       b4 bes a2 |
>       \inst "Clarinete"
>       cis4.\< d8 e4 fis |
>       g8(\! fis)-. e( d)-. cis2 |
>     }

Eso tiene mejor aspecto, pero haremos algunos cambios más. El glissando es difícil de ver, así que lo haremos más grueso y lo acercaremos a las cabezas de las notas. Pondremos la indicación metronómica encima de la clave, en lugar de ir encima de la primera nota. Y por último, mi profesor de composición odia las indicaciones de compás ‘C’, así que la convertiremos en ‘4/4’.

Sin embargo, no debemos cambiar el archivo ‘`musica.ly`’. Sustituyamos nuestro archivo ‘`definiciones.ily`’ con éste:

>     %%%  definiciones.ily
>     mpdolce =
>       \tweak self-alignment-X #-0.6
>       #(make-dynamic-script
>         #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

>     inst =
>     #(define-music-function
>          (string)
>          (string?)
>        #{ <>^\markup \bold \box #string #})

>     \layout{
>       \context {
>         \Score
>         \override MetronomeMark.extra-offset = #'(-5 . 0)
>         \override MetronomeMark.padding = #'3
>       }
>       \context {
>         \Staff
>         \override TimeSignature.style = #'numbered
>       }
>       \context {
>         \Voice
>         \override Glissando.thickness = #3
>         \override Glissando.gap = #0.1
>       }
>     }

¡Eso tiene un aspecto mucho mejor! Ahora suponga que quiere publicar esta pieza. A mi profesor de composición no le gustan las indicaciones de compás ‘C’, pero yo les tengo cierto cariño. Copiaremos el archivo actual ‘`definiciones.ily`’ a ‘`publicar-web.ily`’ y modificaremos éste. Como el propósito de esta música es producir un PDF que va a mostrarse en la pantalla, también vamos a aumentar el tamaño general de la salida.

>     %%%  publicar-web.ily
>     mpdolce =
>       \tweak self-alignment-X #-0.6
>       #(make-dynamic-script
>         #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

>     inst =
>     #(define-music-function
>          (string)
>          (string?)
>        #{ <>^\markup \bold \box #string #})

>     #(set-global-staff-size 23)

>     \layout{
>       \context {
>         \Score
>         \override MetronomeMark.extra-offset = #'(-5 . 0)
>         \override MetronomeMark.padding = #'3
>       }
>       \context {
>         \Staff
>       }
>       \context {
>         \Voice
>         \override Glissando.thickness = #3
>         \override Glissando.gap = #0.1
>       }
>     }

Ahora, en la música, simplemente sustituyo `\include "definiciones.ily"` por `\include "publicar-web.ily"`. Por supuesto, podríamos hacer esto aún más práctico. Podríamos hacer un archivo ‘`definiciones.ily`’ que contuviera solamente las definiciones de `mpdolce` y de `inst`, un archivo ‘`publicar-web.ily`’ que contuviera solamente la sección `\layout` que se mostró en el ejemplo, y un archivo ‘`universidad.ily`’ que contendría solamente los trucos para producir la salida que le gusta a mi profesor. El comienzo de ‘`musica.ly`’ tendría entonces este aspecto:

>     \include "definiciones.ily"

>     %%%  ¡Quitar el comentario de una sola de estas líneas!
>     \include "publicar-web.ily"
>     %\include "universidad.ily"

Este enfoque puede ser útil incluso si va a producir sólo un conjunto de particellas. Yo utilizo media docena de archivos de ‘hojas de estilo’ para mis proyectos. Comienzo todos los archivos de música con `\include "../global.ily"`, que contiene

>     %%%   global.ily
>     \version "2.22.2"

>     #(ly:set-option 'point-and-click #f)

>     \include "../iniciar/iniciar-definiciones.ily"
>     \include "../iniciar/iniciar-disposicion.ily"
>     \include "../iniciar/iniciar-cabeceras.ily"
>     \include "../iniciar/iniciar-papel.ily"

#### LilyPond — Manual de aprendizaje v2.22.2 (rama estable).