Manuale di apprendimento di LilyPond: 4.1.2 Oggetti e interfacce

### 4.1.2 Oggetti e interfacce

I tweak implicano la modifica delle operazioni e delle strutture interne del programma LilyPond, dunque per prima cosa bisogna introdurre alcuni termini usati per descriverle.

Il termine ‘Oggetto’ è un termine generico che si riferisce all’insieme di strutture interne create da LilyPond durante l’elaborazione di un file di input. Quando incontra un comando come `\new Staff`, LilyPond crea un nuovo oggetto di tipo `Staff` (un rigo). Questo oggetto `Staff` possiede tutte le proprietà associate a quel rigo, come ad esempio il suo nome e la sua armatura di chiave, insieme ai dettagli relativi agli incisori assegnati per operare all’interno del contesto di quel rigo. Analogalmente, ci sono oggetti che hanno le proprietà di tutti gli altri contesti, come gli oggetti `Voice`, gli oggetti `Score`, gli oggetti `Lyrics` e gli oggetti che rappresentano tutti gli elementi della notazione, come le stanghette, le teste di nota, le legature di valore, le dinamiche, etc. A ogni oggetto corrisponde un relativo insieme di valori di proprietà.

Alcuni tipi di oggetto hanno dei nomi speciali. Gli oggetti che rappresentano elementi della notazione visibili nell’output come le teste di nota, i gambi, le legature di portamento e di valore, le diteggiature, le chiavi, etc. sono chiamati «Oggetti di formattazione» (in inglese Layout Objects). Sono chiamati anche «Oggetti grafici» (in inglese Graphical Objects o Grob per brevità). Si tratta sempre di oggetti nel senso generico descritto prima e quindi hanno tutti delle proprietà a loro associate, come la posizione, la dimensione, il colore, etc.

Alcuni oggetti di formattazione sono ancora più specializzati. Le legature di frase, le forcelle del crescendo, i segni di ottava e molti altri ‘grob’ non sono localizzati in un punto preciso – hanno invece un punto iniziale, un punto finale e talvolta altre proprietà relative alla loro forma. Gli oggetti che hanno una forma estesa in questo modo vengono chiamati «Estensori» (in inglese Spanner).

Gli estensori non possono essere modificati dopo la loro creazione. Tra questi sia `StaffSymbol` che `LedgerLineSpanner`, che continuano nel corso della partitura, a meno che non siano terminati dal comando `\stopStaff` e poi ricreati col comando `\startStaff`.

Esistono anche dei grob ‘astratti’ che non stampano niente da soli, bensì raccolgono, posizionano e gestiscono altri grob. Esempi comuni sono `DynamicLineSpanner`, `BreakAlignment`, `NoteColumn`, `VerticalAxisGroup`, `NonMusicalPaperColumn` e simili. Vedremo in seguito come si usano alcuni di questi.

Resta da spiegare cosa sono le «Interfacce». Molti oggetti, pur essendo piuttosto diversi, condividono delle caratteristiche comuni che devono essere elaborate nello stesso modo. Ad esempio, tutti i grob hanno un colore, una dimensione, una posizione, etc.; tutte queste proprietà vengono elaborate nello stesso modo durante l’interpretazione del file di input. Per semplificare queste operazioni interne, le azioni e proprietà comuni sono riunite in un oggetto chiamato `grob-interface`. Esistono molti altri raggruppamenti di proprietà comuni come queste, ognuno con un nome che finisce con `interface`. In totale ci sono più di 100 interfacce. Vedremo in seguito perché questo sia di interesse e di utilità per l’utente.

Questi sono dunque i termini principali riguardanti gli oggetti che useremo in questo capitolo.

#### LilyPond — Manuale di apprendimento v2.22.2 (ramo stabile).