| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Modifying properties
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Overview of modifying properties
Ogni contesto è responsabile della creazione di certi tipi di oggetti grafici. Le impostazioni usate per la rappresentazione grafica di questi oggetti sono anch’esse salvate dal contesto. Cambiando queste impostazioni, si può alterare l’aspetto degli oggetti.
Ci sono due tipi diversi di proprietà salvate nei contesti: le proprietà del contesto e quelle del grob. Le proprietà del contesto sono proprietà che si applicano al contesto nel suo complesso e regolano il modo in cui il contesto stesso viene mostrato. Al contrario, le proprietà del grob si applicano a tipi di grob specifici che verranno mostrati nel contesto.
I comandi \set e \unset vengono usati per cambiare i valori
delle proprietà di contesto. I comandi \override e \revert
servono a cambiare i valori delle proprietà dei grob.
Guida al funzionamento interno: (internals)Backend section ‘Backend’ in Guida al Funzionamento Interno, (internals)All layout objects section ‘All layout objects’ in Guida al Funzionamento Interno, (internals)OverrideProperty section ‘OverrideProperty’ in Guida al Funzionamento Interno, (internals)RevertProperty section ‘RevertProperty’ in Guida al Funzionamento Interno, (internals)PropertySet section ‘PropertySet’ in Guida al Funzionamento Interno.
Il backend non è molto severo nel controllo del tipo delle proprietà di un oggetto. Riferimenti ciclici nei valori Scheme delle proprietà possono causare attese o crash, o entrambi.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\set@translationof The set command
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
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 (internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno.
Guida al funzionamento interno: (internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\override@translationof The override command
Esiste un tipo particolare di proprietà di contesto: la descrizione del
grob. Le descrizioni dei grob vengono nomimate in StudlyCaps
(iniziando con lettere maiuscole). Contengono le
“impostazioni predefinite” per un certo tipo di grob, come una
lista associativa. Consultare ‘scm/define-grobs.scm’
per vedere le impostazioni per ogni descrizione di grob. Le descrizioni
di grob si modificano con \override.
La sintassi del comando \override è
\override [contesto.]NomeGrob.proprietà = #valore |
Per esempio, possiamo aumentare lo spessore del gambo di una nota
modificando la proprietà thickness dell’oggetto Stem:
c''4 c'' \override Voice.Stem.thickness = #3.0 c''4 c''
Se non viene specificato il contesto in un \override, viene usato
il contesto di base:
\override Staff.Stem.thickness = #3.0 << \relative { e''4 e \override Stem.thickness = #0.5 e4 e } \\ \relative { c''4 c c c } >>
Alcune opzioni modificabili vengono chiamate ‘sottoproprietà’ e stanno dentro le proprietà. Per cambiarle, usare i comandi nella forma
\override Stem.details.beamed-lengths = #'(4 4 3) |
o, per modificare le estremità degli estensori, usare una forma simile alle seguenti
\override TextSpanner.bound-details.left.text = "left text" \override TextSpanner.bound-details.right.text = "right text" |
Gli effetti di \override possono essere annullati con \revert.
La sintassi del comando \revert è
\revert [contesto.]NomeGrob.proprietà |
Per esempio,
\relative { c''4 \override Voice.Stem.thickness = #3.0 c4 c \revert Voice.Stem.thickness c4 }
Gli effetti di \override e \revert si applicano a tutti i
grob nel contesto interessato da quel momento in poi:
<< \relative { e''4 \override Staff.Stem.thickness = #3.0 e4 e e } \\ \relative { c''4 c c \revert Staff.Stem.thickness c4 } >>
Si può usare \once insieme a \override o \revert
per agire solo sul momento corrente:
<< \relative c { \override Stem.thickness = #3.0 e''4 e e e } \\ \relative { c''4 \once \override Stem.thickness = #3.0 c4 c c } >>
Guida al funzionamento interno: (internals)Backend section ‘Backend’ in Guida al Funzionamento Interno
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\tweak@translationof The tweak command
Modificare le proprietà dei grob con \override fa sì che i
cambiamenti siano applicati a tutti i grob in questione in quel
contesto nel momento in cui la modifica viene applicata. Talvolta,
tuttavia, si può voler applicare le modifiche a un solo grob invece
che a tutti i grob del contesto interessato. Per farlo si usa il
comando \tweak, che ha la seguente sintassi:
\tweak [oggetto-formattazione.]proprietà-grob valore |
oggetto-formattazione è opzionale.
Il comando \tweak viene applicato all’oggetto musicale che segue
immediatamente valore nel flusso musicale.
Per un’introduzione alla sintassi e agli usi del comando tweak leggere (learning)Metodi di modifica section ‘Metodi di modifica’ in Manuale di Apprendimento.
Quando molti elementi simili sono disposti nello stesso momento musicale,
non è possibile usare il comando \override per modificarne soltanto
uno. È in casi come questi che occorre usare il comando \tweak.
Ecco alcuni elementi che possono apparire più di una volta nello stesso
momento musicale:
In questo esempio, il colore di una testa di nota e il tipo di testa di un’altra nota sono modificati all’interno di un accordo:
< c'' \tweak color #red d'' g'' \tweak duration-log #1 a'' > 4
\tweak può essere usato per modificare le legature di portamento:
\relative { c'-\tweak thickness #5 ( d e f) }
Perché il comando \tweak funzioni, deve trovarsi proprio accanto
all’oggetto al quale deve essere applicato dopo che il file di input è
stato convertito in un flusso musicale. Modificare un intero accordo
non cambia niente perché il suo evento musicale agisce solo come
contenitore, mentre tutti gli oggetti della formattazione sono creati
dagli eventi interni all’ EventChord:
\tweak color #red c''4 \tweak color #red <c'' e''>4 <\tweak color #red c'' e''>4
Il semplice comando \tweak non può essere usato per modificare un
oggetto che non sia creato direttamente dall’input. In particolare, non
agirà su gambi, travature automatiche o alterazioni, dato che questi sono
generati successivamente dagli oggetti della formattazione di NoteHead
invece che da elementi musicali nel flusso dell’input.
Tali oggetti della formattazione creati indirettamente possono essere tuttavia
modificati usando una forma del comando \tweak in cui il nome del grob
è indicato esplicitamente:
\tweak Stem.color #red \tweak Beam.color #green c''8 e'' <c'' e'' \tweak Accidental.font-size #-3 ges''>4
\tweak non può essere usato per modificare le chiavi o le indicazioni
di tempo, perché queste vengono separate da qualsiasi comando \tweak
precedente nel flusso dell’input a causa dell’inserimento automatico di ulteriori
elementi richiesti per specificare il contesto.
Si possono usare vari comandi \tweak prima di un elemento della
notazione e tutti avranno effetto su di esso:
c' -\tweak style #'dashed-line -\tweak dash-fraction #0.2 -\tweak thickness #3 -\tweak color #red \glissando f''
Il flusso musicale generato da una sezione di un file di input, compresi
gli elementi inseriti automaticamente, può essere esaminato, vedi
(extending)Displaying music expressions section ‘Displaying music expressions’ in Estendere. Ciò può essere utile nel determinare
cosa può essere modificato da un comando \tweak o nel valutare come
aggiustare l’input per far sì che un \tweak sia applicato.
Manuale di apprendimento: (learning)Metodi di modifica section ‘Metodi di modifica’ in Manuale di Apprendimento.
Estendere LilyPond: (extending)Displaying music expressions section ‘Displaying music expressions’ in Estendere.
Il comando \tweak non può essere usato per modificare i punti di
controllo di una sola legatura di valore tra tante in un accordo, se non
quelli della prima legatura incontrata nel file di input.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\set vs. \override@translationof set versus override
I comandi \set e \override manipolano le proprietà
associate ai contesti. In entrambi i casi, le proprietà
seguono una gerarchia dei contesti; proprietà non impostate in
un contesto mostreranno i valori del rispettivo contesto padre.
La durata e il valore di una proprietà di contesto sono dinamici e disponibili soltanto mentre la musica viene interpretata (ovvero ‘reiterata’). Nel momento della creazione del contesto, le proprietà sono inizializzate a partire dalle definizioni corrispondenti (insieme a altre modifiche) di quel contesto. Qualsiasi modifica successiva viene fatta con dei comandi di impostazione della proprietà presenti nella musica stessa.
Le definizioni degli oggetti grafici (o “grob”) sono una categoria speciale di proprietà di contesto, perché la loro struttura e uso sono diversi da quelli delle normali proprietà di contesto. Diversamente da quest’ultime, le definizioni dei grob sono suddivise in proprietà dei grob.
Inoltre, diversamente dalle normali proprietà di contesto, le definizioni dei grob hanno una loro ‘contabilità’ interna usata per tenere traccia delle loro individuali proprietà e sottoproprietà. Ciò significa che è possibile definire queste parti in contesti diversi e avere sempre a disposizione la definizione complessiva del grob nel momento della sua creazione, assemblata da tutti i pezzi compresi tra il contesto corrente e i suoi contesti superiori.
Un grob viene solitamente creato da un incisore nel momento in cui l’espressione musicale viene interpretata e riceve le sue proprietà iniziali dalla definizione del grob corrente del contesto dell’incisore. L’incisore (o altre parti del ‘backend’ di LilyPond) può successivamente cambiare (o aggiungere) le proprietà iniziali del grob, ma ciò non ha effetto sulla definizione di grob del contesto.
Ciò che LilyPond chiama ‘proprietà del grob’ nel contesto delle modifiche a livello di utente sono in realtà le proprietà della definizione di grob di un contesto.
Le definizioni di grob sono manipolate con \override e
\revert e hanno un nome che inizia con una lettera maiuscola
(come ‘NoteHead’), mentre le normali proprietà di contesto sono
manipolate con \set e \unset e il loro nome inizia con
una lettera minuscola.
I comandi \tweak e \overrideProperty modificano le proprietà
dei grob bypassando completamente tutte le proprietà di contesto.
Catturano i grob mentre vengono creati, impostando le loro proprietà per un
evento musicale (\tweak) o, nel caso di \overrideProperty, per
una sovrascrittura specifica.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\offset@translationof The offset command
Sebbene sia possibile impostare le proprietà dei grob su nuovi valori coi
comandi \override, \tweak e \overrideProperty, è spesso
più opportuno modificare tali proprietà in modo relativo a un valore
predefinito. A questo fine è stato creato il comando \offset.
La sintassi di \offset è
[-]\offset proprietà offset elemento |
Il comando funziona aggiungendo i contenuti di offset all’impostazione predefinita della proprietà proprietà del grob indicato da elemento.
A seconda di come è formulato il comando, \offset può comportarsi
come un \tweak o come un \override. Le variazioni d’uso
sono trattate dopo aver considerato le proprietà del grob che possono
essere usate con \offset.
Molte, ma non tutte, le proprietà dei grob possono essere spostate con
offset. Se la proprietà non può essere spostata con offset, l’oggetto
resterà invariato e apparirà un avviso. In questi casi bisogna usare
\override o \tweak per modificare l’oggetto.
Si potrebbe procedere per prova e errore e basarsi sugli avvisi per capire cosa può essere spostato con offset e cosa no. Tuttavia si può usare un approccio più sistematico.
I seguenti criteri determinano se una proprietà possa essere modificata con
\offset:
number, una lista di number, number-pair e
number-pair-list. Le pagine in
(internals)All layout objects section ‘All layout objects’ in Guida al Funzionamento Interno
elencano il tipo di dati tipici di ciascuna proprietà. È irrilevante
che l’impostazione predefinita sia una funzione.
Gli esempi seguenti prendono in considerazione varie proprietà grob in relazione ai criteri appena delineati.
Hairpin.heightQuesta proprietà non è una sottoproprietà e è elencata in
(internals)Hairpin section ‘Hairpin’ in Guida al Funzionamento Interno. Come valore prende ‘dimensione, in spazi
rigo’ impostata su 0.6666, ovviamente non un numero infinito.
Arpeggio.positionsLa pagina
(internals)Arpeggio section ‘Arpeggio’ in Guida al Funzionamento Interno elenca una proprietà positions che
accetta una ‘coppia di numeri’. Il suo valore predefinito è
ly:arpeggio::positions, una funzione di callback che verrà elaborata
durante la fase di formattazione tipografica per emettere una coppia di numeri
per ogni oggetto Arpeggio.
Hairpin.colorcolor non è presente in
(internals)Hairpin section ‘Hairpin’ in Guida al Funzionamento Interno.
Hairpin.circled-tipL’elenco per Hairpin.circled-tip in
(internals)Hairpin section ‘Hairpin’ in Guida al Funzionamento Interno mostra
che prende un valore booleano. I booleani sono non numerici.
Stem.details.lengthsBenché sia elencato in
(internals)Stem section ‘Stem’ in Guida al Funzionamento Interno e il suo valore predefinito sia
un elenco di number, si tratta di una ‘sottoproprietà’. Attualmente
non sono supportate le ‘proprietà annidate’.
Se elemento è un nome di grob come Arpeggio o
Staff.OttavaBracket, il risultato è un \override del tipo
di grob specificato.
\offset proprietà offset [contesto.]NomeGrob |
Notare che il trattino iniziale non è mai usato nella forma ‘override’,
proprio come non è mai usato col comando \override stesso.
L’esempio seguente usa la forma ‘override’ per allungare gli arpeggi
predefiniti mostrati nella prima misura in modo che coprano del tutto
l’esensione degli accordi. Gli arpeggi sono allungati di mezzo spazio
rigo verso l’alto e verso il basso. Viene mostrata anche la stessa
operazione fatta sul primo accordo con un normale override della proprietà
positions. Questo metodo non rispecchia affatto il compito di
‘allungare di mezzo spazio rigo’, perché le estremità devono essere
specificate con coordinate assolute invece che relative. Inoltre, sarebbero
necessari override individuali per ciascuno degli altri accordi, dato che
variano in dimensione e posizione.
arpeggioMusic = { <c' e' g'>\arpeggio <a' c'' e''>\arpeggio <d' f' a' c''>\arpeggio <c' e' g' b' d'' f'' a''>\arpeggio } { \arpeggioMusic \bar "||" \offset positions #'(-0.5 . 0.5) Arpeggio \arpeggioMusic \bar "||" \once \override Arpeggio.positions = #'(-3.5 . -0.5) <c' e' g'>1\arpeggio \bar "||" }
Nel suo uso come ‘override’, \offset può essere preceduto da
\once o \temporary e annullato con \revert e la
proprietà (vedi
(extending)Intermediate substitution functions section ‘Intermediate substitution functions’ in Estendere).
Ciò deriva dal fatto che \offset in realtà crea un
\override della proprietà.
music = { c'8\< d' e' f'\! } { \music \offset height 1 Hairpin \music \music \revert Hairpin.height \music \bar "||" \once \offset height 1 Hairpin \music \music \bar "||" \override Hairpin.height = 0.2 \music \temporary \offset height 2 Hairpin \music \music \revert Hairpin.height \music \bar "||" }
Proprio come \override, la forma ‘override’ di \offset può
essere usata con \undo e \single.
longStem = \offset length 6 Stem { \longStem c'4 c''' c' c'' \bar "||" \undo \longStem c'4 c''' c' c'' \bar "||" \single \longStem c'4 c''' c' c'' \bar "||" }
Se elemento è un’espressione musicale come ( o
\arpeggio, il risultato è la stessa espressione musicale
con una modifica di tipo tweak applicata.
[-]\offset [NomeGrob.]proprietà offset espressione-musicale |
La sintassi di \offset nella sua forma ‘tweak’ è analoga a quella
dello stesso comando \tweak, sia nell’ordine sia in presenza o assenza
del trattino iniziale.
L’esempio seguente usa la forma ‘tweak’ per regolare la posizione verticale
dell’oggetto BreathingSign. Si confronti questo col normale comando
\tweak che lo segue. La sintassi è equivalente, ma l’output di
\tweak è meno intuitivo, perché BreathingSign.Y-offset è
calcolato dalla linea centrale del pentagramma. Al contratio, non è necessatio
conoscere come è calcolato Y-offset quando si usa \offset.
{ c''4 \breathe c''4 \offset Y-offset 2 \breathe c''2 \tweak Y-offset 3 \breathe }
Nell’esempio precedente, gli oggetti modificati sono stati creati direttamente
dall’input dell’utente: il comando \breathe è un’istruzione esplicita
che restituisce un oggetto BreathingSign. Dato che l’ambito del comando
era non ambiguo, non è stato necessario specificare il nome dell’oggetto.
Ma quando un oggetto viene creato indirettamente, bisogna includere il
nome del grob. Ciò è valido anche per il comando \tweak.
Nell’esempio seguente, l’oggetto Beam viene abbassato di due spazi
rigo applicando \offset alla proprietà positions.
Il primo impiego di \offset richiede la presenza del nome del grob,
perché nessun elemento dell’input crea esplicitamente la travatura. Nel
secondo impiego la travatura viene creata manualmente con l’espressione
musicale [; dunque il nome del grob non è necessario. L’esempio
mostra anche una scorciatoia: un singolo numero viene applicato
a entrambi i membri di una coppia di numeri.)
{ c''8 g'' e'' d'' \offset Beam.positions #'(-2 . -2) c''8 g'' e'' d'' c''8 g'' e'' d'' c''8-\offset positions #-2 [ g'' e'' d''] }
È anche possibile modificare in modo indipendente i segmenti di un estensore che va oltre una o più interruzioni di linea. In questo caso, offset prende una lista di valori del tipo di dati richiesto dalla proprietà.
Il comando \offset usato in questo modo è simile al comando
\alterBroken, vedi Modifica degli estensori spezzati.
Tuttavia, diversamente da \alterBroken, i valori assegnati a
\offset non sono assoluti, ma relativi.
L’esempio seguente sposta l’oggetto ‘spezzato’ OttavaBracket
attraverso la sua proprietà staff-padding. Dato che la proprietà
prende un numero, a offset viene fornita una lista di
numeri per rendere conto dei due segmenti creati dall’interruzione
di linea.
Il pezzo di parentesi dell’ottava sulla prima linea non viene modificato
perché viene aggiunto 0 al suo valore predefinito di staff-padding.
Il segmento sulla seconda linea viene alzato di tre spazi rigo dalla sua
altezza predefinita. L’altezza predefinita è 2, anche se non è
necessario saperlo per ottenere la posizione desiderata.
{ \offset staff-padding #'(0 3) Staff.OttavaBracket \ottava #1 c'''2 c''' \break c'''2 c''' }
L’esempio seguente imita l’effetto del comando \shape spostando la
proprietà control-points dell’oggetto Slur.
Qui offset è una lista di number-pair-list, una per ciascun
segmento della legatura di portamento. Questo esempio realizza un risultato
identico a quello corrispondente in Modifica delle forme.
{ c'4-\offset control-points #'( ((0 . 0) (0 . 0) (0 . 0) (0 . 1)) ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) ) ( f'4 g' c'' \break d'4 c'' f' c') }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Modifying alists
Alcune proprietà configurabili dall’utente sono rappresentate internamente come alist (liste associative), che contengono coppie di chiavi e valori. La struttura di una lista associativa è:
'((chiave1 . valore1) (chiave2 . valore2) (chiave3 . valore3) …) |
Se una lista associativa è una proprietà di un grob o una variabile
\paper, le sue chiavi possono essere modificate individualmente
senza influenzare altre chiavi.
Per esempio, per ridurre lo spazio tra righi adiacenti in un gruppo di
righi, si usa la proprietà staff-staff-spacing del grob
StaffGrouper. La proprietà è una lista associativa con quattro
chiavi: basic-distance, minimum-distance,
padding e stretchability. Le impostazioni predefinite
per questa proprietà sono elencate nella sezione “Backend” della
Guida al funzionamento interno (vedi
(internals)StaffGrouper section ‘StaffGrouper’ in Guida al Funzionamento Interno):
'((basic-distance . 9) (minimum-distance . 7) (padding . 1) (stretchability . 5)) |
Un modo per avvicinare i righi è ridurre il valore della chiave
basic-distance (9) perché corrisponda al valore
di minimum-distance (7). Per modificare una chiave
singola individualmente, usare una dichiarazione annidata:
% spazio predefinito tra i righi \new PianoStaff << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >> % spazio ridotto tra i righi \new PianoStaff \with { % questa è la dichiarazione annidata \override StaffGrouper.staff-staff-spacing.basic-distance = #7 } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
Con una dichiarazione annidata si aggiornerà la chiave specificata (come
basic-distance nell’esempio precedente) senza modificare alcuna
altra chiave già impostata per la stessa proprietà.
Ora immaginiamo di volere che i righi siano più vicini possibile ma senza sovrapporsi. Il modo più semplice per fare ciò è impostare tutte e quattro le chiavi della lista su zero. Tuttavia, non è necessario inserire quattro dichiarazioni annidate, una per ogni chiave. Si può invece ridefinire completamente la proprietà con una sola dichiarazione, attraverso una lista associativa:
\new PianoStaff \with { \override StaffGrouper.staff-staff-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0) (stretchability . 0)) } << \new Staff { \clef treble c''1 } \new Staff { \clef bass c1 } >>
Nota bene che qualsiasi chiave non elencata esplicitamente nella
definizione della lista associativa sarà ripristinata al suo valore
predefinito-quando-non-impostato. Nel caso di
staff-staff-spacing, qualsiasi chiave-valore non impostata
viene ripristinata su zero (eccetto stretchability, che
prende il valore di basic-distance quando non è impostata). Dunque
le due seguenti dichiarazioni sono equivalenti:
\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7))
\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 7)
(minimum-distance . 0)
(padding . 0)
(stretchability . 7))
|
Una conseguenza (possibilmente non voluta) di questo approccio è
l’eliminazione di eventuali impostazioni predefinite impostate in
un file di inizializzazione e caricate ogni volta che un file di
input viene compilato. Nell’esempio precedente le impostazioni
predefinite per padding e minimum-distance (definite
in ‘scm/define-grobs.scm’) sono ripristinate ai loro valori
predefiniti-quando-non-impostati (zero per entrambe le chiavi).
La definizione di una proprietà o di una variabile come una lista
associativa (di qualsiasi dimensione) ripristinerà sempre tutte
le chiavi-valori ai loro valori predefiniti-quando-non-impostati.
A meno che questo non sia il risultato voluto, è più sicuro
aggiornare le chiavi-valori individualmente con una dichiarazione
annidata.
Nota: Le dichiarazioni annidate non funzionano per le liste
associative delle proprietà di contesto (come beamExceptions,
keyAlterations, timeSignatureSettings, etc.). Queste
proprietà possono essere modificate soltanto ridefinendole completamente
come liste associative.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.