5.3.2 Il comando \set

Ogni contesto ha un insieme di proprietà, variabili contenute in quel contesto. Le proprietà di contesto si cambiano col comando \set, che ha la seguente sintassi:

\set contesto.proprietà = #valore

valore è un oggetto Scheme, ecco perché deve essere preceduto dal carattere  #.

Le proprietà dei contesti sono solitamente nominate in studlyCaps. Perlopiù regolano la traduzione dalla musica alla notazione, per esempio localAlterations (per determinare se stampare le alterazioni), o measurePosition (per determinare quando stampare una stanghetta). Le proprietà di contesto possono cambiare nel tempo nel corso dell’interpretazione di un brano musicale; measurePosition ne è un ovvio esempio. Le proprietà di contesto si modificano con \set.

Per esempio, le pause multiple sono combinate in una singola battuta (come è spiegato in Compressione delle misure vuote) se la proprietà di contesto skipBars viene impostata su #t:

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

[image of music]

Se l’argomento contesto non viene specificato, la proprietà sarà impostata nel contesto di base corrente (solitamente ChordNames, Voice, TabVoice o Lyrics).

\set Score.autoBeaming = ##f
\relative {
  e''8 e e e
  \set autoBeaming = ##t
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

La modifica viene applicata ‘al volo’, durante l’interpretazione della musica, in modo che l’impostazione abbia effetto soltanto sul secondo gruppo di note da un ottavo.

Nota che il contesto più inferiore non contiene sempre la proprietà che si desidera cambiare. Per esempio, il tentativo di impostare la proprietà skipBars del contesto di base predefinito, in questo caso Voice, non produrrà alcun risultato, perché skipBars è una proprietà del contesto Score.

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

[image of music]

I contesti sono gerarchici, per cui se viene specificato un contesto che ne racchiude altri, per esempio Staff, il cambiamento viene applicato anche a tutti i contesti Voice del rigo corrente.

Il comando \unset:

\unset contesto.proprietà

viene usato per togliere la definizione di proprietà dal contesto. Questo comando rimuove la definizione solo se impostata nel contesto. Le proprietà impostate nei contesti più esterni non saranno modificate da un \unset in un contesto più interno:

\set Score.autoBeaming = ##t
\relative {
  \unset autoBeaming
  e''8 e e e
  \unset Score.autoBeaming
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

Come in \set, non è necessario specificare l’argomento contesto per un contesto di fondo, quindi le due dichiarazioni

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

sono equivalenti se l’attuale contesto di fondo è Voice.

Anteponendo \once ai comandi \set o \unset, l’impostazione verrà applicata soltanto a un singolo momento temporale:

c''4
\once \set fontSize = #4.7
c''4
c''4

[image of music]

Una descrizione completa di tutte le proprietà di contesto disponibili si trova nella Guida al funzionamento interno, vedi Tunable context properties.

Vedi anche

Guida al funzionamento interno: Tunable context properties.


Guida alla Notazione di LilyPond v2.25.22 (development-branch).