Guida alla Notazione di LilyPond: 5.1.2 Creazione e citazione di un contesto

### 5.1.2 Creazione e citazione di un contesto

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 Organizzare i brani con le variabili.

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

#### Vedi anche

Manuale di apprendimento: Organizzare i brani con le variabili.

Guida alla notazione: Modifica di un solo contesto specifico, Durate automatiche delle sillabe.

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).