5.4.7 Visibilità degli oggetti

Esistono quattro modi principali per regolare la visibilità degli oggetti della formattazione: si può togliere il loro stampo, possono essere resi trasparenti, possono essere colorati di bianco o si può sovrascrivere la loro proprietà break-visibility. Le prime tre sono valide per tutti gli oggetti della formattazione; l’ultimo solo per alcuni, gli oggetti che possono essere interrotti, o spezzati, (break, in inglese). Il Manuale di apprendimento contiene un’introduzione a queste quattro tecniche in Visibilità e colore degli oggetti.

Esistono anche altre tecniche che sono specifiche di alcuni oggetti della formattazione. Queste sono trattate in Considerazioni speciali.


Soppressione dello stampo

Tutti gli oggetti della formattazione hanno una proprietà stencil (in italiano, stampo). Per impostazione predefinita questa è impostata sulla funzione specifica che disegna quell’oggetto. Se questa proprietà viene sovrascritta e impostata su #f, non verrà richiamata alcuna funzione e l’oggetto non verrà disegnato. L’azione predefinita può essere ripristinata con \revert.

a1 a
\override Score.BarLine.stencil = ##f
a a
\revert Score.BarLine.stencil
a a a

[image of music]

Questa operazione piuttosto comune ha una scorciatoia, \omit:

a1 a
\omit Score.BarLine
a a
\undo \omit Score.BarLine
a a a

[image of music]


Rendere gli oggetti trasparenti

Tutti gli oggetti della formattazione hanno una proprietà transparent la cui impostazione predefinita è #f (falso). Se impostata su #t (vero), l’oggetto occupa sempre lo spazio ma è reso invisibile.

a'4 a'
\once \override NoteHead.transparent = ##t
a' a'

[image of music]

Questa operazione piuttosto comune ha una scorciatoia, \hide:

a'4 a'
\once \hide NoteHead
a' a'

[image of music]


Dipingere gli oggetti di bianco

Tutti gli oggetti della formattazione hanno una proprietà del colore il cui valore predefinito è black (nero). Se questa viene sovrascritta con white (bianco) l’oggetto non sarà più distinguibile dallo sfondo. Tuttavia se l’oggetto attraversa altri oggetti, il colore dei punti di contatto saranno determinati dall’ordine in cui sono disegnati, e ciò potrebbe lasciare un’immagine “spettrale” dell’oggetto bianco, come mostrato qui:

\override Staff.Clef.color = #white
a'1

[image of music]

Ciò può essere evitato cambiando l’ordine di stampa degli oggetti. Tutti gli oggetti della formattazione hanno una proprietà layer (strato) che deve essere impostata su un numero intero. Gli oggetti col valore più basso di layer sono disegnati per primi, poi vengono disegnati quelli con valori via via più alti, dunque gli oggetti con valori più alti stanno sopra gli oggetti con valori più bassi. Per impostazione predefinita alla maggior parte degli oggetti viene assegnato un valore di layer pari a 1, sebbene ad alcuni oggetti, tra cui StaffSymbol e BarLine, sia assegnato un valore di 0. L’ordine con cui vengono stampati oggetti con lo stesso valore di layer è indeterminato.

Nell’esempio precedente la chiave bianca, con un valore predefinito di layer di 1, viene disegnato dopo le linee del rigo (il cui valore predefinito di layer è 0), dunque sta sopra di esse. Per cambiare tale comportamento, all’oggetto Clef deve essere assegnato un valore di layer inferiore, per esempio -1, in modo che venga disegnato prima:

\override Staff.Clef.color = #white
\override Staff.Clef.layer = #-1
a'1

[image of music]

Frammenti di codice selezionati

Uso della proprietà whiteout

Qualsiasi oggetto grafico può essere posizionato sopra uno sfondo bianco per mascherare parti degli oggetti che si trovano sotto. Ciò può essere utile per migliorare l’aspetto delle collisioni in situazioni complesse in cui il riposizionamento degli oggetti è troppo difficile. Bisogna impostare esplicitamente la proprietà layer (livello) per controllare quali oggetti debbano essere mascherati dallo sfondo bianco.

In questo esempio la collisione della legatura di valore con l’indicazione di tempo viene migliorata mascherando la parte della legatura che incrocia l’indicazione di tempo impostando la proprietà whiteout di TimeSignature. Per farlo si sposta TimeSignature su un livello superiore a Tie, che viene lasciato al livello predefinito 1; e StaffSymbol viene spostato su un livello superiore a TimeSignature in modo che non venga mascherato.

{
  \override Score.StaffSymbol.layer = #4
  \override Staff.TimeSignature.layer = #3
  b'2 b'~
  \once \override Staff.TimeSignature.whiteout = ##t
  \time 3/4
  b' r4
}

[image of music]


Uso di break-visibility

La maggior parte degli oggetti della formattazione sono stampati una volta sola, ma alcuni come le stanghette, le chiavi, le indicazioni di tempo e le armature di chiave possono dover essere stampate due volte quando si verifica un’interruzione di linea – una volta al termine della linea e di nuovo all’inizio della linea successiva. Tali oggetti, chiamati spezzabili, (dall’inglese breakable) hanno una proprietà, break-visibility, per regolare la loro visibilità nelle tre posizioni in cui potrebbero apparire: all’inizio di una linea, in mezzo a una linea se vengono modificati e al termine di una linea se un cambiamento ha luogo lì.

Per esempio, l’indicazione di tempo viene stampata all’inizio della prima linea, ma da nessuna altra parte a meno che non cambi e allora verrà stampata nel punto in cui il cambiamento ha luogo. Se tale cambiamento si verifica al termine di una linea, la nuova indicazione di tempo verrà stampata all’inizio della linea successiva e un’indicazione di tempo di precauzione verrà stampata anche al termine della linea precedente.

Tale comportamento è regolato dalla proprietà break-visibility, che è spiegata in Visibilità e colore degli oggetti. Questa proprietà prende un vettore di tre valori booleani che, in ordine, determinano se l’oggetto è stampato al termine, in mezzo o all’inizio di una linea. O, per essere più precisi, prima di un’interruzione di linea, dove non c’è un’interruzione di linea oppure dopo un’interruzione di linea.

Altrimenti, queste otto combinazoni possono essere specificate da funzioni predefinite, definite in ‘scm/output-lib.scm’, dove le ultime tre colonne indicano se gli oggetti della formattazione saranno visibili nelle posizioni mostrate nell’intestazione delle colonne:

Funzione

Forma

Prima di

Senza

Dopo

vettoriale

interruzione

interruzione

interruzione

all-visible

#(#t #t #t)

begin-of-line-visible

#(#f #f #t)

no

no

center-visible

#(#f #t #f)

no

no

end-of-line-visible

#(#t #f #f)

no

no

begin-of-line-invisible

#(#t #t #f)

no

center-invisible

#(#t #f #t)

no

end-of-line-invisible

#(#f #t #t)

no

all-invisible

#(#f #f #f)

no

no

no

Le impostazioni predefinite di break-visibility dipendono dall’oggetto della formattazione. La tabella seguente mostra tutti gli oggetti rilevanti che sono influenzati da break-visibility e l’impostazione predefinita di questa proprietà:

Oggetto formattazione

Contesto abituale

Impostazione predefinita

BarLine

Score

calcolato

BarNumber

Score

begin-of-line-visible

BreathingSign

Voice

begin-of-line-invisible

Clef

Staff

begin-of-line-visible

Custos

Staff

end-of-line-visible

DoublePercentRepeat

Voice

begin-of-line-invisible

KeyCancellation

Staff

begin-of-line-invisible

KeySignature

Staff

begin-of-line-visible

ClefModifier

Staff

begin-of-line-visible

RehearsalMark

Score

end-of-line-invisible

TimeSignature

Staff

all-visible

L’esempio successivo mostra l’uso della forma vettoriale per regolare la visibilità delle stanghette:

\relative {
  f'4 g a b
  f4 g a b
  % Toglie la stanghetta al termine della linea corrente
  \once \override Score.BarLine.break-visibility = ##(#f #t #t)
  \break
  f4 g a b
  f4 g a b
}

[image of music]

Sebbene tutti i componenti del vettore usati per sovrascrivere break-visibility debbano essere presenti, non tutti sono funzionanti con qualsiasi oggetto della formattazione, e alcune combinazioni potrebbero perfino dare errore. Esistono le seguenti limitazioni:


Considerazioni speciali

Visibilità dopo un cambio esplicito

La proprietà break-visibility controlla la visibilità delle armature di chiave e dei cambi di chiave solo all’inizio delle linee, ovvero dopo un’interruzione di linea. Non ha effetto sulla visibilità dell’armatura di chiave o della chiave che seguono un cambio esplicito dell’armatura o della chiave all’interno o alla fine di una linea. Nell’esempio seguente l’armatura di chiave che segue il cambio esplicito a Si bemolle maggiore è ancora visibile, anche se all-invisible è impostata.

\relative {
  \key g \major
  f'4 g a b
  % Tentativo di eliminazione di tutte le armature di chiave
  \override Staff.KeySignature.break-visibility = #all-invisible
  \key bes \major
  f4 g a b
  \break
  f4 g a b
  f4 g a b
}

[image of music]

La visibilità di questi cambi espliciti di armatura e di chiave è controllata dalle proprietà explicitKeySignatureVisibility e explicitClefVisibility. Sono equivalenti alla proprietà break-visibility e prendono entrambe come argomento un vettore di tre booleani o le funzioni predefinite elencate prima, proprio come break-visibility. Entrambe le proprietà appartengono al contesto Staff, non agli oggetti della formattazione stessi, dunque si impostano col comando \set. La loro impostazione predefinita è all-visible. Queste proprietà regolano solo la visibilità di armature di chiave e chiavi risultanti da cambi espliciti e non quelli all’inizio delle linee; per eliminare questi ultimi bisogna sempre sovrascrivere break-visibility nell’oggetto appropriato.

\relative {
  \key g \major
  f'4 g a b
  \set Staff.explicitKeySignatureVisibility = #all-invisible
  \override Staff.KeySignature.break-visibility = #all-invisible
  \key bes \major
  f4 g a b \break
  f4 g a b
  f4 g a b
}

[image of music]

Visibilità dei bequadri

Per eliminare i bequadri stampati su un cambio di chiave esplicito, impostare la proprietà del contesto Staff printKeyCancellation su #f:

\relative {
  \key g \major
  f'4 g a b
  \set Staff.explicitKeySignatureVisibility = #all-invisible
  \set Staff.printKeyCancellation = ##f
  \override Staff.KeySignature.break-visibility = #all-invisible
  \key bes \major
  f4 g a b \break
  f4 g a b
  f4 g a b
}

[image of music]

Con queste modifiche restano solo le alterazioni accanto alle note per indicare il cambio di armatura.

Nota bene che quando si cambia l’armatura su Do maggiore o La minore i bequadri sono l’unica indicazione del cambio di chiave. In questo caso impostando printKeyCancellation su #f non si ottiene alcun effetto:

\relative {
  \key g \major
  f'4 g a b
  \set Staff.explicitKeySignatureVisibility = #all-invisible
  \set Staff.printKeyCancellation = ##f
  \key c \major
  f4 g a b \break
  f4 g a b
  f4 g a b
}

[image of music]

Per sopprimere i bequadri anche quando la tonalità passa a Do maggiore o La minore, sovrascrivere la visibilità del grob KeyCancellation:

\relative {
  \key g \major
  f'4 g a b
  \set Staff.explicitKeySignatureVisibility = #all-invisible
  \override Staff.KeyCancellation.break-visibility = #all-invisible
  \key c \major
  f4 g a b \break
  f4 g a b
  f4 g a b
}

[image of music]

Battute automatiche

In un caso particolare, la stampa delle stanghette può essere disattivata impostando la proprietà automaticBars nel contesto Score. Se impostata su #f, le stanghette non verranno stampate automaticamente; devono invece essere create esplicitamente con un comando \bar. Diversamente dal comando predefinito \cadenzaOn, le misure vengono comunque contate. La generazione delle battute riprenderà in base a quel conteggio se questa proprietà viene poi impostata su #t. Se impostata su #f, le interruzioni di linea possono trovarsi solo su comandi \bar espliciti.

Chiavi trasposte

Il piccolo simbolo di trasposizione sulle chiavi trasposte è prodotto dall’oggetto di formattazione ClefModifier. La sua visibilità è ereditata automaticamente dall’oggetto Clef, dunque non è necessario applicare una modifica di break-visibility agli oggetti ClefModifier per sopprimere i simboli di trasposizione per le chiavi invisibili.

Per cambi di chiave espliciti, la proprietà explicitClefVisibility regola sia il simbolo della chiave che qualsiasi simbolo di trasposizione ad esso associato.

Vedi anche

Manuale di apprendimento: Visibilità e colore degli oggetti.


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