| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Interpretation contexts
Questa sezione spiega cosa sono i contesti e come modificarli.
Manuale di apprendimento: (learning)Contesti e incisori section ‘Contesti e incisori’ in Manuale di Apprendimento.
File installati: ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.
Frammenti: (snippets)Contexts and engravers section ‘Contexts and engravers’ in Frammenti di codice.
Guida al funzionamento interno: (internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno, (internals)Engravers and Performers section ‘Engravers and Performers’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Contexts explained
I contesti sono organizzati in modo gerarchico:
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Output definitions - blueprints for contexts
Questa sezione spiega la rilevanza delle definizioni di output quando si lavora coi contesti. Esempi di vere definizioni di output sono illustrati dopo (vedi Modifica di tutti i contesti dello stesso tipo).
Sebbene la musica scritta in un file possa riferirsi a un certo tipo o
nome di un contesto, i contesti vengono creati soltanto quando la musica
viene interpretata. LilyPond interpreta la musica in base a una
“definizione di output” e lo fa per le varie definizioni di output,
producendo un output diverso per ciascuna. La definizione di output che
crea l’output grafico si specifica con \layout.
Una definizione di output molto più semplice, usata per produrre l’output
Midi, si specifica con \midi. Molte altre definizioni di output
sono usate da LilyPond internamente, come quando si usa la combinazione
automatica delle parti (Combinazione automatica delle parti) o si creano citazioni
musicali (Citare altre voci).
Le definizioni di output definiscono la relazione tra i contesti e le loro
rispettive impostazioni predefinite. Sebbene la maggior parte dei cambiamenti
venga fatta solitamente in un blocco \layout, le impostazioni relative
al Midi avranno effetto solo se inserite in un blocco \midi.
Alcune impostazioni interessano vari tipi di output: per esempio, se
autoBeaming è disattivato in qualche contesto, le travature contano
come melismi al fine di abbinare musica e testo vocale, come descritto
in Durate automatiche delle sillabe. Questo abbinamento viene fatto
sia per l’output grafico che per il Midi. Se le modifiche fatte a
autoBeaming in una definizione di contesto di un blocco \layout
non sono ripetute nel corrispondente blocco \midi, il testo e la
musica andranno fuori sincrono nel Midi.
File installati: ‘ly/engraver-init.ly’. ‘ly/performer-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Score - the master of all contexts
Questo è il contesto del livello superiore. Nessun altro contesto può contenere un contesto Score. Per impostazione predefinita, il contesto Score gestisce l’amministrazione delle indicazioni di tempo e garantisce che elementi come le chiavi, le indicazioni di tempo e le armature di chiave siano allineate da rigo a rigo.
Un contesto Score viene istanziato implicitamente quando viene elaborato
un blocco \score {…}.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Top-level contexts - staff containers
StaffGroup
Raggruppa i righi e aggiunge una parentesi quadra sul lato sinistro, che
raggruppa insieme i righi. Le stanghette dei righi in esso contenuti sono
connessi verticalmente. StaffGroup è semplicemente un insieme di righi,
con una parentesi quadra all’inizio e le stanghette che li attraversano.
ChoirStaff
Identico a StaffGroup eccetto che le stanghette dei righi in esso
contenuti non sono connesse verticalmente.
GrandStaff
Un gruppo di righi, con una parentesi graffa sul lato sinistro, che raggruppa insieme i righi. Le stanghette dei righi in esso contenuti sono connessi verticalmente.
PianoStaff
Identico a GrandStaff, ma con il supporto ai nomi degli strumenti a
sinistra di ogni sistema.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Intermediate-level contexts - staves
Staff
Gestisce chiavi, stanghette, armature di chiave, alterazioni. Può contenere
contesti Voice.
RhythmicStaff
Come Staff ma per le ritmiche. Le altezze vengono ignorate e le
note appaiono su una linea. L’output MIDI conserva le altezze inalterate.
TabStaff
Contesto per generare l’intavolatura (o tablatura). La forma predefinita è quella dell’intavolatura per chitarra, con sei linee.
DrumStaff
Contesto per gli strumenti percussivi. Può contenere DrumVoice.
VaticanaStaff
Identico a Staff, a parte il fatto che è progettato per rappresentare
un brano in stile gregoriano.
MensuralStaff
Identico a Staff, a parte il fatto che è progettato per rappresentare
un brano in stile mensurale.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Bottom-level contexts - voices
I contesti al livello della voce inizializzano alcune proprietà e avviano
gli incisori adatti. Un contesto del livello inferiore è privo di
defaultchild. Sebbene sia possibile far sì che accetti/contenga
sottocontesti, questi possono essere creati e inseriti solo esplicitamente.
Voice
Corrisponde a una voce di un rigo. Questo contesto gestisce la conversione di segni di dinamica, gambi, travature, apici e pedici, legature di portamento e di valore e pause. Deve essere istanziata esplicitamente se si hanno molteplici voci nello stesso rigo.
VaticanaVoice
Identico a Voice, a parte il fatto che è progettato per rappresentare
un brano in stile gregoriano.
MensuralVoice
Identico a Voice, con delle modifiche per rappresentare un brano in
stile mensurale.
Lyrics
Corrisponde a una voce con testo vocale. Gestisce la stampa di una singola linea di testo vocale.
DrumVoice
Il contesto della voce usato in un rigo per percussioni.
FiguredBass
Il contesto in cui sono creati gli oggetti BassFigure a partire
dall’input inserito in modalità \figuremode.
TabVoice
Il contesto della voce usato all’interno di un contesto TabStaff.
Solitamente omesso così che sia creato implicitamente.
CueVoice
Un contesto della voce usato per rappresentare note a dimensione ridotta, inteso soprattutto per aggiungere citazioni in corpo più piccolo a un rigo, vedi Formattazione delle notine. Solitamente omesso così che sia creato implicitamente.
ChordNames
Crea e dispone i nomi degli accordi.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Creating and referencing contexts
LilyPond crea i contesti del livello inferiore automaticamente se incontra
un’espressione musicale prima di un contesto adatto, ma questo approccio
di solito funziona soltanto per partiture semplici o frammenti musicali
simili a quelli della documentazione. Per partiture più complesse si
consiglia di specificare tutti i contesti esplicitamente coi comandi
\new o \context. La sintassi di questi due comandi è
molto simile:
[\new | \context] Contesto [ = nome] [espressione-musicale] |
dove si può usare \new o \context.
Contesto è il tipo di contesto che deve essere creato,
nome è un nome opzionale da assegnare al contesto che si
sta creando e espressione-musicale è una singola espressione
musicale che deve essere interpretata dagli incisori e dai performer
in questo contesto.
Il prefisso \new senza un nome viene usato comunemente per creare
partiture con molti righi:
<< \new Staff \relative { % lascia che il contesto Voice sia creato implicitamente c''4 c } \new Staff \relative { d''4 d } >>
e per mettere varie voci in un rigo:
\new Staff << \new Voice \relative { \voiceOne c''8 c c4 c c } \new Voice \relative { \voiceTwo g'4 g g g } >>
\new deve essere sempre usato per specificare contesti senza nome.
La differenza tra \new e \context sta nell’azione
presa:
\new con o senza un nome creerà sempre un contesto del tutto
nuovo e distinto, anche se ne esiste già uno con lo stesso nome:
\new Staff << \new Voice = "A" \relative { \voiceOne c''8 c c4 c c } \new Voice = "A" \relative { \voiceTwo g'4 g g g } >>
\context seguito da un nome creerà un contesto distinto solo se
non esiste già un contesto dello stesso tipo con lo stesso nome nella
stessa gerarchia di contesto. Altrimenti sarà preso come riferimento
per quel contesto precedentemente creato, e la sua espressione musicale
verrà passata a quel contesto per la sua interpretazione.
Una possibile applicazione dei contesti con nome è la separazione di formattazione della partitura e contenuto musicale. Le seguenti due forme sono entrambe valide:
\score { << % formattazione della partitura \new Staff << \new Voice = "one" { \voiceOne } \new Voice = "two" { \voiceTwo } >> % contenuto musicale \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
\score { << % formattazione della partitura \new Staff << \context Voice = "one" { \voiceOne } \context Voice = "two" { \voiceTwo } >> % contenuto musicale \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
Altrimenti si possono usare le variabili per ottenere un risultato simile. Vedi (learning)Organizzare i brani con le variabili section ‘Organizzare i brani con le variabili’ in Manuale di Apprendimento.
\context senza nome corrisponderà al primo di qualsiasi contesto
precedentemente creato dello stesso tipo nella stessa gerarchia di contesto,
anche uno a cui è stato assegnato un nome, e la sua espressione musicale sarà
passata a quel contesto per la sua interpretazione. Questa forma è raramente
utile. Tuttavia, si usa \context senza nome e senza espressione
musicale per impostare il contesto in cui una procedura Scheme specificata con
\applyContext viene eseguita:
\new Staff \relative {
c'1
\context Timing
\applyContext #(lambda (ctx)
(newline)
(display (ly:context-current-moment ctx)))
c1
}
|
Un contesto deve essere nominato se deve essere citato successivamente, per esempio quando il testo vocale è associato alla musica:
\new Voice = "tenore" musica … \new Lyrics \lyricsto "tenore" testo |
Maggiori informazioni sull’associazione del testo vocale alla musica in Durate automatiche delle sillabe.
Le proprietà di tutti i contesti di un certo tipo possono essere modificate
in un blocco \layout (con una sintassi diversa), vedi
Modifica di tutti i contesti dello stesso tipo. Questo costrutto fornisce anche
un mezzo per mantenere le istruzioni di formattazione separate dal contenuto
musicale. Se occorre modificare un solo contesto, bisogna usare un blocco
\with, vedi Modifica di un solo contesto specifico.
Manuale di apprendimento: (learning)Organizzare i brani con le variabili section ‘Organizzare i brani con le variabili’ in Manuale di Apprendimento.
Guida alla notazione: Modifica di un solo contesto specifico, Durate automatiche delle sillabe.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Keeping contexts alive
I contesti vengono solitamente terminati nel primo momento musicale in
cui non hanno niente da fare. Quindi i contesti Voice muoiono
appena non contengono eventi; i contesti Staff muoiono appena
tutti i contesti Voice al loro interno non contengono eventi; etc.
Ciò può causare difficoltà se contesti precedenti, che sono stati
terminati, devono essere richiamati; per esempio, quando si cambia
il rigo col comando \change, quando si associa il testo a una
voce col comando \lyricsto o quando si aggiungono ulteriori eventi
musicali a un contesto precedente.
C’è un’eccezione a questa regola generale: all’interno di un costrutto
{…} (musica sequenziale), la nozione di «contesto corrente»
scenderà di livello ogni volta che un elemento della sequenza termina in un
sottocontesto del precedente contesto corrente. Ciò evita la falsa creazione di
contesti impliciti in varie situazioni, ma significa che il primo contesto in
cui si scende verrà conservato fino alla fine dell’espressione.
Al contrario, i contesti di un construtto <<…>> (musica simultanea)
non sono portati avanti, dunque racchiudendo un comando di creazione di contesto
in un’ulteriore coppia di <<…>> impedirà che il contesto persista
in tutta la sequenza {…}.
Un contesto può essere tenuto attivo assicurandosi che abbia qualcosa
da fare in ogni momento musicale. I contesti Staff sono tenuti
attivi assicurandosi che una delle loro voci sia conservata. Un modo per
farlo consiste nell’aggiungere pause spaziatrici a una voce in parallelo
con la musica vera. Queste devono essere aggiunte a ogni contesto
Voice da tenere attivo. Se si usano sporadicamente varie voci,
è più sicuro tenerle attive invece di tentare di affidarsi alle eccezioni
menzionate sopra.
Nell’esempio seguente, sia la voce A che la voce B sono mantenute attive in questo modo per la durata del brano:
musicA = \relative { d''4 d d d } musicB = \relative { g'4 g g g } keepVoicesAlive = { << \new Voice = "A" { s1*5 } % Tiene la voce "A" attiva per 5 battute \new Voice = "B" { s1*5 } % Tiene la voce "B" attiva per 5 battute >> } music = { \context Voice = "A" { \voiceOneStyle \musicA } \context Voice = "B" { \voiceTwoStyle \musicB } \context Voice = "A" { \musicA } \context Voice = "B" { \musicB } \context Voice = "A" { \musicA } } \score { \new Staff << \keepVoicesAlive \music >> }
L’esempio seguente mostra come scrivere una linea melodica sporadica con testo vocale usando questo approccio. Ovviamente, in una situazione reale la melodia e l’accompagnamento consisterebbero di varie e diverse sezioni.
melodia = \relative { a'4 a a a } accompagnamento = \relative { d'4 d d d } parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia } \score { << \new Staff = "musica" { << \new Voice = "melodia" { \voiceOne s1*4 % Tiene la voce "melodia" attiva per 4 battute } { \new Voice = "accompagnamento" { \voiceTwo \accompagnamento } << \context Voice = "melodia" { \melodia } \context Voice = "accompagnamento" { \accompagnamento } >> \context Voice = "accompagnamento" { \accompagnamento } << \context Voice = "melodia" { \melodia } \context Voice = "accompagnamento" { \accompagnamento } >> } >> } \new Lyrics \with { alignAboveContext = "musica" } \lyricsto "melodia" { \parole } >> }
Un modo alternativo, migliore in molte circostanze, è quello di mantenere la linea melodica attiva semplicemente includendo le note spaziatrici in modo che si allineino correttamente con l’accompagnamento:
melodia = \relative { s1 % salta una battuta a'4 a a a s1 % salta una battuta a4 a a a } accompagnamento = \relative { d'4 d d d d4 d d d d4 d d d d4 d d d } parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia } \score { << \new Staff = "musica" { << \new Voice = "melodia" { \voiceOne \melodia } \new Voice = "accompagnamento" { \voiceTwo \accompagnamento } >> } \new Lyrics \with { alignAboveContext = "musica" } \lyricsto "melodia" { \parole } >> }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Modifying context plug-ins
I contesti della notazione (come Score e Staff) non contengono
solo le proprietà, ma anche dei componenti aggiuntivi chiamati “engraver”
(incisori) che creano gli elementi della notazione. Per esempio, il contesto
Voice contiene l’incisore Note_heads_engraver e il contesto
Staff contiene l’incisore Key_engraver.
Una descrizione completa di ogni componente aggiuntivo si trova in (internals)Engravers and Performers section ‘Engravers and Performers’ in Guida al Funzionamento Interno. Ogni contesto descritto in (internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno elenca gli incisori usati per quel contesto.
Può essere utile sperimentare questi componenti aggiuntivi. Per farlo si
avvia un nuovo contesto con \new o \context e si modifica:
\new contesto \with {
\consists …
\consists …
\remove …
\remove …
etc.
}
{
…musica…
}
|
dove … deve essere sostituito dal nome dell’incisore. Il comando
\remove toglie l’incisore, mentre \consists lo mantiene.
Ecco un semplice esempio che toglie l’incisore dell’indicazione di tempo
(Time_signature_engraver) e quello della chiave (Clef_engraver)
da un contesto Staff:
<< \new Staff \relative { f'2 g } \new Staff \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } \relative { f'2 g2 } >>
Nel secondo rigo non ci sono indicazioni di tempo né simboli della chiave. Questo è un metodo piuttosto grezzo per far scomparire gli oggetti, dato che ha effetto sull’intero rigo. Questo metodo influenza anche la spaziatura, cosa che potrebbe non essere desiderabile. Metodi più sofisticati per nascondere gli oggetti sono mostrati in (learning)Visibilità e colore degli oggetti section ‘Visibilità e colore degli oggetti’ in Manuale di Apprendimento.
L’esempio successivo mostra un’applicazione pratica. Le stanghette e le
indicazioni di tempo sono normalmente sincronizzate al livello dell’intera
partitura. Ciò viene fatto da Timing_translator e
Default_bar_line_engraver. Questo componente aggiuntivo gestisce
le indicazioni di tempo, il posizionamento nella misura, etc. Spostando
questi incisori dal contesto Score al contesto Staff, possiamo
ottenere una partitura in cui ogni rigo ha la sua indicazione di tempo.
\score { << \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 3/4 c''4 c c c c c } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 2/4 c''4 c c c c c } >> \layout { \context { \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" } } }
L’ordine in cui vengono specificati gli incisori è l’ordine in cui vengono richiamati per compiere la loro elaborazione. Di solito l’ordine in cui gli incisori sono specificati non conta, ma in pochi casi speciali l’ordine è importante, per esempio quando un incisore scrive una proprietà e un altro la legge o quando un incisore crea un grob e un altro lo deve elaborare.
I seguenti ordini sono importanti:
Bar_engraver deve essere primo di solito,
New_fingering_engraver deve precedere l’incisore
Script_column_engraver,
Timing_translator deve precedere l’incisore
Bar_number_engraver.
File installati: ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Changing context default settings
Le proprietà dei contesti e dei grob possono essere modificate con i comandi
\set e \override, come è spiegato in
Modifica delle proprietà. Questi comandi creano eventi musicali,
rendendo effettivi i cambiamenti nel momento temporale in cui è
elaborata la musica.
Questa sezione spiega invece come cambiare i valori predefiniti delle proprietà dei contesti e dei grob nel momento in cui viene creato il contesto. Esistono due modi per farlo. Uno modifica i valori predefiniti in tutti i contesti di un certo tipo, l’altro modifica i valori predefiniti soltanto in una certa istanza di un contesto.
| Modifica di tutti i contesti dello stesso tipo | ||
| Modifica di un solo contesto specifico | ||
| Ordine di precedenza |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Changing all contexts of the same type
Le impostazioni di contesto predefinite da usare per l’output grafico nei
contesti Score, Staff, Voice e in altri contesti possono
essere specificate in un blocco \context compreso in un qualsiasi
blocco \layout.
Le impostazioni per l’output Midi invece devono essere specificate separatamente
in blocchi \midi (vedi Definizioni di output - gerarchia dei contesti).
Il blocco \layout deve trovarsi all’interno del blocco \score
al quale si vuole applicare, dopo la musica.
\layout {
\context {
\Voice
[impostazioni di contesto per tutti i contesti Voice]
}
\context {
\Staff
[impostazioni di contesto per tutti i contesti Staff]
}
}
|
Si possono specificare i seguenti tipi di impostazioni:
\override, ma col nome del contesto omesso
\score { \relative { a'4^"Gambi più spessi" a a a a4 a a\ff a } \layout { \context { \Staff \override Stem.thickness = #4.0 } } }
\score { \relative { a'4^"Tipo di carattere più piccolo" a a a a4 a a\ff a } \layout { \context { \Staff fontSize = #-4 } } }
\dynamicUp o un’espressione
musicale come \accidentalStyle dodecaphonic
\score { \relative { a'4^"Dinamiche sopra" a a a a4 a a\ff a } \layout { \context { \Voice \dynamicUp } \context { \Staff \accidentalStyle dodecaphonic } } }
\with; il blocco
\with è spiegato approfonditamente in
Modifica di un solo contesto specifico.
StaffDefaults = \with { fontSize = #-4 } \score { \new Staff { \relative { a'4^"Tipo di carattere più piccolo" a a a a4 a a a } } \layout { \context { \Staff \StaffDefaults } } }
I comandi che impostano una proprietà possono essere posti in un blocco
\layout senza doverli racchiudere in un blocco \context. Così
facendo si ottiene lo stesso risultato che si otterrebbe se si includessero
gli stessi comandi all’inizio di ogni contesto del tipo specificato. Se non
è specificato alcun contesto, avranno effetto su qualsiasi contesto
di basso livello, vedi Contesti del livello inferiore - voci. La sintassi di
un comando di impostazione della proprietà in un blocco \layout è
identico a quello che si userebbe in mezzo alle note.
\score { \new Staff { \relative { a'4^"Tipo di carattere più piccolo" a a a a4 a a a } } \layout { \accidentalStyle dodecaphonic \set fontSize = #-4 \override Voice.Stem.thickness = #4.0 } }
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Changing just one specific context
Le proprietà di contesto di una sola istanza di un contesto specifico possono
essere cambiate in un blocco \with. Tutte le altre istanze di contesto
dello stesso tipo manterranno le impostazioni predefinite di LilyPond e saranno
modificate da qualsiasi blocco \layout che le riguarda. Il blocco
\with deve essere posto subito dopo il
comando \new tipo-contesto:
\new Staff \with { [impostazioni di contesto per questa istanza di contesto soltanto] }
{
…
}
|
Altrimenti, se la musica viene inserita usando la forma breve dei comandi
che specificano la modalità di inserimento, per esempio \chords invece di
\chordmode, il comando \with deve essere posto subito dopo il
comando che specifica la modalità:
\chords \with { [impostazioni di contesto per questo contesto (implicito) soltanto] }
{
…
}
|
perché è il contesto implicito creato da queste forme brevi che deve essere
modificato. Vale la stessa considerazione per le altre forme brevi che
indicano la modalità di inserimento (\drums, \figures), vedi
Modalità di inserimento.
Le ‘modifiche di contesto’, essendo specificate in blocchi \with che
si trovano all’interno della musica, avranno effetto su tutti gli
output (quello grafico e il Midi), diversamente da quanto avviene per
le modifiche inserite in una definizione di output.
Si possono specificare i seguenti tipi di impostazioni:
\override, ma col nome di contesto omesso
\score { \new Staff { \new Voice \with { \override Stem.thickness = #4.0 } { \relative { a'4^"Gambi spessi" a a a a4 a a a } } } }
\score { << \new Staff { \relative { a'4^"Tipo di carattere predefinito" a a a a4 a a a } } \new Staff \with { fontSize = #-4 } { \relative { a'4^"Tipo di carattere più piccolo" a a a a4 a a a } } >> }
\dynamicUp
\score { << \new Staff { \new Voice { \relative { a'4^"Dinamiche sotto" a a a a4 a a\ff a } } } \new Staff \with { \accidentalStyle dodecaphonic } { \new Voice \with { \dynamicUp } { \relative { a'4^"Dinamiche sopra" a a a a4 a a\ff a } } } >> }
Guida alla notazione: Modalità di inserimento
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Order of precedence
Il valore di una proprietà da applicare in un certo momento viene determinato nel modo seguente:
\override o \set nel flusso dell’input (le note) è
attivo viene usato quel valore,
\with nella dichiarazione di iniziazione del contesto,
\context
appropriato più recente nei blocchi \layout o \midi,
Manuale di apprendimento: (learning)Modificare le proprietà di contesto section ‘Modificare le proprietà di contesto’ in Manuale di Apprendimento.
Guida alla notazione:
Tutto sui contesti,
Contesti del livello inferiore - voci,
Il comando \set,
Il comando \override,
Il blocco \layout.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Defining new contexts
Contesti specifici, come Staff e Voice, sono creati a partire
da semplici mattoncini. È possibile creare nuovi tipi di contesto con
diverse combinazioni di incisori.
Il prossimo esempio mostra come costruire un diverso tipo di contesto
Voice da zero. Sarà simile a Voice, ma stamperà soltanto
teste di nota a forma di barra posizionate al centro. Può essere usato
per indicare l’improvvisazione nei brani jazz:
Queste impostazioni sono definite in un blocco \context compreso in
un blocco \layout:
\layout {
\context {
…
}
}
|
L’input di esempio che segue sostituisce i … del frammento precedente.
Per prima cosa occorre definire un nome per il nuovo contesto:
\name ImproVoice |
Essendo simile al contesto Voice, ci servono comandi che funzionano
in contesti Voice esistenti per far sì che continuino a funzionare. Per
farlo si assegna al nuovo contesto un alias di Voice,
\alias Voice |
Il contesto stamperà note e testi di spiegazione, dunque dobbiamo aggiungere gli incisori che forniscono queste funzionalità, più l’incisore che raggruppa in colonne le note, i gambi e le pause che si trovano nello stesso momento musicale:
\consists "Note_heads_engraver" \consists "Text_engraver" \consists "Rhythmic_column_engraver" |
Le teste di nota devono essere poste tutte sulla linea centrale:
\consists "Pitch_squash_engraver" squashedPosition = #0 |
L’incisore Pitch_squash_engraver modifica le teste di nota (create
dall’incisore Note_heads_engraver) e imposta la loro posizione
verticale sul valore di squashedPosition, in questo
caso 0, la linea centrale.
Le note appaiono come una barra e non hanno gambi:
\override NoteHead.style = #'slash \hide Stem |
Tutti questi componenti aggiuntivi devono comunicare sotto il controllo
del contesto. I meccanismi con cui i contesti comunicano sono stabiliti
dichiarando il tipo di contesto con \type. In un blocco
\layout, la maggior parte dei contesti sarà del tipo
Engraver_group. Alcuni contesti speciali e i contesti nei
blocchi \midi usano altri tipi di contesto. Copiare e modificare
una definizione di contesto esistente comprenderà anche la definizione
del tipo. Poiché questo esempio crea una definizione da zero, deve essere
specificato in modo esplicito.
\type "Engraver_group" |
Mettendo tutte queste parti insieme otteniamo:
\context {
\name ImproVoice
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
\consists "Rhythmic_column_engraver"
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
\hide Stem
\alias Voice
}
|
I contesti formano gerarchie. Vogliamo posizionare il contesto ImproVoice
all’interno del contesto Staff, proprio come i normali contesti
Voice. Cambiamo quindi la definizione di Staff col comando
\accepts,
\context {
\Staff
\accepts ImproVoice
}
|
Spesso quando si riutilizza una definizione di contesto esistente, il contesto risultante può essere usato in qualsiasi situazione in cui il contesto originale sarebbe stato utile.
\layout {
…
\inherit-acceptability a da
}
|
farà sì che i contesti del tipo a siano accettati da tutti i contesti che accettano anche da. Per esempio, usando
\layout {
…
\inherit-acceptability "ImproVoice" "Voice"
}
|
verrà aggiunto un \accepts per ImproVoice a entrambe le
definizioni di Staff e RhythmicStaff.
L’opposto di \accepts è \denies,
che è talvolta necessario se si riusano definizioni di contesto esistenti.
Sistemando i pezzi necessari in un blocco \layout ci porta a:
\layout {
\context {
\name ImproVoice
…
}
\inherit-acceptability "ImproVoice" "Voice"
}
|
Quindi l’output all’inizio di questa parte può essere inserito così:
\relative {
a'4 d8 bes8
\new ImproVoice {
c4^"ad lib" c
c4 c^"undress"
c c_"while playing :)"
}
a1
}
|
Per completare questo esempio, le modifiche che alterano la gerarchia dei
contesti devono essere ripetute in un blocco \midi per far sì che
l’output Midi dipenda dalle stesse relazioni di contesto.
Guida al funzionamento interno: (internals)Note_heads_engraver section ‘Note_heads_engraver’ in Guida al Funzionamento Interno, (internals)Text_engraver section ‘Text_engraver’ in Guida al Funzionamento Interno, (internals)Rhythmic_column_engraver section ‘Rhythmic_column_engraver’ in Guida al Funzionamento Interno, (internals)Pitch_squash_engraver section ‘Pitch_squash_engraver’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Context layout order
Normalmente i contesti in un sistema sono posizionati dall’alto verso il basso nell’ordine in cui sono incontrati nel file di input. Quando i contesti sono annidati, il contesto più esterno includerà i contesti annidati al suo interno come specificato nel file di input solo se i contesti interni sono inclusi nell’elenco “accepts” del contesto più esterno; altrimenti saranno riposizionati sotto il contesto più esterno invece di essere annidati al suo interno.
L’elenco “accepts” di un contesto può essere modificato coi comandi
\accepts o \denies. \accepts aggiunge un contesto
all’elenco “accepts” mentre \denies lo rimuove dall’elenco.
Per esempio, un gruppo di righi racchiusi da una parentesi quadra non si
trova solitamente all’interno di un gruppo di righi con stanghette
connesse e racchiusi da una graffa, e GrandStaff non accetta al suo
interno StaffGroup per impostazione predefinita.
\score { \new GrandStaff << \new StaffGroup << \new Staff { c'1 } \new Staff { d'1 } >> \new Staff { \set Staff.instrumentName = ultimo f'1 } >> }
Tuttavia col comando \accepts si può aggiungere StaffGroup
al contesto GrandStaff:
\score { \new GrandStaff << \new StaffGroup << \new Staff { c'1 } \new Staff { d'1 } >> \new Staff { \set Staff.instrumentName = ultimo f'1 } >> \layout { \context { \GrandStaff \accepts "StaffGroup" } } }
\denies si usa soprattutto quando un nuovo contesto è basato su
un altro, ma l’annidamento richiesto differisce. Per esempio, il contesto
VaticanaStaff è basato sul contesto Staff, ma col contesto
VaticanaVoice che sostituisce il contesto Voice nell’elenco
“accepts”.
Nota bene: un contesto verrà creato implicitamente e senza avviso se si incontra un comando quando non c’è un contesto adatto disponibile per contenerlo.
Nella definizione di un contesto, il tipo di sottocontesto da creare
implicitamente viene specificato con \defaultchild. Vari eventi
musicali richiedono un contesto “di base”: quando si incontra tale
evento, vengono creati ricorsivamente i sottocontesti finché non si
raggiunge un contesto privo di impostazione ‘defaultchild’.
La creazione implicita di contesti può talvolta causare nuovi righi o nuove
partiture non attesi. Per evitare questi problemi è consigliabile usare
\new per creare i contesti esplicitamente.
Talvolta un contesto deve esistere solo per un breve periodo, come nel caso esemplare di un contesto rigo per un ossia. Per ottenere ciò, di solito si introduce la definizione di contesto nel punto appropriato in parallelo con la sezione corrispondente della musica principale. Per impostazione predefinita, il contesto temporaneo verrà posizionato sotto tutti i contesti esistenti. Per riposizionarlo sopra il contesto chiamato “principale”, dovrebbe essere definito in questo modo:
\new Staff \with { alignAboveContext = "principale" }
|
Una situazione simile si pone quando si posiziona un contesto temporaneo
per il testo vocale all’interno di una disposizione multirigo come
ChoirStaff; per esempio, quando si aggiunge una seconda strofa a
una sezione ripetuta. Per impostazione predefinita, il contesto temporaneo
per il testo vocale verrà posizionato sotto i righi più bassi. Definendo il
contesto temporaneo per il testo vocale con alignBelowContext, questo
può essere posizionato correttamente sotto i contesti della voce (con nome)
che contengono la prima strofa.
Esempi che mostrano questo riposizionamento di contesti temporanei possono essere trovati altrove — vedi (learning)Annidare le espressioni musicali section ‘Annidare le espressioni musicali’ in Manuale di Apprendimento, Modificare singoli righi e Tecniche specifiche per il testo vocale.
Manuale di apprendimento: (learning)Annidare le espressioni musicali section ‘Annidare le espressioni musicali’ in Manuale di Apprendimento.
Guida alla notazione: Modificare singoli righi, Tecniche specifiche per il testo vocale.
Utilizzo: (usage)Appare un rigo in più section ‘Appare un rigo in più’ in Uso del Programma.
File installati: ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.