4.4.2 Posizionamento esplicito di righi e sistemi

Un modo per comprendere i meccanismi di spaziatura verticale appena spiegati è di considerarli come un insieme di impostazioni che regolano la quantità di padding verticale tra righi e tra sistemi.

È possibile gestire la spaziatura verticale in un modo diverso usando NonMusicalPaperColumn.line-break-system-details. Mentre i meccanismi di spaziatura verticale flessibile specificano il padding verticale, NonMusicalPaperColumn.line-break-system-details indica precisamente le posizioni verticali esatte sulla pagina.

NonMusicalPaperColumn.line-break-system-details accetta una lista associativa di quattro diverse impostazioni:

Le modifiche del grob con \override, incluse quelle per NonMusicalPaperColumn come nell’esempio successivo, possono trovarsi in uno di questi tre diversi punti del file di input:

Quando si modifica NonMusicalPaperColumn, si usa il solito comando \override nei blocchi \context e nel blocco \with. Invece quando si modifica NonMusicalPaperColumn in mezzo alle note, si usa il comando speciale \overrideProperty. Ecco alcuni esempi di modifiche di NonMusicalPaperColumn col comando speciale \overrideProperty:

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((alignment-distances . (15)))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40)
     (alignment-distances . (15)))

Per comprendere come funziona ognuna di queste impostazioni, iniziamo vedendo un esempio che non contiene alcuna modifica.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          s1*5 \break
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Questa partitura isola l’informazione sulle interruzioni di linea e di pagina in una voce apposita. Questa tecnica di creare una voce per le interruzioni permette di tenere la formattazione separata dalla musica via via che il nostro esempio diventa più complicato. Vedi anche Interruzioni.

Usando comandi \break espliciti, la musica viene divisa proporzionalmente in cinque misure per linea. La spaziatura verticale è quella predefinita di LilyPond ma il punto di inizio verticale di ogni sistema è impostato esplicitamente con la coppia Y-offset dell’attributo line-break-system-details del grob NonMusicalPaperColumn:

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 40))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Nota che line-break-system-details accetta una lista associativa di molti valori, ma ne abbiamo impostato solo uno in questo esempio. Nota anche che la proprietà Y-offset qui determina la posizione verticale esatta sulla pagina in cui ogni nuovo sistema verrà visualizzato.

Oltre al posizionamento assoluto che si ottiene con Y-offset e X-offset, è possibile anche il posizionamento relativo tramite la proprietà extra-offset di line-break-system-details. Il posizionamento è relativo alla formattazione predefinita o al posizionamento assoluto determinato dall’uso di X-offset e Y-offset. La proprietà extra-offset accetta una coppia di numeri che determinano lo spostamento lungo gli assi X e Y.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Ora che abbiamo impostato esplicitamente il punto di inizio verticale di ogni sistema, possiamo impostare manualmente anche le distanze verticali tra i righi. Per farlo usiamo la sottoproprietà alignment-distances di line-break-system-details.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 20)
               (alignment-distances . (10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (15)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 85)
             (alignment-distances . (20)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Nota che qui assegnamo due valori diversi all’attributo line-break-system-details del grob NonMusicalPaperColumn. Sebbene l’attributo alist line-break-system-details accetti molti altri parametri di spaziatura (inclusa, per esempio, una coppia corrispondente di X-offset), è sufficiente impostare soltanto le coppie Y-offset e alignment-distances per regolare il punto di inizio verticale di ogni sistema e ogni rigo. Infine nota che alignment-distances specifica il posizionamento verticale dei righi ma non dei gruppi di righi.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0)
               (alignment-distances . (30 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (10 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 100)
               (alignment-distances . (10 30)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new StaffGroup <<
        \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
        \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
      >>
    >>
  }
}

[image of music]

Alcuni punti da considerare:

Vedi anche

Frammenti: Spacing.


Guida alla Notazione di LilyPond v2.25.21 (ramo di sviluppo).