4.4.1 Spaziatura verticale flessibile all’interno dei sistemi
Tre meccanismi distinti regolano la spaziatura verticale flessibile all’interno dei sistemi, uno per ognuna delle seguenti categorie:
- righi non raggruppati,
-
righi raggruppati (righi con un gruppo come
ChoirStaff
, etc.), e -
linee che non sono righi (come
Lyrics
,ChordNames
, etc.).
L’altezza di ogni sistema è determinata in due fasi. Prima vengono spaziati tutti i righi in base alla quantità di spazio disponibile. Poi le linee che non sono righi sono distribuite tra i righi.
Nota che i meccanismi di spaziatura trattati in questa sezione regolano
soltanto la spaziatura verticale dei righi e delle linee (che non sono
righi) all’interno di singoli sistemi. La spaziatura verticale tra
sistemi, partiture, testi e margini separati è regolata dalle variabili
\paper
trattate in
Variabili \paper
della spaziatura verticale flessibile.
Proprietà della spaziatura dentro un sistema | ||
Spaziatura dei righi non raggruppati | ||
Spaziatura dei righi raggruppati | ||
Spaziatura delle linee che non sono righi |
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.
Spaziatura dei righi non raggruppati
I righi (come Staff
, DrumStaff
,
TabStaff
, etc.) sono contesti che possono contenere uno o
più contesti voce, ma non possono contenere altri righi.
Le seguenti proprietà influenzano la spaziatura di righi non raggruppati:
- Proprietà di
VerticalAxisGroup
:-
default-staff-staff-spacing
-
staff-staff-spacing
-
Queste proprietà del grob sono state descritte una a una in precedenza; vedi Proprietà della spaziatura dentro un sistema.
Altre proprietà entrano in gioco per i righi che sono parte di un gruppo; vedi Spaziatura dei righi raggruppati.
L’esempio seguente mostra come la proprietà default-staff-staff-spacing
possa influenzare la spaziatura di righi non raggruppati. Le stesse
modifiche applicate a staff-staff-spacing
avrebbero lo stesso
effetto, ma verrebbero applicate anche nel caso in cui i righi siano
combinati in uno o più gruppi.
\layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 8) (minimum-distance . 7) (padding . 1)) } } << % Questa nota molto bassa ha bisogno di più spazio di quanto 'basic-distance % possa fornirne, dunque la distanza tra questo rigo e quello successivo % è determinato da 'padding. \new Staff { b,2 r | } % Qui 'basic-distance fornisce abbastanza spazio, e non c'è bisogno % di comprimere lo spazio (verso 'minimum-distance) per far spazio % per qualcos'altro sulla pagina, dunque la distanza tra questo % rigo e quello successivo è determinato da 'basic-distance. \new Staff { \clef bass g2 r | } % Impostando 'padding su un valore negativo, è possibile far sì che % i righi entrino in collisione. Il più basso valore accettabile per % 'basic-distance è 0. \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 3.5) (padding . -10)) } { \clef bass g2 r | } \new Staff { \clef bass g2 r | } >>
Vedi anche
File installati: ‘scm/define-grobs.scm’.
Frammenti: Spacing.
Guida al funzionamento interno: VerticalAxisGroup.
Spaziatura dei righi raggruppati
Nelle partiture orchestrali e in alte grosse partiture, di norma i righi vengono raggruppati. Lo spazio tra i gruppi è più ampio dello spazio tra i righi dello stesso gruppo.
I gruppi di righi (come StaffGroup
, ChoirStaff
,
etc.) sono contesti che possono contenere uno o più righi
simultaneamente.
Le seguenti proprietà influenzano la spaziatura dei righi nei gruppi:
- Proprietà di
VerticalAxisGroup
:-
staff-staff-spacing
-
- Proprietà di
StaffGrouper
:-
staff-staff-spacing
-
staffgroup-staff-spacing
-
Queste proprietà dei grob sono descritte una a una in una sezione precedente; vedi Proprietà della spaziatura dentro un sistema.
L’esempio seguente mostra come le proprietà del grob
StaffGrouper
possano influenzare la spaziatura dei righi raggruppati:
\layout { \context { \Score \override StaffGrouper.staff-staff-spacing.padding = #0 \override StaffGrouper.staff-staff-spacing.basic-distance = #1 } } << \new PianoStaff \with { \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20 } << \new Staff { c'1 } \new Staff { c'1 } >> \new StaffGroup << \new Staff { c'1 } \new Staff { c'1 } >> >>
Vedi anche
File installati: ‘scm/define-grobs.scm’.
Frammenti: Spacing.
Guida al funzionamento interno: VerticalAxisGroup, StaffGrouper.
Spaziatura delle linee che non sono righi
Le linee che non sono righi (come Lyrics
, ChordNames
,
etc.) sono contesti i cui oggetti della formattazione sono disposti come se
fossero su dei righi (ovvero su linee orizzontali all’interno dei sistemi).
Precisamente, le linee che non sono righi sono contesti non-rigo che contengono
l’incisore
Axis_group_engraver.
Le seguenti proprietà influenzano la spaziatura delle linee che non sono righi:
- Proprietà di
VerticalAxisGroup
:-
staff-affinity
-
nonstaff-relatedstaff-spacing
-
nonstaff-nonstaff-spacing
-
nonstaff-unrelatedstaff-spacing
-
Queste proprietà del grob sono descritte una a una in una sezione precedente, vedi Proprietà della spaziatura dentro un sistema.
L’esempio seguente mostra come la proprietà
nonstaff-nonstaff-spacing
influenza la spaziatura di linee
che non sono un rigo consecutive. Impostando l’elemento
stretchability
su un valore molto alto, il testo vocale
riesce a allungarsi molto più del solito:
\layout { \context { \Lyrics \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000 } } \new StaffGroup << \new Staff \with { \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30)) } { c'1 } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #UP } \lyricmode { up } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #CENTER } \lyricmode { center } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #DOWN } \lyricmode { down } \new Staff { c'1 } >>
Vedi anche
File installati: ‘ly/engraver-init.ly’, ‘scm/define-grobs.scm’.
Frammenti: Spacing.
Guida al funzionamento interno: Contexts, VerticalAxisGroup.