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-spacing
di unVerticalAxisGroup
è una funzione Scheme che applica le proprietà diStaffGrouper
se il rigo fa parte di un gruppo, o la proprietàdefault-staff-staff-spacing
del 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-spacing
Un alist di spaziatura flessibile che definisce la proprietà
staff-staff-spacing
usata per i righi isolati, a meno chestaff-staff-spacing
non sia stata impostata esplicitamente con un\override
.staff-affinity
La 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-affinity
che non cresce: per esempio, una linea che non è un rigo impostata suUP
non deve seguire immediatamente una linea impostata suDOWN
. Linee che non sono righi in cima a un sistema devono usareDOWN
; quelle in fondoUP
. Impostandostaff-affinity
per un rigo, questo sarà trattato come una linea che non è un rigo. Impostandostaff-affinity
su#f
, una linea che non è un rigo sarà trattata come un rigo. Impostandostaff-affinity
suUP
,CENTER
oDOWN
, un rigo verrà spaziato come se fosse una linea che non è un rigo.nonstaff-relatedstaff-spacing
La 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 suUP
oDOWN
. Sestaff-affinity
è impostato suCENTER
, viene usatononstaff-relatedstaff-spacing
per 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àstretchability
di uno di questi tipi di spaziatura su un piccolo valore, quella spaziatura sarà dominante. Impostandostretchability
su un grande valore, quella spaziatura avrà poco effetto.nonstaff-nonstaff-spacing
La 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 suUP
oDOWN
.nonstaff-unrelatedstaff-spacing
La 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 suUP
oDOWN
. Ciò può servire, per esempio, a imporre un padding minimo tra una lineaLyrics
e 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-spacing
La distanza tra righi consecutivi del gruppo di righi corrente. La proprietà
staff-staff-spacing
del grobVerticalAxisGroup
di un singolo rigo può essere sovrascritta con varie impostazioni di spaziatura per quel rigo.staffgroup-staff-spacing
La 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-spacing
del grobVerticalAxisGroup
di 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.