4.5.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:

  1. 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.
  2. 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 di padding dell’oggetto che si sta posizionando, mentre quello dell’oggetto già posizionato viene ignorato. Gli spazi specificati da padding possono essere applicati a tutti gli oggetti che supportano l’interfaccia side-position-interface.

      Invece che da padding, la disposizione dei gruppi di alterazioni è regolata da right-padding. Questa proprietà appartiene all’oggetto AccidentalPlacement 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’oggetto AccidentalPlacement 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’interfaccia side-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 quantità minima di spazio da inserire tra l’oggetto e il rigo. Nota che staff-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 sono LEFT (sinistra), RIGHT (destra) o CENTER (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 di 1, per spostare il testo ancora più a sinistra, o valori inferiori a -1, per spostarlo ancora più a destra. Ogni modifica di 1 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’oggetto Accidental considera soltanto il primo numero (bordo sinistro).

    • staff-position

      staff-position è una proprietà dell’interfaccia staff-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.

    • force-hshift

      Le note ravvicinate di un accordo o quelle simultanee appartenenti a voci diverse sono disposte su due e talvolta più colonne per impedire la sovrapposizione delle teste. Tali colonne si chiamano colonne di note (note columns) e l’oggetto che provvede a crearle si chiama NoteColumn.

      La proprietà force-hshift appartiene a NoteColumn (più precisamente all’interfaccia note-column-interface). Modificandola è possibile spostare la colonna di note proporzionalmente, assumendo come unità la larghezza della testa della nota nella voce superiore. 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 una NoteColumn si ripercuote su altre azioni, come il congiungimento delle teste delle note.

  3. 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 oggettoNome dell’oggetto
ArticolazioniScript
TravatureBeam
Dinamiche (verticalmente)DynamicLineSpanner
Dinamiche (orizzontalmente)DynamicText
DiteggiatureFingering
Numeri di chiamata / TestiRehearsalMark
Legature di portamentoSlur
Testi, ovvero ^"testo"TextScript
Legature di valoreTie
Gruppi irregolariTupletBracket

Other languages: English, česky, deutsch, español, français, 日本語, nederlands.
About automatic language selection.

LilyPond — Learning Manual