[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Collisioni tra oggetti ] | [ Su : Collisioni tra oggetti ] | [ Correggere elementi della notazione sovrapposti > ] |
5.6.1 Spostare gli oggetti
Per quanto possa apparire sorprendente, LilyPond non è perfetto. Alcuni elementi della notazione possono sovrapporsi. Si tratta di un caso spiacevole, anche se in realtà piuttosto raro. Di solito l’esigenza di spostare gli oggetti dipende da motivi di chiarezza o da ragioni estetiche: gli elementi possono ottenere un aspetto migliore con un po’ più o un po’ meno spazio intorno.
Esistono tre principali approcci per risolvere la sovrapposizione degli elementi della notazione. Vediamoli nel seguente ordine:
- Si può cambiare la direzione di uno degli oggetti che si sovrappongono usando i comandi predefiniti elencati prima, in riferimento agli oggetti interni al rigo (vedi Oggetti interni al rigo). In questo modo si possono riposizionare facilmente gambi, legature di portamento e di valore, travature, segni di dinamica, testo e gruppi irregolari. La limitazione è che si tratta di una scelta circoscritta a due sole posizioni, nessuna delle quali potrebbe essere appropriata.
-
Le proprietà degli oggetti, che LilyPond usa quando dispone
gli oggetti di formattazione, si possono modificare con
\override
. I vantaggi dell’intervenire su questo tipo di proprietà sono che (a) gli altri oggetti saranno spostati automaticamente se è necessario far spazio, e (b) ogni sovrascrittura può essere applicata a tutte le occorrenze di oggetti dello stesso tipo. Tali proprietà sono:-
direction
Questa è già stata trattata in dettaglio (vedi Oggetti interni al rigo).
-
padding
,right-padding
,staff-padding
Quando un oggetto viene posizionato, il valore della sua proprietà
padding
specifica lo spazio intermedio da lasciare tra l’oggetto stesso e il bordo più vicino di quello accanto a cui si trova. Nota che si tratta del valore dipadding
dell’oggetto che si sta posizionando, mentre quello dell’oggetto già posizionato viene ignorato. Gli spazi specificati dapadding
possono essere applicati a tutti gli oggetti che supportano l’interfacciaside-position-interface
.Invece che da
padding
, la disposizione dei gruppi di alterazioni è regolata daright-padding
. Questa proprietà appartiene all’oggettoAccidentalPlacement
che si trova nel contesto Staff. Il processo di formattazione della partitura crea per prime le teste di nota e poi, se presenti, aggiunge le alterazioni alla sinistra delle teste di nota usando la proprietàright-padding
per stabilire la distanza tra le teste e le singole alterazioni. Dunque, solo la proprietàright-padding
dell’oggettoAccidentalPlacement
produce un effetto sul posizionamento delle alterazioni.La proprietà
staff-padding
è strettamente connessa alla proprietàpadding
:padding
regola la quantità minima di spazio tra qualsiasi oggetto che supporti l’interfacciaside-position-interface
e quello più vicino (solitamente, la nota o le linee del rigo);staff-padding
si applica solo a quegli oggetti che stanno sempre fuori dal rigo e regola la distanza minima tra l’oggetto e il rigo. Nota chestaff-padding
non ha alcun effetto sugli oggetti disposti relativamente alla nota invece che al rigo, anche se può essere sovrascritto senza generare degli errori per tali oggetti; quindi viene semplicemente ignorata.Per scoprire quale proprietà padding è richiesta per l’oggetto che desideri riposizionare, devi tornare alla guida del Funzionamento interno e cercare le proprietà dell’oggetto. Presta attenzione al fatto che le proprietà padding potrebbero non trovarsi nell’oggetto più ovvio; in tal caso devi cercare negli oggetti simili.
I valori delle proprietà padding sono misurati in spazi del rigo. Il valore predefinito della maggior parte degli oggetti è circa 1.0 o meno (a seconda dell’oggetto). Può essere sovrascritto per ottenere una distanza maggiore o minore.
-
self-alignment-X
Questa proprietà serve ad allineare l’oggetto a sinistra, a destra o al centro rispetto al punto di riferimento dell’oggetto genitore. Si può usare con tutti gli oggetti che supportano l’interfaccia
self-alignment-interface
. Generalmente si tratta di oggetti che contengono testo. I valori sonoLEFT
(sinistra),RIGHT
(destra) oCENTER
(centro). Altrimenti, è possibile definire un valore numerico compreso tra-1
e+1
, dove-1
indica allineamento a sinistra e+1
allineamento a destra, mentre gli altri numeri spostano progressivamente il testo dall’allineamento a sinistra all’allineamento a destra. È possibile specificare valori numerici maggiori di1
, per spostare il testo ancora più a sinistra, o valori inferiori a-1
, per spostarlo ancora più a destra. Ogni modifica di1
nel valore corrisponde a uno spostamento pari alla metà della lunghezza del testo. -
extra-spacing-width
Questa proprietà è disponibile per tutti gli oggetti che supportano l’interfaccia
item-interface
. Accetta due numeri: il primo è aggiunto all’estensione più a sinistra, il secondo a quella più a destra. I numeri negativi spostano il bordo verso sinistra, quelli positivi verso destra: quindi, per allargare un oggetto il primo numero deve essere negativo, il secondo deve essere positivo. Nota che non tutti gli oggetti rispettano entrambi i numeri. Ad esempio, l’oggettoAccidental
considera soltanto il primo numero (bordo sinistro). -
staff-position
staff-position
è una proprietà dell’interfacciastaff-symbol-referencer-interface
, supportata dagli oggetti che vengono posizionati in relazione al rigo. Specifica in unità di mezzo spazio di rigo la posizione verticale dell’oggetto rispetto alla linea centrale del rigo stesso. È utile per risolvere collisioni tra oggetti come le pause di più misure, le legature di valore e le note in voci diverse. -
horizontal-shift
All’interno di una voce, tutte le note che si trovano nello stesso momento musicale sono raggruppate in una colonna di note, e viene creato un oggetto
NoteColumn
per controllare il posizionamento orizzontale di quel gruppo di note (vedi “Colonne di note” in Definire esplicitamente le voci). Se e solo se due o più colonne di note in un solo contesto Staff, entrambe con i gambi nella stessa direzione, si trovano sullo stesso momento musicale, i valori delle loro proprietàhorizontal-shift
sono usati per attribuire un punteggio e le colonne che hanno un punteggio più alto vengono progressivamente spostate per evitare le collisioni delle teste di nota. Questa proprietà viene impostata dai comandi\voiceXXX
e può essere scavalcata direttamente con un comando\override
o, di solito, dai comandi\shiftOn
. Attenzione: questa proprietà viene usata per dare un punteggio alle colonne di note per spostarle orizzontalmente; non specifica la grandezza dello spostamento, che viene aumentata progressivamente per gradi in base alla larghezza della testa di nota per ogni punteggio. I gradi sono solitamente di metà della larghezza della testa di nota, ma possono essere della larghezza intera della testa quando c’è un gruppo di note molto ravvicinate. -
force-hshift
La proprietà
force-hshift
appartiene aNoteColumn
(più precisamente all’interfaccianote-column-interface
). Modificandola è possibile spostare la colonna di note in situazioni in cui le colonne di note sono sovrapposte. Non ha effetto su colonne di note non sovrapposte. Viene specificata in unità appropriate per una colonna di note, ovvero la larghezza della testa della nota nella prima voce. Si usa in situazioni complesse in cui i normali comandi\shiftOn
(vedi Definire esplicitamente le voci) non risolvono adeguatamente le collisioni tra le note. Per questo scopo, è preferibile alla proprietàextra-offset
perché non c’è bisogno di trovare la giusta distanza in spazi di rigo e lo spostamento delle note dentro o fuori da unaNoteColumn
si ripercuote su altre azioni, come il congiungimento delle teste delle note.
-
-
Infine, se i metodi precedenti non funzionano, si possono riposizionare
verticalmente gli oggetti rispetto alla linea centrale del rigo
oppure collocarli a una qualsiasi distanza rispetto a una nuova
posizione. Gli svantaggi di questo metodo consistono nel fatto che i corretti
valori per il riposizionamento debbano essere trovati per tentativi e per ogni
singolo oggetto; inoltre, dato che lo spostamento avviene dopo che LilyPond
ha posizionato tutti gli altri oggetti, spetta all’utente evitare le
eventuali collisioni. La principale
difficoltà che questo approccio comporta, però, è che i valori di riposizionamento
potrebbero dover essere ricalcolati se la musica venisse successivamente
modificata. Le proprietà che si possono usare con questo tipo di
riposizionamento manuale sono:
-
extra-offset
-
Questa proprietà si applica a qualsiasi oggetto di formattazione che supporta l’interfaccia
grob-interface
. Accetta come valore una coppia di numeri che specificano l’ulteriore spostamento nelle direzioni orizzontale e verticale. I numeri negativi spostano l’oggetto a sinistra o in basso. Le unità sono gli spazi del rigo. Questo spostamento aggiuntivo è applicato dopo la formattazione degli oggetti, dunque gli oggetti possono essere riposizionati ovunque senza incidere sugli altri. -
positions
-
Questa proprietà è utile specialmente per correggere manualmente l’inclinazione e l’altezza di travature, legature di portamento e graffette dei gruppi irregolari. Accetta come valore una coppia di numeri, che specifica la posizione dei bordi sinistro e destro della travatura, della legatura, etc., rispetto alla linea centrale del rigo. L’unità di misura è lo spazio del rigo. Considera, però, che le legature di portamento e di frase non possono essere riposizionate del tutto arbitrariamente. LilyPond, infatti, genera prima una lista delle possibili posizioni per la legatura e poi determina la legatura che “ritiene migliore”. Se la proprietà
positions
è stata sovrascritta, viene scelta dalla lista la legatura più vicina alle posizioni richieste.
-
Alcuni oggetti potrebbero non disporre di tutte queste proprietà. Occorre andare a vedere nella guida al Funzionamento interno quali proprietà siano disponibili per l’oggetto che si intende modificare.
Segue una lista degli oggetti che hanno la maggiore probabilità di essere coinvolti in collisioni, insieme al nome dell’oggetto che deve essere cercato nella guida al Funzionamento interno per poter sapere quali proprietà si possono usare per spostarlo.
Tipo di oggetto | Nome dell’oggetto |
---|---|
Articolazioni | Script |
Travature | Beam |
Dinamiche (verticalmente) | DynamicLineSpanner |
Dinamiche (orizzontalmente) | DynamicText |
Diteggiature | Fingering |
Numeri di chiamata / Testi | RehearsalMark |
Legature di portamento | Slur |
Testi, ovvero ^"testo" | TextScript |
Legature di valore | Tie |
Gruppi irregolari | TupletBracket |
[ << Modifica dell'output ] | [Inizio][Contenuti][Indice] | [ Modelli >> ] |
[ < Collisioni tra oggetti ] | [ Su : Collisioni tra oggetti ] | [ Correggere elementi della notazione sovrapposti > ] |