Referencia de la notación de GNU LilyPond: 5.3.2 The \set command

### 5.3.2 The `\set` command

Cada contexto puede tener distintas propiedades, variables contenidas dentro de ese contexto. Se pueden cambiar mientras dura el paso de interpretación. Se consigue insertando la instrucción `\set` dentro de la música:

>     \set contexto.propiedad = #valor

Por ejemplo:

>     R1*2
>     \set Score.skipBars = ##t
>     R1*2

Estas instrucción salta los compases que no tienen notas. El resultado es que los silencios multicompás se condensan. El valor asignado es un objeto de Scheme. En este caso, es `#t`, el valor booleano True o verdadero.

Si se omite el argumento context, entonces se utiliza el contexto actual de nivel más bajo (normalmente `ChordNames`, `Voice` o `Lyrics`). En este ejemplo:

>     c8 c c c
>     \set autoBeaming = ##f
>     c8 c c c

el argumento contexto de la instrucción `\set` se omite, así pues el barrado automático se desactiva en la voz actual. Observe que el contexto de nivel más bajo no siempre contiene la propiedad que queremos cambiar (por ejemplo, no tendrá ningún efecto intentar establecer un valor para la propiedad `skipBars` del contexto de nivel más bajo, en este caso `Voice`).

>     R1*2
>     \set skipBars = ##t
>     R1*2

Los contextos son jerárquicos, y si se ha especificado un contexto mayor, por ejemplo `Staff`, entonces el cambio se aplicaría también a todos los contextos `Voice` dentro del pentagrama actual. El cambio se aplica ‘al vuelo’, durante la música, de manera que el ajuste sólo afecta al segundo grupo de corcheas.

También existe una instrucción `\unset`:

>     \unset contexto.propiedad

que elimina la definición de propiedad. Esta instrucción elimina la definición solamente si está establecida dentro de contexto, de manera que

>     \set Staff.autoBeaming = ##f

introduce un ajuste de la propiedad en el nivel de `Staff`. El ajuste también se aplica a la `Voice` actual. Sin embargo:

>     \unset Voice.autoBeaming

no tiene ningúun efecto. Para cancelar este ajuste, se debe especificar el `\unset` en el mismo nivel que el `\set` original. Dicho de otra forma, para deshacer el efecto de `Staff.autoBeaming = ##f` se necesita

>     \unset Staff.autoBeaming

Como `\set`, el argumento contexto no se tiene que especificar para un contexto del nivel más bajo, por lo que los dos enunciados

>     \set Voice.autoBeaming = ##t
>     \set autoBeaming = ##t

son equivalentes.

Los ajustes que se aplican solamente a un único paso de tiempo se pueden escribir con `\once`, por ejemplo en

>     c4
>     \once \set fontSize = #4.7
>     c4
>     c4

la propiedad `fontSize` se deshace automáticamente después de la segunda nota.

En el manual de Referencia de funcionamiento interno hay una descripción completa de todas las propiedades de contexto disponibles, consulte Tunable context properties.

Other languages: English, français.

#### Manual de referencia de la notación