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
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 }
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
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 }
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
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.