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]


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:

FunzioneFormaPrima diSenzaDopo
vettorialeinterruzioneinterruzioneinterruzione
all-visible#(#t #t #t)
begin-of-line-visible#(#f #f #t)nono
center-visible#(#f #t #f)nono
end-of-line-visible#(#t #f #f)nono
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)nonono

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 formattazioneContesto abitualeImpostazione predefinita
BarLineScorecalcolato
BarNumberScorebegin-of-line-visible
BreathingSignVoicebegin-of-line-invisible
ClefStaffbegin-of-line-visible
CustosStaffend-of-line-visible
DoublePercentRepeatVoicebegin-of-line-invisible
KeyCancellationStaffbegin-of-line-invisible
KeySignatureStaffbegin-of-line-visible
ClefModifierStaffbegin-of-line-visible
RehearsalMarkScoreend-of-line-invisible
TimeSignatureStaffall-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.22.1 (ramo stabile).