| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Tweaking basics
| 4.1.1 Introduzione alle modifiche | ||
| 4.1.2 Oggetti e interfacce | ||
| 4.1.3 Convenzioni per i nomi di oggetti e proprietà | ||
| 4.1.4 Metodi di modifica |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Introduction to tweaks
Nella terminologia di LilyPond un tweak (modifica, ritocco) si riferisce ai vari metodi che l’utente ha a disposizione per modificare le azioni intraprese durante l’interpretazione del file di input e per cambiare l’aspetto dell’output. Alcune modifiche sono molto semplici, altre sono più complesse. Ma nel loro insieme i metodi disponibili permettono di modificare quasi qualsiasi aspetto della partitura come si desidera.
In questa sezione vengono trattati i concetti di base necessari per comprendere le modifiche. Più avanti presenteremo vari comandi già pronti che possono essere semplicemente copiati per ottenere lo stesso effetto nelle proprie partiture; allo stesso tempo mostreremo come costruire questi comandi così da rendere possibile imparare a scrivere le proprie modifiche personali.
Prima di iniziare questo capitolo si consiglia di rileggere la sezione Contesti e incisori, perché i contesti, gli incisori e le proprietà contenute al loro interno sono fondamentali per comprendere e costruire le modifiche.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Objects and interfaces
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.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Naming conventions of objects and properties
Abbiamo già visto, in Contesti e incisori, le convenzioni per i nomi di oggetti. Ecco una lista dei più comuni tipi di oggetti e proprietà insieme alle convenzioni usate per nominarli e alcuni esempi di nomi reali. Abbiamo usato ‘A’ per indicare un qualsiasi carattere alfabetico maiuscolo e ‘aaa’ per indicare un qualsiasi numero di caratteri alfabetici minuscoli. Gli altri caratteri sono indicati normalmente.
| Tipo di oggetto/proprietà | Convenzione per il nome | Esempi |
|---|---|---|
| Contesti | Aaaa o AaaaAaaaAaaa | Staff, GrandStaff |
| Oggetti di formattazione | Aaaa o AaaaAaaaAaaa | Slur, NoteHead |
| Incisori | Aaaa_aaa_engraver | Clef_engraver, Note_heads_engraver |
| Interfacce | aaa-aaa-interface | grob-interface, break-aligned-interface |
| Proprietà del contesto | aaa o aaaAaaaAaaa | alignAboveContext, skipBars |
| Proprietà degli oggetti di formattazione | aaa o aaa-aaa-aaa | direction, beam-thickness |
Come vedremo tra poco, ogni tipo di oggetto richiede un comando diverso per modificare le sue proprietà, dunque è utile poter riconoscere i tipi di oggetti e proprietà dai loro nomi.
Guida alla notazione: (notation)Modifica delle proprietà section ‘Modifica delle proprietà’ in Guida alla Notazione.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Tweaking methods
Il comando \override | ||
Il comando \revert | ||
Il prefisso \once | ||
Il comando \overrideProperty | ||
Il comando di ritocco \tweak | ||
Il prefisso \single |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\override@translationof The override command
Abbiamo già incontrato i comandi \set e \with, che servono
a modificare le proprietà dei contesti e a togliere o aggiungere
gli incisori, nei paragrafi Modificare le proprietà di contesto e
Aggiungere e togliere gli incisori. Ora dobbiamo introdurre alcuni
comandi più importanti.
Il comando che cambia le proprietà degli oggetti di formattazione è
\override. Dato che questo comando ha il compito di modificare
le caratteristiche interne fondamentali di LilyPond, la sua sintassi non è
semplice come quella dei comandi presentati finora. Deve sapere esattamente
quale proprietà di quale oggetto in quale contesto deve essere
modificata e quale deve essere il suo nuovo valore. Vediamo come
funziona.
La sintassi generale di questo comando è:
\override Contesto.OggettoDiFormattazione.proprietà-formattazione = #valore |
Questo comando assegnerà alla proprietà chiamata proprietà-formattazione dell’oggetto di formattazione chiamato OggettoDiFormattazione, che fa parte del contesto Contesto, il valore valore.
Il Contesto può essere omesso (e di solito lo è) quando il
contesto richiesto è implicito e si trova a uno dei livelli più
bassi dei contesti, come ad esempio Voice, ChordNames o
Lyrics. Lo ometteremo in molti degli esempi seguenti; vedremo
poi quando deve essere specificato.
Le sezioni successive tratteranno in modo dettagliato le proprietà e i loro valori, si veda Tipi di proprietà; in questa sezione, invece, useremo soltanto alcune proprietà e valori di facile comprensione, in modo da spiegare il formato e l’uso di questo comando.
Le espressioni fondamentali di LilyPond sono gli elementi musicali come le note e le durate, ma anche le stringhe di testo e le annotazioni. Le espressioni più specifiche come numeri, simboli e liste sono elaborate nella ‘modalità Scheme’, che viene invocata inserendo ‘#’ prima del valore. Per maggiori informazioni sulla modalità Scheme, si veda (extending)LilyPond Scheme syntax section ‘LilyPond Scheme syntax’ in Estendere.
\override è il comando più usato nelle modifiche e quasi tutto
il resto del capitolo ha lo scopo di mostrare alcuni esempi
di utilizzo. Ecco un semplice esempio che mostra come cambiare
il colore della testa di nota:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a b c | }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\revert@translationof The revert command
Quando viene sovrascritta, la proprietà mantiene il suo nuovo valore finché
non viene sovrascritta di nuovo o non si incontra un comando \revert.
Il comando \revert fa sì che il valore della proprietà sia ripristinato
al suo valore predefinito. Attenzione: non al suo valore precedente (nel caso
siano stati inseriti vari comandi \override). Impiega la seguente sintassi:
\revert Contesto.OggettoDiFormmattazione.proprietà-formattazione |
Anche in questo caso, come per il comando \override, Contesto di
solito non è necessario e verrà omesso in molti degli esempi seguenti.
In questo esempio ripristiniamo il colore della testa delle ultime due
note al valore predefinito:
\relative { c'4 d \override NoteHead.color = #red e4 f | \override NoteHead.color = #green g4 a \revert NoteHead.color b4 c | }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\once@translationof The once prefix
I comandi \override, revert, \set e \unset possono
essere preceduti da \once. Questo fa sì che tale comando sia operativo
solo in quel determinato momento musicale, prima che la proprietà sia
ripristinata al suo valore precedente (che può essere diverso da quello
predefinito se un altro \override è ancora attivo). Usando lo stesso
esempio, possiamo cambiare il colore di una singola nota in questo modo:
\relative { c'4 d \override NoteHead.color = #red e4 f | \once \override NoteHead.color = #green g4 a \revert NoteHead.color b c | }
Il prefisso \once può essere usato anche di fronte a molti
comandi predefiniti per limitare il loro effetto a un momento musicale:
\relative { c'4( d) \once \slurDashed e4( f) | g4( a) \once \hideNotes b( c) | }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\overrideProperty@translationof The overrideProperty command
Esiste un’altra forma di comando di sovrascrittura,
\overrideProperty, che si rende necessario raramente.
Lo menzioniamo qui per completezza, ma per approfondire l’argomento
si veda
(extending)Difficult tweaks section ‘Difficult tweaks’ in Estendere.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\tweak@translationof The tweak command
L’ultimo comando di modifica a disposizione è \tweak. Si usa
quando vari oggetti compaiono nello stesso momento musicale,
ma si vogliono modificare soltanto le proprietà di alcuni oggetti, come
ad esempio una singola nota all’interno di un accordo. Se si usa \override
la modifica ha effetto su tutte le note di un accordo, mentre \tweak ha
effetto solo sul singolo elemento che segue.
Per esempio, supponiamo di voler modificare la dimensione della
testa della nota centrale (il Mi) in un accordo di Do maggiore. Vediamo prima
cosa succede se si usa \once \override:
\relative { <c' e g>4 \once \override NoteHead.font-size = #-3 <c e g>4 <c e g>4 }
Come si vede, la sovrascrittura riguarda tutte le teste di nota
dell’accordo. Ciò è dovuto al fatto che tutte le note di un accordo
si trovano nello stesso momento musicale e l’azione di \once
consiste nell’applicare la sovrascrittura a tutti gli oggetti di formattazione
del tipo specificato che si trovano nello stesso momento musicale del comando
\override stesso.
Il comando \tweak funziona in modo diverso. Agisce sull’elemento
immediatamente successivo nel flusso di codice. Nella sua forma più
semplice funziona solo sugli oggetti creati direttamente dall’elemento
seguente, in particolare teste di nota e articolazioni.
Tornando al nostro esempio, la dimensione della nota centrale di un accordo si cambia in questo modo:
\relative { <c' e g>4 <c \tweak font-size #-3 e g>4 }
Si noti che la sintassi di \tweak è diversa da quella di
\override. Il contesto non deve essere specificato; anzi,
se lo fosse verrebbe generato un errore. Sia il contesto che l’oggetto
di formattazione sono sottintesi dall’elemento che segue nel flusso di
input. Nota anche che non ci devono essere segni di uguale (=). Dunque la
forma semplice del comando \tweak è
\tweak proprietà-formattazione #valore |
Il comando \tweak serve anche a modificare soltanto una di una serie
di articolazioni:
a'4^"Nero" -\tweak color #red ^"Rosso" -\tweak color #green _"Verde"
Nota che il comando \tweak deve essere preceduto da un segno di
articolazione, perché la stessa espressione modificata deve essere applicata come articolazione. In caso di più sovrascritture della
direzione (^ o _), prevale la sovrascrittura posizionata più a sinistra,
perché viene applicata per ultima.
Alcuni oggetti, come gambi e alterazioni, vengono creati dopo, non
direttamente dall’evento che segue. È comunque possibile usare
\tweak con questi oggetti creati indirettamente se si indica
esplicitamente l’oggetto di formattazione, purché LilyPond riesca a
seguire la sua origine fino all’evento originale:
<\tweak Accidental.color #red cis''4 \tweak Accidental.color #green es'' g''>
Questa forma estesa del comando \tweak può essere descritta così
\tweak OggettoFormattazione.proprietà-formattazione #valore |
Il comando \tweak è necessario anche quando si vuole cambiare
l’aspetto di uno di una serie di gruppi irregolari annidati che iniziano
nello stesso momento musicale. Nell’esempio seguente, la prima lunga
parentesi del gruppo irregolare e la prima delle tre brevi parentesi
iniziano nello stesso momento musicale, quindi qualsiasi comando
\override produrrebbe degli effetti su entrambi. In questo esempio,
si usa \tweak per distinguerli. Il primo comando \tweak
indica che la lunga parentesi del gruppo irregolare deve essere posizionata
sopra le note e il secondo indica che il numero del primo gruppo irregolare
deve essere in rosso.
\relative c'' { \tweak direction #up \tuplet 3/4 { \tweak color #red \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Se i gruppi irregolari annidati non iniziano nello stesso momento, il loro
aspetto può essere modificato come di consueto con i comandi \override:
\relative { \tuplet 3/2 { c'8[ c c] } \once \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8[ c] c8[ c] \once \override TupletNumber.transparent = ##t \tuplet 3/2 { c8[ c c] } \tuplet 3/2 { c8[ c c] } } }
Guida alla Notazione: (notation)Il comando tweak section ‘Il comando tweak’ in Guida alla Notazione.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
\single@translationof The single prefix
Immaginiamo di voler enfatizzare alcune teste di nota in particolare colorandole di rosso e aumentandone la dimensione; e immaginiamo anche che per comodità abbiamo definito una funzione per fare ciò:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { c''4 a \once \emphNoteHead f d | }
Il prefisso \once funziona bene se si desidera enfatizzare note
singole o interi accordi, ma non permette di enfatizzare una singola
nota dentro un accordo. Prima abbiamo visto come si possa usare
\tweak per fare ciò, vedi Il comando di ritocco \tweak.
Ma non è possibile usare \tweak in una funzione; è in questo caso che
torna utile il comando \single:
emphNoteHead = { \override NoteHead.color = #red \override NoteHead.font-size = 2 } \relative { <c'' a \single \emphNoteHead f d>4 }
In sintesi, \single converte le modifiche introdotte dal comando
\override in modifiche eseguite dal comando \tweak.
Ciò significa che quando ci sono vari oggetti che si trovano nello stesso
momento musicale (come le teste di nota in un accordo), \single avrà
effetto su uno solo, quello generato dall’espressione musicale immediatamente
seguente; a differenza di \once, che ha effetto su tutti questi oggetti.
Usando \single in questo modo qualsiasi funzione usata come
scorciatoia che contiene soltanto \override può essere applicata
a note individuali in un accordo. Tuttavia, \single non converte
\revert, \set e \unset in modifiche che hanno le
proprietà di \tweak.
Manuale di apprendimento:
Il comando di ritocco \tweak,
Uso delle variabili per modificare la formattazione.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, česky, deutsch, español, français, 日本語, nederlands.
A proposito della selezione automatica della lingua.