5.5.1 Allineamento degli oggetti

Gli oggetti grafici che supportano l’interfaccia self-alignment-interface e/o l’interfaccia side-position-interface possono essere allineati a un oggetto disposto precedentemente in vari modi. L’elenco di questi oggetti è consultabile in self-alignment-interface e side-position-interface.

Tutti gli oggetti grafici hanno un punto di riferimento, un’estensione orizzontale e una verticale. L’estensione orizzontale è una coppia di numeri che determina gli spostamenti dal punto di riferimento dei margini sinistro e destro (gli spostamenti a sinistra sono negativi). L’estensione verticale è una coppia di numeri che determina lo spostamento dal punto di riferimento ai margini inferiore e superiore (gli spostamenti in giù sono negativi).

La posizione di un oggetto su un rigo è dato dai valori delle proprietà X-offset e Y-offset. Il valore di X-offset dà lo spostamento dalla coordinata X del punto di riferimento dell’oggetto genitore, mentre il valore di Y-offset dà lo spostamento dalla linea centrale del rigo. I valori di X-offset e Y-offset possono essere impostati direttamente oppure possono essere impostati per essere calcolati dalle procedure in modo da consentire un allineamento con l’oggetto genitore.

Nota: Molti oggetti hanno speciali questioni di posizionamento che fanno sì che qualsiasi impostazione di X-offset o Y-offset sia ignorata o modificata, anche se l’oggetto supporta l’interfaccia self-alignment-interface. Sovrascrivendo le proprietà X-offset o Y-offset su un valore fisso la rispettiva proprietà self-alignment verrà ignorata.

Per esempio, un’alterazione può essere riposizionata verticalmente impostando Y-offset ma qualsiasi modifica di X-offset non avrà effetto.

I segni di chiamata possono essere allineati con oggetti spezzabili come stanghette, simboli di chiave, simboli di indicazione di tempo e armature di chiave. Ci sono proprietà speciali elencate nell’interfaccia break-aligned-interface per posizionare i segni di chiamata su tali oggetti.

Vedi anche

Guida alla notazione: Uso di break-alignable-interface.

Estendere LilyPond: Callback functions.


Impostazione diretta di X-offset e Y-offset

Si possono assegnare valori numerici alle prietà X-offset e Y-offset di molti oggetti. L’esempio seguente mostra tre note con la posizione predefinita della diteggiatura e le posizioni con X-offset e Y-offset modificate.

a'-3
a'
-\tweak X-offset #0
-\tweak Y-offset #0
-3
a'
-\tweak X-offset #-1
-\tweak Y-offset #1
-3

[image of music]


Uso di side-position-interface

Un oggetto che supporta l’interfaccia side-position-interface può essere posizionato accanto al suo oggetto genitore in modo che i margini indicati dei due oggetti si tocchino. L’oggetto può essere posizionato sopra, sotto, a destra o a sinistra dell’oggetto genitore. Quest’ultimo non può essere specificato; è invece determinato dall’ordine degli elementi nel flusso di input. La maggior parte degli oggetti ha la testa di nota associata come oggetto genitore.

I valori delle proprietà side-axis e direction determinano dove l’oggetto deve essere posizionato, in questo modo:

Proprietà side-axis

Proprietà direction

Posizionamento

0

-1

sinistra

0

1

destra

1

-1

sotto

1

1

sopra

Quando side-axis è 0, X-offset deve essere impostato sulla procedura ly:side-position-interface::x-aligned-side. Questa procedura restituirà il valore corretto di X-offset per porre l’oggetto al lato sinistro o destro dell’oggetto genitore in base al valore di direction.

Quando side-axis è 1, Y-offset deve essere impostato sulla procedura ly:side-position-interface::y-aligned-side. Questa procedura restituirà il valore corretto di Y-offset per porre l’oggetto sopra o sotto l’oggetto genitore in base al valore di direction.


Uso di self-alignment-interface

Autoallineamento orizzontale degli oggetti

L’allineamento orizzontale di un oggetto che supporta l’interfaccia self-alignment-interface è regolato dal valore della proprietà self-alignment-X, purché la proprietà X-offset dell’oggetto sia impostata su ly:self-alignment-interface::x-aligned-on-self. A self-alignment-X può essere assegnato qualsiasi numero reale, in unità di metà del totale dell’estensione X dell’oggetto. Valori negativi spostano l’oggetto a destra, valori positivi lo spostano a sinistra. Un valore di 0 centra l’oggetto sul punto di riferimento del suo oggetto genitore, un valore di -1 allinea il margine sinistro dell’oggetto al punto di riferimento del suo genitore, e un valore di 1 allinea il margine destro dell’oggetto al punto di riferimento del suo genitore. I simboli LEFT, CENTER e RIGHT possono essere usati al posto dei valori -1, 0 e 1, rispettivamente.

Normalmente si usa il comando \override per modificare il valore di self-alignment-X, ma il comando \tweak può essere utile per allineare separatamente varie annotazioni su una singola nota:

a'
-\tweak self-alignment-X #-1
^"allineato a sinistra"
-\tweak self-alignment-X #0
^"allineato al centro"
-\tweak self-alignment-X #RIGHT
^"allineato a destra"
-\tweak self-alignment-X #-2.5
^"allineato ancora più a destra"

[image of music]

Autoallineamento verticale degli oggetti

Gli oggetti possono essere allineati verticalmente in un modo analogo al loro allineamento orizzontale se la proprietà Y-offset è impostata su ly:self-alignment-interface::y-aligned-on-self. Tuttavia altri meccanismi sono spesso implicati nell’allineamento verticale: il valore di Y-offset è solo una delle variabili da prendere in considerazione. Ciò potrebbe rendere complicato l’aggiustamento del valore di alcuni oggetti. Le unità sono soltanto la metà dell’estensione verticale dell’oggetto, che è di solito piuttosto piccola, dunque potrebbero essere necessari grossi numeri. Un valore di -1 allinea il margine inferiore dell’oggetto al punto di riferimento dell’oggetto genitore, un valore di 0 allinea il centro dell’oggetto al punto di riferimento del genitore, e un valore di 1 allinea il margine superiore dell’oggetto al punto di riferimento del genitore. I simboli DOWN, CENTER e UP possono essere usati al posto di -1, 0 e 1, rispettivamente.

Autoallineamento degli oggetti in entrambe le direzioni

Impostando sia X-offset che Y-offset, un oggetto può essere allineato in entrambe le direzioni simultaneamente.

L’esempio seguente mostra come aggiustare un segno di diteggiatura in modo che stia vicino alla testa di nota.

a'
-\tweak self-alignment-X #0.5  % sposta orizzontalmente a sinistra
-\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self
-\tweak self-alignment-Y #-1  % sposta verticalmente in su
-3  % terzo dito

[image of music]


Uso di break-alignable-interface

I segni di chiamata e i numeri di battuta possono essere allineati con oggetti della notazione diversi dalle stanghette. Questi oggetti comprendono ambitus, breathing-sign, clef, custos, staff-bar, left-edge, key-cancellation, key-signature e time-signature.

Ogni tipo di oggetto ha il suo punto di riferimento predefinito, al quale i segni di chiamata sono allineati:

% Il segno di chiamata sarà allineato al margine destro della chiave
\override Score.RehearsalMark.break-align-symbols = #'(clef)
\key a \major
\clef treble
\mark "↓"
e'1
% Il segno di chiamata sarà allineato al margine sinistro dell'indicazione di tempo
\override Score.RehearsalMark.break-align-symbols = #'(time-signature)
\key a \major
\clef treble
\time 3/4
\mark "↓"
e'2.
% Il segno di chiamata sarà centrato sul segno di respiro
\override Score.RehearsalMark.break-align-symbols = #'(breathing-sign)
\key a \major
\clef treble
\time 4/4
e'1
\breathe
\mark "↓"

[image of music]

Si può specificare un elenco dei possibili oggetti a cui allineare. Se alcuni oggetti sono invisibili in quel punto a causa dell’impostazione di break-visibility o di impostazioni esplicite della visibilità di tonalità e chiavi, il segno di chiamata o il numero di battuta viene allineato al primo oggetto dell’elenco che è visibile. Se nessun oggetto dell’elenco è visibile, l’oggetto è allineato alla stanghetta. Se la stanghetta è invisibile, l’oggetto viene allineato al punto in cui si dovrebbe trovare la stanghetta.

% Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e'1
% Il segno di chiamata sarà allineato al margine destro della chiave
\set Staff.explicitKeySignatureVisibility = #all-invisible
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef bass
\mark "↓"
gis,1
% Il segno di chiamata sarà centrato sopra la stanghetta
\set Staff.explicitKeySignatureVisibility = #all-invisible
\set Staff.explicitClefVisibility = #all-invisible
\override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
\key a \major
\clef treble
\mark "↓"
e'1

[image of music]

L’allineamento del segno di chiamata relativo all’oggetto della notazione può essere modificato, come evidenziato nell’esempio seguente. In una partitura con molteplici righi, questa impostazione deve essere fatta per tutti i righi.

% Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave
\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\key a \major
\clef treble
\time 4/4
\mark "↓"
e'1
% Il segno di chiamata sarà centrato sopra l'armatura di chiave
\once \override Score.KeySignature.break-align-anchor-alignment = #CENTER
\mark "↓"
\key a \major
e'1
% Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
\once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
\key a \major
\mark "↓"
e'1

[image of music]

Il segno di chiamata può anche essere spostato a destra o a sinistra del margine sinistro di una quantità arbitraria. Le unità sono gli spazi rigo:

% Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
% e poi spostato a destra di 3.5 spazi rigo
\override Score.RehearsalMark.break-align-symbols = #'(key-signature)
\once \override Score.KeySignature.break-align-anchor = #3.5
\key a \major
\mark "↓"
e'1
% Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
% e poi spostato a sinistra di 2 spazi rigo
\once \override Score.KeySignature.break-align-anchor = #-2
\key a \major
\mark "↓"
e'1

[image of music]


LilyPond — Guida alla Notazione v2.23.82 (ramo di sviluppo).