[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

5.1 Contesti di interpretazione

@translationof Interpretation contexts

Questa sezione spiega cosa sono i contesti e come modificarli.

Vedi anche

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] [ ? ]

5.1.1 Tutto sui contesti

@translationof Contexts explained

I contesti sono organizzati in modo gerarchico:


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Definizioni di output - gerarchia dei contesti

@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.

Vedi anche

File installati: ‘ly/engraver-init.ly’. ‘ly/performer-init.ly’.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Score - il padre di tutti i contesti

@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] [ ? ]

Contesti del livello superiore - contenitori di righi

@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] [ ? ]

Contesti del livello intermedio - righi

@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] [ ? ]

Contesti del livello inferiore - voci

@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] [ ? ]

5.1.2 Creazione e citazione di un contesto

@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
  }
>>

[image of music]

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
  }
>>

[image of music]

\new deve essere sempre usato per specificare contesti senza nome.

La differenza tra \new e \context sta nell’azione presa:

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.

Vedi anche

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] [ ? ]

5.1.3 Conservazione di un contesto

@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
  >>
}

[image of 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 }
  >>
}

[image of music]

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 }
  >>
}

[image of music]


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

5.1.4 Modifica dei componenti aggiuntivi di un contesto

@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
  }
>>

[image of music]

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"
    }
  }
}

[image of music]

Problemi noti e avvertimenti

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:

Vedi anche

File installati: ‘ly/engraver-init.ly’.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

5.1.5 Modifica delle impostazioni predefinite di un contesto

@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.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Modifica di tutti i contesti dello stesso tipo

@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:

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
  }
}

[image of music]


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Modifica di un solo contesto specifico

@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:

Vedi anche

Guida alla notazione: Modalità di inserimento


[ < ] [ > ]   [ << ] [ Su ] [ >> ]         [Inizio] [Contenuti] [Indice] [ ? ]

Ordine di precedenza

@translationof Order of precedence

Il valore di una proprietà da applicare in un certo momento viene determinato nel modo seguente:

Vedi anche

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] [ ? ]

5.1.6 Definizione di nuovi contesti

@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:

[image of music]

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.

Vedi anche

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] [ ? ]

5.1.7 Ordine di disposizione dei contesti

@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 }
  >>
}

[image of music]

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"
    }
  }
}

[image of music]

\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.

Vedi anche

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.