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-rigoPunto di riferimento
ChordNameslinea di base
NoteNameslinea di base
Lyricslinea di base
Dynamicsmetà altezza di ‘m’
FiguredBasspunto più alto
FretBoardslinea più alta

Nell’immagine seguente, le linee orizzontali indicano le posizioni di questi punti di riferimento:

[image of music]

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 un VerticalAxisGroup è una funzione Scheme che applica le proprietà di StaffGrouper 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 che staff-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ù) e CENTER (centro). Se impostata su CENTER, 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 di staff-affinity che non cresce: per esempio, una linea che non è un rigo impostata su UP non deve seguire immediatamente una linea impostata su DOWN. Linee che non sono righi in cima a un sistema devono usare DOWN; quelle in fondo UP. Impostando staff-affinity per un rigo, questo sarà trattato come una linea che non è un rigo. Impostando staff-affinity su #f, una linea che non è un rigo sarà trattata come un rigo. Impostando staff-affinity su UP, CENTER o DOWN, 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 e staff-affinity è impostato su UP o DOWN. Se staff-affinity è impostato su CENTER, viene usato nonstaff-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. Impostando stretchability 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 se staff-affinity è impostata su UP o DOWN.

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 se staff-affinity è impostato su UP o DOWN. Ciò può servire, per esempio, a imporre un padding minimo tra una linea Lyrics 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 grob VerticalAxisGroup 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 grob VerticalAxisGroup 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.


Guida alla Notazione di LilyPond v2.25.22 (development-branch).