Proprietà della spaziatura dentro un sistema
I meccanismi di spaziatura verticale dentro un sistema sono regolati da
due gruppi di proprietà dei grob. Il primo gruppo è associato al grob
VerticalAxisGroup, creato da tutti i righi e tutte le linee che
non sono righi. Il secondo gruppo è associato al grob
StaffGrouper, che può essere creato da gruppi di righi, ma
solo se richiamato esplicitamente. Queste proprietà sono descritte
una per una alla fine di questa sezione.
Il nome di queste proprietà (con l’eccezione di staff-affinity)
hanno il formato elemento1-elemento2-spacing, dove
elemento1 e elemento2 sono gli elementi di
cui determinare la distanza. Nota che elemento2 non è
necessariamente sotto elemento1; per esempio,
nonstaff-relatedstaff-spacing prenderà le misure verso l’alto a
partire dalla linea che non è un rigo (nonstaff) se
staff-affinity è impostato su UP.
Ogni distanza è calcolata tra i punti di riferimento dei due
elementi. Il punto di riferimento di un rigo è il centro verticale
del suo StaffSymbol (ovvero la linea centrale se
line-count (il numero di linee) è dispari; lo spazio centrale
se line-count è pari). I punti di riferimento per ciascuna linea
che non è un rigo sono elencati nella seguente tabella:
| Linea non-rigo | Punto di riferimento |
|---|---|
ChordNames | linea di base |
NoteNames | linea di base |
Lyrics | linea di base |
Dynamics | metà altezza di ‘m’ |
FiguredBass | punto più alto |
FretBoards | linea più alta |
Nell’immagine seguente, le linee orizzontali indicano le posizioni di questi punti di riferimento:
Tutte le proprietà di spaziatura verticale del grob (eccetto
staff-affinity) usano la stessa struttura della lista
associativa usata dalle variabili di spaziatura di \paper
trattate in
Variabili \paper della spaziatura verticale flessibile.
Metodi specifici per modificare queste liste sono spiegati in
Modifica delle liste associative. Le proprietà dei grob devono essere
modificate con un comando \override dentro un blocco
\score o \layout e non in un blocco
\paper.
L’esempio seguente illustra i due modi con cui si possono modificare queste liste associative (alist). La prima dichiarazione trasforma un elemento-valore singolarmente, mentre la seconda ridefinisce completamente la proprietà:
\new Staff \with {
\override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
} { … }
\new Staff \with {
\override VerticalAxisGroup.default-staff-staff-spacing =
#'((basic-distance . 10)
(minimum-distance . 9)
(padding . 1)
(stretchability . 10))
} { … }
Per cambiare le impostazioni di spaziatura globalmente, inserirle in
un blocco \layout:
\layout {
\context {
\Staff
\override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
}
}
Le impostazioni predefinite delle proprietà di spaziatura verticale dei
grob sono elencate in VerticalAxisGroup e
StaffGrouper. Le modifiche predefinite con \override
per tipologie specifiche di linee che non sono righi sono elencate
nelle descrizioni del relativo contesto in Contexts.
Proprietà del grob VerticalAxisGroup
Le proprietà di VerticalAxisGroup sono solitamente modificate
con un \override nel livello Staff (o equivalente).
staff-staff-spacing-
Usata per determinare la distanza tra il rigo corrente e il rigo inferiore nello stesso sistema, anche se tra i due si trovano una o più linee che non sono righi (come
Lyrics). Non è applicata all’ultimo rigo di un sistema.Inizialmente, la proprietà
staff-staff-spacingdi unVerticalAxisGroupè una funzione Scheme che applica le proprietà diStaffGrouperse il rigo fa parte di un gruppo, o la proprietàdefault-staff-staff-spacingdel rigo altrimenti. Questo permette ai righi di essere spaziati diversamente quando sono raggruppati. Per ottenere una spaziatura uniforme indipendentemente dal raggruppamento, questa funzione può essere sostituita da un alist di spaziatura flessibile, usando la forma di override che ridefinisce completamente la variabile, come mostrato prima. default-staff-staff-spacingUn alist di spaziatura flessibile che definisce la proprietà
staff-staff-spacingusata per i righi isolati, a meno chestaff-staff-spacingnon sia stata impostata esplicitamente con un\override.staff-affinityLa direzione del rigo da usare per spaziare la linea che non è un rigo. Le opzioni sono
UP(su),DOWN(giù) eCENTER(centro). Se impostata suCENTER, la linea fuori dal rigo si troverà in un punto equidistante tra i due righi più vicini su qualunque lato, a meno che delle collisioni o altre costrizioni di spazio non lo impediscano. Linee (che non sono righi) adiacenti dovrebbero avere un valore distaff-affinityche non cresce: per esempio, una linea che non è un rigo impostata suUPnon deve seguire immediatamente una linea impostata suDOWN. Linee che non sono righi in cima a un sistema devono usareDOWN; quelle in fondoUP. Impostandostaff-affinityper un rigo, questo sarà trattato come una linea che non è un rigo. Impostandostaff-affinitysu#f, una linea che non è un rigo sarà trattata come un rigo. Impostandostaff-affinitysuUP,CENTERoDOWN, un rigo verrà spaziato come se fosse una linea che non è un rigo.nonstaff-relatedstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e il rigo più vicino nella direzione di
staff-affinity, se non ci sono linee che non sono righi tra le due estaff-affinityè impostato suUPoDOWN. Sestaff-affinityè impostato suCENTER, viene usatononstaff-relatedstaff-spacingper i righi più vicini su entrambi i lati, anche se appaiono altre linee tra quella corrente e uno qualsiasi dei righi. Ciò significa che il posizionamento di una linea dipende sia dai righi che dalle linee circostanti. Impostando la proprietàstretchabilitydi uno di questi tipi di spaziatura su un piccolo valore, quella spaziatura sarà dominante. Impostandostretchabilitysu un grande valore, quella spaziatura avrà poco effetto.nonstaff-nonstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e quella successiva nella direzione di
staff-affinity, se entrambe sono sullo stesso lato del rigo in questione e sestaff-affinityè impostata suUPoDOWN.nonstaff-unrelatedstaff-spacingLa distanza fra la linea (che non è un rigo) corrente e il rigo nella direzione opposta rispetto a
staff-affinity, se non ci sono altre linee tra i due e sestaff-affinityè impostato suUPoDOWN. Ciò può servire, per esempio, a imporre un padding minimo tra una lineaLyricse il rigo al quale non appartiene.
Proprietà del grob StaffGrouper
Le proprietà di StaffGrouper sono solitamente modificate con un
\override nel livello StaffGroup (o livello equivalente).
staff-staff-spacingLa distanza tra righi consecutivi del gruppo di righi corrente. La proprietà
staff-staff-spacingdel grobVerticalAxisGroupdi un singolo rigo può essere sovrascritta con varie impostazioni di spaziatura per quel rigo.staffgroup-staff-spacingLa distanza tra l’ultimo rigo del gruppo di righi corrente e il rigo immediatamente successivo nello stesso sistema, anche se tra i due righi ci sono una o più linee che non sono righi (come
Lyrics). Non è applicata al rigo inferiore di un sistema. La proprietàstaff-staff-spacingdel grobVerticalAxisGroupdi un singolo rigo può essere sovrascritta con varie impostazioni di spaziatura per quel rigo.
Vedi anche
Guida alla notazione:
Variabili \paper della spaziatura verticale flessibile,
Modifica delle liste associative.
File installati: ly/engraver-init.ly, scm/define-grobs.scm.
Guida al funzionamento interno: Contexts, VerticalAxisGroup, StaffGrouper.
![[image of music]](../c2/lily-90d63cab.png)