1 @c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
4 Translation of GIT committish: 28add695953862ef4a87f9fbeadd1d02dc299244
6 When revising a translation, copy the HEAD committish of the
7 version that you are working on. For details, see the Contributors'
8 Guide, node Updating translation committishes..
11 @c Translators: Federico Bruni
12 @c Translation checkers:
16 @node Modifica delle impostazioni predefinite
17 @chapter Modifica delle impostazioni predefinite
18 @translationof Changing defaults
20 LilyPond è progettato per fornire la migliore qualità grafica mantenendo le
21 impostazioni predefinite. Tuttavia può capitare che sia necessario modificare
22 la sua formattazione predefinita. La formattazione è regolata da un gran
23 numero di @qq{pulsanti e interruttori} chiamati @q{proprietà}. Prima di
24 proseguire si consiglia di leggere una guida introduttiva su come accedere
25 a queste proprietà e modificarle: vedi @rlearning{Modifica dell'output}, nel
26 Manuale di apprendimento. Questo capitolo tratta lo stesso argomento, ma in
27 uno stile più adatto a un manuale.
29 @cindex Internals Reference
30 @cindex Guida al funzionamento interno
32 La descrizione completa delle proprietà che si possono ritoccare si trova
33 in un documento separato: @rinternalsnamed{Top,la Guida al funzionamento
34 interno}. Questo manuale elenca tutte le variabili, le funzioni e le
35 opzioni disponibili in LilyPond. Viene fornito come un documento HTML,
37 @c leave the @uref as one long line.
38 @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,on@/-line},
39 ed è anche incluso nel pacchetto della documentazione di LilyPond.
41 Internamente, LilyPond usa il linguaggio Scheme (un dialetto di LISP) per
42 fornire l'infrastruttura. Modificare le decisioni di formattazione prevede
43 in effetti l'accesso alle funzioni interne del programma, cosa che
44 richiede l'input Scheme. In un file @file{.ly} gli elementi Scheme
45 sono introdotti col segno
46 cancelletto@tie{}@code{#}.@footnote{@rextend{Scheme tutorial}, contiene
47 una breve guida sull'inserimento di numeri, liste, stringhe e simboli in
52 * Contesti di interpretazione::
53 * Come funziona la Guida al funzionamento interno::
54 * Modifica delle proprietà::
55 * Proprietà e concetti utili::
57 * Uso delle funzioni musicali::
61 @node Contesti di interpretazione
62 @section Contesti di interpretazione
63 @translationof Interpretation contexts
65 Questa sezione spiega cosa sono i contesti e come modificarli.
68 * Tutto sui contesti::
69 * Creazione e citazione di un contesto::
70 * Conservazione di un contesto::
71 * Modifica dei componenti aggiuntivi di un contesto::
72 * Modifica delle impostazioni predefinite di un contesto::
73 * Definizione di nuovi contesti::
74 * Ordine di disposizione dei contesti::
78 Manuale di apprendimento:
79 @rlearning{Contesti e incisori}.
82 @file{ly/engraver-init.ly},
83 @file{ly/performer-init.ly}.
86 @rlsr{Contexts and engravers}.
88 Guida al funzionamento interno:
89 @rinternals{Contexts},
90 @rinternals{Engravers and Performers}.
93 @node Tutto sui contesti
94 @subsection Tutto sui contesti
95 @translationof Contexts explained
98 @c TODO Rethink and rewrite
100 >> > > - list of contexts: my *danger unmaintainable*
101 >> > > alarm just went off. I'm
103 I knew it would... And leaving out some of them is perfectly fine
105 I do think that a list like this, with the main contexts and a
107 description of what they do (perhaps also with a note about what
109 behavior is associated with each of them, but this may be
111 should be there, and then we could simply list the remaining ones
113 further explanation and with links to the IR.
116 @c TODO Improve layout, order and consistency of wording -td
118 @c TODO Add introduction which explains contexts in generality -td
120 @c TODO Describe propagation of property values -td
122 I contesti sono organizzati in modo gerarchico:
125 * Definizioni di output - gerarchia dei contesti::
126 * Score - il padre di tutti i contesti::
127 * Contesti del livello superiore - contenitori di righi::
128 * Contesti del livello intermedio - righi::
129 * Contesti del livello inferiore - voci::
132 @c blueprint letteralmente indica la cianografia architettonica
133 @node Definizioni di output - gerarchia dei contesti
134 @unnumberedsubsubsec Definizioni di output - gerarchia dei contesti
135 @translationof Output definitions - blueprints for contexts
137 Questa sezione spiega la rilevanza delle definizioni di output quando
138 si lavora coi contesti. Esempi di vere definizioni di output sono
139 illustrati dopo (vedi @ref{Changing all contexts of the same type}).
141 @cindex output, definizioni
142 @cindex definizioni di output
144 Sebbene la musica scritta in un file possa riferirsi a un certo tipo o
145 nome di un contesto, i contesti vengono creati soltanto quando la musica
146 viene interpretata. LilyPond interpreta la musica in base a una
147 @qq{definizione di output} e lo fa per le varie definizioni di output,
148 producendo un output diverso per ciascuna. La definizione di output che
149 crea l'output grafico si specifica con @code{\layout}.
152 Una definizione di output molto più semplice, usata per produrre l'output
153 Midi, si specifica con @code{\midi}. Molte altre definizioni di output
154 sono usate da LilyPond internamente, come quando si usa la combinazione
155 automatica delle parti (@ref{Automatic part combining}) o si creano citazioni
156 musicali (@ref{Quoting other voices}).
158 Le definizioni di output definiscono la relazione tra i contesti e le loro
159 rispettive impostazioni predefinite. Sebbene la maggior parte dei cambiamenti
160 venga fatta solitamente in un blocco @code{\layout}, le impostazioni relative
161 al Midi avranno effetto solo se inserite in un blocco @code{\midi}.
163 @funindex autoBeaming
164 Alcune impostazioni interessano vari tipi di output: per esempio, se
165 @code{autoBeaming} è disattivato in qualche contesto, le travature contano
166 come melismi al fine di abbinare musica e testo vocale, come descritto
167 in @ref{Automatic syllable durations}. Questo abbinamento viene fatto
168 sia per l'output grafico che per il Midi. Se le modifiche fatte a
169 @code{autoBeaming} in una definizione di contesto di un blocco @code{\layout}
170 non sono ripetute nel corrispondente blocco @code{\midi}, il testo e la
171 musica andranno fuori sincrono nel Midi.
175 @file{ly/engraver-init.ly}.
176 @file{ly/performer-init.ly}.
178 @node Score - il padre di tutti i contesti
179 @unnumberedsubsubsec Score - il padre di tutti i contesti
180 @translationof Score - the master of all contexts
182 Questo è il contesto del livello superiore. Nessun altro contesto può
183 contenere un contesto Score. Per impostazione predefinita, il contesto
184 Score gestisce l'amministrazione delle indicazioni di tempo e garantisce
185 che elementi come le chiavi, le indicazioni di tempo e le armature di chiave
186 siano allineate da rigo a rigo.
188 Un contesto Score viene istanziato implicitamente quando viene elaborato
189 un blocco @code{\score @{@dots{}@}}.
191 @node Contesti del livello superiore - contenitori di righi
192 @unnumberedsubsubsec Contesti del livello superiore - contenitori di righi
193 @translationof Top-level contexts - staff containers
195 @strong{@emph{StaffGroup}}
197 Raggruppa i righi e aggiunge una parentesi quadra sul lato sinistro, che
198 raggruppa insieme i righi. Le stanghette dei righi in esso contenuti sono
199 connessi verticalmente. @code{StaffGroup} è semplicemente un insieme di righi,
200 con una parentesi quadra all'inizio e le stanghette che li attraversano.
202 @strong{@emph{ChoirStaff}}
204 Identico a @code{StaffGroup} eccetto che le stanghette dei righi in esso
205 contenuti non sono connesse verticalmente.
207 @strong{@emph{GrandStaff}}
209 Un gruppo di righi, con una parentesi graffa sul lato sinistro, che raggruppa
210 insieme i righi. Le stanghette dei righi in esso contenuti sono
211 connessi verticalmente.
213 @strong{@emph{PianoStaff}}
215 Identico a @code{GrandStaff}, ma con il supporto ai nomi degli strumenti a
216 sinistra di ogni sistema.
218 @node Contesti del livello intermedio - righi
219 @unnumberedsubsubsec Contesti del livello intermedio - righi
220 @translationof Intermediate-level contexts - staves
222 @strong{@emph{Staff}}
224 Gestisce chiavi, stanghette, armature di chiave, alterazioni. Può contenere
225 contesti @code{Voice}.
227 @strong{@emph{RhythmicStaff}}
229 Come @code{Staff} ma per le ritmiche. Le altezze vengono ignorate e le
230 note appaiono su una linea. L'output MIDI conserva le altezze inalterate.
232 @strong{@emph{TabStaff}}
234 Contesto per generare l'intavolatura (o tablatura). La forma predefinita è
235 quella dell'intavolatura per chitarra, con sei linee.
237 @strong{@emph{DrumStaff}}
239 Contesto per gli strumenti percussivi. Può contenere @code{DrumVoice}.
241 @strong{@emph{VaticanaStaff}}
243 Identico a @code{Staff}, a parte il fatto che è progettato per rappresentare
244 un brano in stile gregoriano.
246 @strong{@emph{MensuralStaff}}
248 Identico a @code{Staff}, a parte il fatto che è progettato per rappresentare
249 un brano in stile mensurale.
251 @node Contesti del livello inferiore - voci
252 @unnumberedsubsubsec Contesti del livello inferiore - voci
253 @translationof Bottom-level contexts - voices
255 I contesti al livello della voce inizializzano alcune proprietà e avviano
256 gli incisori adatti. Un contesto del livello inferiore è privo di
257 @code{defaultchild}. Sebbene sia possibile far sì che accetti/@/contenga
258 sottocontesti, questi possono essere creati e inseriti solo esplicitamente.
260 @strong{@emph{Voice}}
262 Corrisponde a una voce di un rigo. Questo contesto gestisce la
263 conversione di segni di dinamica, gambi, travature, apici e pedici,
264 legature di portamento e di valore e pause. Deve essere istanziata
265 esplicitamente se si hanno molteplici voci nello stesso rigo.
267 @strong{@emph{VaticanaVoice}}
269 Identico a @code{Voice}, a parte il fatto che è progettato per rappresentare
270 un brano in stile gregoriano.
272 @strong{@emph{MensuralVoice}}
274 Identico a @code{Voice}, con delle modifiche per rappresentare un brano in
277 @strong{@emph{Lyrics}}
279 Corrisponde a una voce con testo vocale. Gestisce la stampa di una singola
280 linea di testo vocale.
282 @strong{@emph{DrumVoice}}
284 Il contesto della voce usato in un rigo per percussioni.
286 @strong{@emph{FiguredBass}}
288 Il contesto in cui sono creati gli oggetti @code{BassFigure} a partire
289 dall'input inserito in modalità @code{\figuremode}.
291 @strong{@emph{TabVoice}}
293 Il contesto della voce usato all'interno di un contesto @code{TabStaff}.
294 Solitamente omesso così che sia creato implicitamente.
296 @strong{@emph{CueVoice}}
298 Un contesto della voce usato per rappresentare note a dimensione ridotta, inteso
299 soprattutto per aggiungere citazioni in corpo più piccolo a un rigo, vedi
300 @ref{Formatting cue notes}. Solitamente omesso così che sia creato implicitamente.
302 @strong{@emph{ChordNames}}
304 Crea e dispone i nomi degli accordi.
308 @node Creazione e citazione di un contesto
309 @subsection Creazione e citazione di un contesto
310 @translationof Creating and referencing contexts
314 @cindex nuovi contesti
315 @cindex citazione di un contesto
316 @cindex Contesti, creazione e citazione
318 LilyPond crea i contesti del livello inferiore automaticamente se incontra
319 un'espressione musicale prima di un contesto adatto, ma questo approccio
320 di solito funziona soltanto per partiture semplici o frammenti musicali
321 simili a quelli della documentazione. Per partiture più complesse si
322 consiglia di specificare tutti i contesti esplicitamente coi comandi
323 @code{\new} o @code{\context}. La sintassi di questi due comandi è
327 [\new | \context] @var{Contesto} [ = @var{nome}] [@var{espressione-musicale}]
331 dove si può usare @code{\new} o @code{\context}.
332 @var{Contesto} è il tipo di contesto che deve essere creato,
333 @var{nome} è un nome opzionale da assegnare al contesto che si
334 sta creando e @var{espressione-musicale} è una singola espressione
335 musicale che deve essere interpretata dagli incisori e dai performer
338 Il prefisso @code{\new} senza un nome viene usato comunemente per creare
339 partiture con molti righi:
341 @lilypond[quote,verbatim]
343 \new Staff \relative {
344 % lascia che il contesto Voice sia creato implicitamente
347 \new Staff \relative {
354 e per mettere varie voci in un rigo:
356 @lilypond[quote,verbatim]
358 \new Voice \relative {
362 \new Voice \relative {
370 @code{\new} deve essere sempre usato per specificare contesti senza nome.
372 La differenza tra @code{\new} e @code{\context} sta nell'azione
377 @code{\new} con o senza un nome creerà sempre un contesto del tutto
378 nuovo e distinto, anche se ne esiste già uno con lo stesso nome:
380 @lilypond[quote,verbatim]
382 \new Voice = "A" \relative {
386 \new Voice = "A" \relative {
394 @code{\context} seguito da un nome creerà un contesto distinto solo se
395 non esiste già un contesto dello stesso tipo con lo stesso nome nella
396 stessa gerarchia di contesto. Altrimenti sarà preso come riferimento
397 per quel contesto precedentemente creato, e la sua espressione musicale
398 verrà passata a quel contesto per la sua interpretazione.
400 Una possibile applicazione dei contesti con nome è la separazione di
401 formattazione della partitura e contenuto musicale. Le seguenti due
402 forme sono entrambe valide:
404 @lilypond[quote,verbatim]
407 % formattazione della partitura
418 \context Voice = "one" {
423 \context Voice = "two" {
432 @lilypond[quote,verbatim]
435 % formattazione della partitura
437 \context Voice = "one" {
440 \context Voice = "two" {
446 \context Voice = "one" {
451 \context Voice = "two" {
461 Altrimenti si possono usare le variabili per ottenere un risultato simile. Vedi
462 @rlearning{Organizzare i brani con le variabili}.
465 @code{\context} senza nome corrisponderà al primo di qualsiasi contesto
466 precedentemente creato dello stesso tipo nella stessa gerarchia di contesto,
467 anche uno a cui è stato assegnato un nome, e la sua espressione musicale sarà
468 passata a quel contesto per la sua interpretazione. Questa forma è raramente
469 utile. Tuttavia, si usa @code{\context} senza nome e senza espressione
470 musicale per impostare il contesto in cui una procedura Scheme specificata con
471 @code{\applyContext} viene eseguita:
474 \new Staff \relative @{
477 \applyContext #(lambda (ctx)
479 (display (ly:context-current-moment ctx)))
486 Un contesto deve essere nominato se deve essere citato successivamente, per
487 esempio quando il testo vocale è associato alla musica:
490 \new Voice = "tenore" @var{musica}
492 \new Lyrics \lyricsto "tenore" @var{testo}
496 Maggiori informazioni sull'associazione del testo vocale alla musica in
497 @ref{Automatic syllable durations}.
499 Le proprietà di tutti i contesti di un certo tipo possono essere modificate
500 in un blocco @code{\layout} (con una sintassi diversa), vedi
501 @ref{Changing all contexts of the same type}. Questo costrutto fornisce anche
502 un mezzo per mantenere le istruzioni di formattazione separate dal contenuto
503 musicale. Se occorre modificare un solo contesto, bisogna usare un blocco
504 @code{\with}, vedi @ref{Changing just one specific context}.
507 Manuale di apprendimento:
508 @rlearning{Organizzare i brani con le variabili}.
510 Guida alla notazione:
511 @ref{Changing just one specific context},
512 @ref{Automatic syllable durations}.
515 @node Conservazione di un contesto
516 @subsection Conservazione di un contesto
517 @translationof Keeping contexts alive
519 @cindex contexts, keeping alive
520 @cindex contexts, lifetime
522 I contesti vengono solitamente terminati nel primo momento musicale in
523 cui non hanno niente da fare. Quindi i contesti @code{Voice} muoiono
524 appena non contengono eventi; i contesti @code{Staff} muoiono appena
525 tutti i contesti @code{Voice} al loro interno non contengono eventi; etc.
526 Ciò può causare difficoltà se contesti precedenti, che sono stati
527 terminati, devono essere richiamati; per esempio, quando si cambia
528 il rigo col comando @code{\change}, quando si associa il testo a una
529 voce col comando @code{\lyricsto} o quando si aggiungono ulteriori eventi
530 musicali a un contesto precedente.
532 C'è un'eccezione a questa regola generale: all'interno di un costrutto
533 @code{@{@dots{}@}} (musica sequenziale), la nozione di «contesto corrente»
534 scenderà di livello ogni volta che un elemento della sequenza termina in un
535 sottocontesto del precedente contesto corrente. Ciò evita la falsa creazione di
536 contesti impliciti in varie situazioni, ma significa che il primo contesto in
537 cui si scende verrà conservato fino alla fine dell'espressione.
539 Al contrario, i contesti di un construtto @code{<<@dots{}>>} (musica simultanea)
540 non sono portati avanti, dunque racchiudendo un comando di creazione di contesto
541 in un'ulteriore coppia di @code{<<@dots{}>>} impedirà che il contesto persista
542 in tutta la sequenza @code{@{@dots{}@}}.
544 Un contesto può essere tenuto attivo assicurandosi che abbia qualcosa
545 da fare in ogni momento musicale. I contesti @code{Staff} sono tenuti
546 attivi assicurandosi che una delle loro voci sia conservata. Un modo per
547 farlo consiste nell'aggiungere pause spaziatrici a una voce in parallelo
548 con la musica vera. Queste devono essere aggiunte a ogni contesto
549 @code{Voice} da tenere attivo. Se si usano sporadicamente varie voci,
550 è più sicuro tenerle attive invece di tentare di affidarsi alle eccezioni
553 Nell'esempio seguente, sia la voce A che la voce B sono mantenute attive
554 in questo modo per la durata del brano:
556 @lilypond[quote,verbatim]
557 musicA = \relative { d''4 d d d }
558 musicB = \relative { g'4 g g g }
561 \new Voice = "A" { s1*5 } % Tiene la voce "A" attiva per 5 battute
562 \new Voice = "B" { s1*5 } % Tiene la voce "B" attiva per 5 battute
567 \context Voice = "A" {
571 \context Voice = "B" {
575 \context Voice = "A" { \musicA }
576 \context Voice = "B" { \musicB }
577 \context Voice = "A" { \musicA }
588 @cindex testo vocale, allineamento con una melodia sporadica
590 L'esempio seguente mostra come scrivere una linea melodica sporadica con
591 testo vocale usando questo approccio. Ovviamente, in una situazione reale
592 la melodia e l'accompagnamento consisterebbero di varie e diverse sezioni.
594 @lilypond[quote,verbatim]
595 melodia = \relative { a'4 a a a }
596 accompagnamento = \relative { d'4 d d d }
597 parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia }
600 \new Staff = "musica" {
602 \new Voice = "melodia" {
604 s1*4 % Tiene la voce "melodia" attiva per 4 battute
607 \new Voice = "accompagnamento" {
612 \context Voice = "melodia" { \melodia }
613 \context Voice = "accompagnamento" { \accompagnamento }
615 \context Voice = "accompagnamento" { \accompagnamento }
617 \context Voice = "melodia" { \melodia }
618 \context Voice = "accompagnamento" { \accompagnamento }
623 \new Lyrics \with { alignAboveContext = #"musica" }
624 \lyricsto "melodia" { \parole }
629 Un modo alternativo, migliore in molte circostanze, è quello di mantenere la
630 linea melodica attiva semplicemente includendo le note spaziatrici in modo
631 che si allineino correttamente con l'accompagnamento:
633 @lilypond[quote,verbatim]
634 melodia = \relative {
635 s1 % salta una battuta
637 s1 % salta una battuta
640 accompagnamento = \relative {
646 parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia }
650 \new Staff = "musica" {
652 \new Voice = "melodia" {
656 \new Voice = "accompagnamento" {
662 \new Lyrics \with { alignAboveContext = #"musica" }
663 \lyricsto "melodia" { \parole }
669 @node Modifica dei componenti aggiuntivi di un contesto
670 @subsection Modifica dei componenti aggiuntivi di un contesto
671 @translationof Modifying context plug-ins
673 I contesti della notazione (come @code{Score} e @code{Staff}) non contengono
674 solo le proprietà, ma anche dei componenti aggiuntivi chiamati @qq{engraver}
675 (incisori) che creano gli elementi della notazione. Per esempio, il contesto
676 @code{Voice} contiene l'incisore @code{Note_heads_engraver} e il contesto
677 @code{Staff} contiene l'incisore @code{Key_engraver}.
679 Una descrizione completa di ogni componente aggiuntivo si trova in
681 @rinternals{Engravers and Performers}.
684 Guida al funzionamento interno @expansion{} Translation @expansion{} Engravers.
686 Ogni contesto descritto in
688 @rinternals{Contexts}
691 Guida al funzionamento interno @expansion{} Translation @expansion{} Context.
693 elenca gli incisori usati per quel contesto.
696 Può essere utile sperimentare questi componenti aggiuntivi. Per farlo si
697 avvia un nuovo contesto con @code{\new} o @code{\context} e si modifica:
702 \new @var{contesto} \with @{
710 @emph{@dots{}musica@dots{}}
715 dove @dots{} deve essere sostituito dal nome dell'incisore. Il comando
716 @code{\remove} toglie l'incisore, mentre @code{\consists} lo mantiene.
717 Ecco un semplice esempio che toglie l'incisore dell'indicazione di tempo
718 (@code{Time_signature_engraver}) e quello della chiave (@code{Clef_engraver})
719 da un contesto @code{Staff}:
721 @lilypond[quote,verbatim]
723 \new Staff \relative {
727 \remove "Time_signature_engraver"
728 \remove "Clef_engraver"
735 Nel secondo rigo non ci sono indicazioni di tempo né simboli della chiave.
736 Questo è un metodo piuttosto grezzo per far scomparire gli oggetti, dato
737 che ha effetto sull'intero rigo. Questo metodo influenza anche la spaziatura,
738 cosa che potrebbe non essere desiderabile. Metodi più sofisticati per
739 nascondere gli oggetti sono mostrati in @rlearning{Visibilità e colore degli oggetti}.
741 L'esempio successivo mostra un'applicazione pratica. Le stanghette e le
742 indicazioni di tempo sono normalmente sincronizzate al livello dell'intera
743 partitura. Ciò viene fatto da @code{Timing_translator} e
744 @code{Default_bar_line_engraver}. Questo componente aggiuntivo gestisce
745 le indicazioni di tempo, il posizionamento nella misura, etc. Spostando
746 questi incisori dal contesto @code{Score} al contesto @code{Staff}, possiamo
747 ottenere una partitura in cui ogni rigo ha la sua indicazione di tempo.
750 @cindex partiture polimetriche
751 @cindex indicazione di tempo, multipla
753 @lilypond[quote,verbatim]
757 \consists "Timing_translator"
758 \consists "Default_bar_line_engraver"
765 \consists "Timing_translator"
766 \consists "Default_bar_line_engraver"
776 \remove "Timing_translator"
777 \remove "Default_bar_line_engraver"
785 L'ordine in cui vengono specificati gli incisori è l'ordine in cui
786 vengono richiamati per compiere la loro elaborazione. Di solito
787 l'ordine in cui gli incisori sono specificati non conta, ma in
788 pochi casi speciali l'ordine è importante, per esempio quando un
789 incisore scrive una proprietà e un altro la legge o quando un incisore
790 crea un grob e un altro lo deve elaborare.
792 I seguenti ordini sono importanti:
796 l'incisore @code{Bar_engraver} deve essere primo di solito,
799 l'incisore @code{New_fingering_engraver} deve precedere l'incisore
800 @code{Script_column_engraver},
803 @code{Timing_translator} deve precedere l'incisore
804 @code{Bar_number_engraver}.
810 @file{ly/engraver-init.ly}.
813 @node Modifica delle impostazioni predefinite di un contesto
814 @subsection Modifica delle impostazioni predefinite di un contesto
815 @translationof Changing context default settings
817 @cindex default context properties, changing
818 @cindex context properties, changing defaults
820 Le proprietà dei contesti e dei grob possono essere modificate con i comandi
821 @code{\set} e @code{\override}, come è spiegato in
822 @ref{Modifying properties}. Questi comandi creano eventi musicali,
823 rendendo effettivi i cambiamenti nel momento temporale in cui è
826 Questa sezione spiega invece come cambiare i valori @emph{predefiniti}
827 delle proprietà dei contesti e dei grob nel momento in cui viene creato
828 il contesto. Esistono due modi per farlo. Uno modifica i valori
829 predefiniti in tutti i contesti di un certo tipo, l'altro modifica i
830 valori predefiniti soltanto in una certa istanza di un contesto.
833 * Modifica di tutti i contesti dello stesso tipo::
834 * Modifica di un solo contesto specifico::
835 * Ordine di precedenza::
838 @node Modifica di tutti i contesti dello stesso tipo
839 @unnumberedsubsubsec Modifica di tutti i contesti dello stesso tipo
840 @translationof Changing all contexts of the same type
842 @cindex \context nel blocco \layout
846 Le impostazioni di contesto predefinite da usare per l'output grafico nei
847 contesti @code{Score}, @code{Staff}, @code{Voice} e in altri contesti possono
848 essere specificate in un blocco @code{\context} compreso in un qualsiasi
849 blocco @code{\layout}.
851 Le impostazioni per l'output Midi invece devono essere specificate separatamente
852 in blocchi @code{\midi} (vedi @ref{Output definitions - blueprints for contexts}).
854 Il blocco @code{\layout} deve trovarsi all'interno del blocco @code{\score}
855 al quale si vuole applicare, dopo la musica.
861 [impostazioni di contesto per tutti i contesti Voice]
865 [impostazioni di contesto per tutti i contesti Staff]
870 Si possono specificare i seguenti tipi di impostazioni:
874 Un comando @code{\override}, ma col nome del contesto omesso
876 @lilypond[quote,verbatim]
879 a'4^"Gambi più spessi" a a a
885 \override Stem.thickness = #4.0
892 Impostando direttamente una proprietà di contesto
894 @lilypond[quote,verbatim]
897 a'4^"Tipo di carattere più piccolo" a a a
910 Un comando predefinito come @code{\dynamicUp} o un'espressione
911 musicale come @code{\accidentalStyle dodecaphonic}
913 @lilypond[quote,verbatim]
916 a'4^"Dinamiche sopra" a a a
926 \accidentalStyle dodecaphonic
933 Una variabile definita dall'utente contenente un blocco @code{\with}; il blocco
934 @code{\with} è spiegato approfonditamente in
935 @ref{Changing just one specific context}.
937 @lilypond[quote,verbatim]
938 StaffDefaults = \with {
945 a'4^"Tipo di carattere più piccolo" a a a
960 I comandi che impostano una proprietà possono essere posti in un blocco
961 @code{\layout} senza doverli racchiudere in un blocco @code{\context}. Così
962 facendo si ottiene lo stesso risultato che si otterrebbe se si includessero
963 gli stessi comandi all'inizio di ogni contesto del tipo specificato. Se non
964 è specificato alcun contesto, avranno effetto su @emph{qualsiasi} contesto
965 di basso livello, vedi @ref{Bottom-level contexts - voices}. La sintassi di
966 un comando di impostazione della proprietà in un blocco @code{\layout} è
967 identico a quello che si userebbe in mezzo alle note.
969 @lilypond[quote,verbatim]
973 a'4^"Tipo di carattere più piccolo" a a a
978 \accidentalStyle dodecaphonic
980 \override Voice.Stem.thickness = #4.0
986 @node Modifica di un solo contesto specifico
987 @unnumberedsubsubsec Modifica di un solo contesto specifico
988 @translationof Changing just one specific context
993 Le proprietà di contesto di una sola istanza di un contesto specifico possono
994 essere cambiate in un blocco @code{\with}. Tutte le altre istanze di contesto
995 dello stesso tipo manterranno le impostazioni predefinite di LilyPond e saranno
996 modificate da qualsiasi blocco @code{\layout} che le riguarda. Il blocco
997 @code{\with} deve essere posto subito dopo il
998 comando @code{\new} @var{tipo-contesto}:
1001 \new Staff \with @{ [impostazioni di contesto per questa istanza di contesto soltanto] @}
1007 Dato che questa @q{modifca di contesto} è specificata all'interno della
1008 musica, avrà effetto su @emph{tutti} gli output (quello grafico @emph{e} il
1009 Midi), diversamente da quanto avviene per le modifiche inserite in una
1010 definizione di output.
1012 Si possono specificare i seguenti tipi di impostazioni:
1016 Un comando @code{\override}, ma col nome di contesto omesso
1018 @lilypond[quote,verbatim]
1021 \new Voice \with { \override Stem.thickness = #4.0 }
1024 a'4^"Gambi spessi" a a a
1033 Impostando direttamente una proprietà di contesto
1035 @lilypond[quote,verbatim]
1040 a'4^"Tipo di carattere predefinito" a a a
1044 \new Staff \with { fontSize = #-4 }
1047 a'4^"Tipo di carattere più piccolo" a a a
1056 Un comando predefinito come @code{\dynamicUp}
1058 @lilypond[quote,verbatim]
1064 a'4^"Dinamiche sotto" a a a
1069 \new Staff \with { \accidentalStyle dodecaphonic }
1071 \new Voice \with { \dynamicUp }
1074 a'4^"Dinamiche sopra" a a a
1085 @node Ordine di precedenza
1086 @unnumberedsubsubsec Ordine di precedenza
1087 @translationof Order of precedence
1089 Il valore di una proprietà da applicare in un certo momento viene determinato
1094 se un comando @code{\override} o @code{\set} nel flusso dell'input (le note) è
1095 attivo viene usato quel valore,
1098 altrimenti viene usato il valore predefinito preso da una dichiarazione
1099 @code{\with} nella dichiarazione di iniziazione del contesto,
1102 altrimenti viene usato il valore predefinito preso dal blocco @code{\context}
1103 appropriato più recente nei blocchi @code{\layout} o @code{\midi},
1106 altrimenti viene usato il valore predefinito in LilyPond.
1110 Manuale di apprendimento:
1111 @rlearning{Modificare le proprietà di contesto}.
1113 Guida alla notazione:
1114 @ref{Contexts explained},
1115 @ref{Bottom-level contexts - voices},
1116 @ref{The set command},
1117 @ref{The override command},
1118 @ref{The layout block,,Il blocco @code{@bs{}layout}}.
1121 @node Definizione di nuovi contesti
1122 @subsection Definizione di nuovi contesti
1123 @translationof Defining new contexts
1125 @cindex contesti, definire nuovi
1126 @cindex incisori, includere nei contesti
1141 Contesti specifici, come @code{Staff} e @code{Voice}, sono creati a partire
1142 da semplici mattoncini. È possibile creare nuovi tipi di contesto con
1143 diverse combinazioni di incisori.
1145 Il prossimo esempio mostra come costruire un diverso tipo di contesto
1146 @code{Voice} da zero. Sarà simile a @code{Voice}, ma stamperà soltanto
1147 teste di nota a forma di barra posizionate al centro. Può essere usato
1148 per indicare l'improvvisazione nei brani jazz:
1150 @lilypond[quote,ragged-right]
1151 \layout { \context {
1153 \type "Engraver_group"
1154 \consists "Note_heads_engraver"
1155 \consists "Rhythmic_column_engraver"
1156 \consists "Text_engraver"
1157 \consists "Pitch_squash_engraver"
1158 squashedPosition = #0
1159 \override NoteHead.style = #'slash
1164 \accepts "ImproVoice"
1168 a'4 d8 bes8 \new ImproVoice { c4^"ad lib" c
1169 c4 c^"undress" c_"while playing :)" c }
1175 Queste impostazioni sono definite in un blocco @code{\context} compreso in
1176 un blocco @code{\layout}:
1186 L'input di esempio che segue sostituisce i @dots{} del frammento precedente.
1188 Per prima cosa occorre definire un nome per il nuovo contesto:
1194 Essendo simile al contesto @code{Voice}, ci servono comandi che funzionano
1195 in contesti @code{Voice} esistenti per far sì che continuino a funzionare. Per
1196 farlo si assegna al nuovo contesto un alias di @code{Voice},
1202 Il contesto stamperà note e testi di spiegazione, dunque dobbiamo
1203 aggiungere gli incisori che forniscono queste funzionalità, più
1204 l'incisore che raggruppa in colonne le note, i gambi e le pause che
1205 si trovano nello stesso momento musicale:
1208 \consists "Note_heads_engraver"
1209 \consists "Text_engraver"
1210 \consists "Rhythmic_column_engraver"
1213 Le teste di nota devono essere poste tutte sulla linea centrale:
1216 \consists "Pitch_squash_engraver"
1217 squashedPosition = #0
1220 L'incisore @code{Pitch_squash_engraver} modifica le teste di nota (create
1221 dall'incisore @code{Note_heads_engraver}) e imposta la loro posizione
1222 verticale sul valore di @code{squashedPosition}, in questo
1223 caso@tie{}@code{0}, la linea centrale.
1225 Le note appaiono come una barra e non hanno gambi:
1228 \override NoteHead.style = #'slash
1232 Tutti questi componenti aggiuntivi devono comunicare sotto il controllo
1233 del contesto. I meccanismi con cui i contesti comunicano sono stabiliti
1234 dichiarando il tipo di contesto con @code{\type}. In un blocco
1235 @code{\layout}, la maggior parte dei contesti sarà del tipo
1236 @code{Engraver_group}. Alcuni contesti speciali e i contesti nei
1237 blocchi @code{\midi} usano altri tipi di contesto. Copiare e modificare
1238 una definizione di contesto esistente comprenderà anche la definizione
1239 del tipo. Poiché questo esempio crea una definizione da zero, deve essere
1240 specificato in modo esplicito.
1243 \type "Engraver_group"
1246 Mettendo tutte queste parti insieme otteniamo:
1251 \type "Engraver_group"
1252 \consists "Note_heads_engraver"
1253 \consists "Text_engraver"
1254 \consists "Rhythmic_column_engraver"
1255 \consists "Pitch_squash_engraver"
1256 squashedPosition = #0
1257 \override NoteHead.style = #'slash
1264 I contesti formano gerarchie. Vogliamo posizionare il contesto @code{ImproVoice}
1265 all'interno del contesto @code{Staff}, proprio come i normali contesti
1266 @code{Voice}. Cambiamo quindi la definizione di @code{Staff} col comando
1276 @funindex \inherit-acceptability
1277 Spesso quando si riutilizza una definizione di contesto esistente, il contesto
1278 risultante può essere usato in qualsiasi situazione in cui il contesto originale
1279 sarebbe stato utile.
1284 \inherit-acceptability @var{a} @var{da}
1289 farà sì che i contesti del tipo @var{a} siano accettati da tutti i
1290 contesti che accettano anche @var{da}. Per esempio, usando
1295 \inherit-acceptability "ImproVoice" "Voice"
1300 verrà aggiunto un @code{\accepts} per @code{ImproVoice} a entrambe le
1301 definizioni di @code{Staff} e @code{RhythmicStaff}.
1304 L'opposto di @code{\accepts} è @code{\denies},
1305 che è talvolta necessario se si riusano definizioni di contesto esistenti.
1307 Sistemando i pezzi necessari in un blocco @code{\layout} ci porta a:
1315 \inherit-acceptability "ImproVoice" "Voice"
1319 Quindi l'output all'inizio di questa parte può essere inserito così:
1327 c c_"while playing :)"
1333 Per completare questo esempio, le modifiche che alterano la gerarchia dei
1334 contesti devono essere ripetute in un blocco @code{\midi} per far sì che
1335 l'output Midi dipenda dalle stesse relazioni di contesto.
1339 Guida al funzionamento interno:
1340 @rinternals{Note_heads_engraver},
1341 @rinternals{Text_engraver},
1342 @rinternals{Rhythmic_column_engraver},
1343 @rinternals{Pitch_squash_engraver}.
1346 @node Ordine di disposizione dei contesti
1347 @subsection Ordine di disposizione dei contesti
1348 @translationof Context layout order
1350 @cindex contesti, ordine di disposizione
1354 Normalmente i contesti in un sistema sono posizionati dall'alto verso il
1355 basso nell'ordine in cui sono incontrati nel file di input. Quando i
1356 contesti sono annidati, il contesto più esterno includerà i contesti
1357 annidati al suo interno come specificato nel file di input solo se i
1358 contesti interni sono inclusi nell'elenco @qq{accepts} del contesto
1359 più esterno; altrimenti saranno riposizionati sotto il contesto più
1360 esterno invece di essere annidati al suo interno.
1362 L'elenco @qq{accepts} di un contesto può essere modificato coi comandi
1363 @code{\accepts} o @code{\denies}. @code{\accepts} aggiunge un contesto
1364 all'elenco @qq{accepts} mentre @code{\denies} lo rimuove dall'elenco.
1366 Per esempio, un gruppo di righi racchiusi da una parentesi quadra non si
1367 trova solitamente all'interno di un gruppo di righi con stanghette
1368 connesse e racchiusi da una graffa, e @code{GrandStaff} non accetta al suo
1369 interno @code{StaffGroup} per impostazione predefinita.
1371 @lilypond[verbatim,quote]
1378 \new Staff { \set Staff.instrumentName = ultimo f'1 }
1383 Tuttavia col comando @code{\accepts} si può aggiungere @code{StaffGroup}
1384 al contesto @code{GrandStaff}:
1386 @lilypond[verbatim,quote]
1393 \new Staff { \set Staff.instrumentName = ultimo f'1 }
1398 \accepts "StaffGroup"
1404 @code{\denies} si usa soprattutto quando un nuovo contesto è basato su
1405 un altro, ma l'annidamento richiesto differisce. Per esempio, il contesto
1406 @code{VaticanaStaff} è basato sul contesto @code{Staff}, ma col contesto
1407 @code{VaticanaVoice} che sostituisce il contesto @code{Voice} nell'elenco
1410 @cindex contesti impliciti
1411 @funindex \defaultchild
1413 Nota bene: un contesto verrà creato implicitamente e senza avviso se
1414 si incontra un comando quando non c'è un contesto adatto disponibile
1417 Nella definizione di un contesto, il tipo di sottocontesto da creare
1418 implicitamente viene specificato con @code{\defaultchild}. Vari eventi
1419 musicali richiedono un contesto @qq{di base}: quando si incontra tale
1420 evento, vengono creati ricorsivamente i sottocontesti finché non si
1421 raggiunge un contesto privo di impostazione @samp{defaultchild}.
1423 La creazione implicita di contesti può talvolta causare nuovi righi o nuove
1424 partiture non attesi. Per evitare questi problemi è consigliabile usare
1425 @code{\new} per creare i contesti esplicitamente.
1427 @cindex alignAboveContext
1428 @cindex alignBelowContext
1429 @funindex alignAboveContext
1430 @funindex alignBelowContext
1432 Talvolta un contesto deve esistere solo per un breve periodo, come nel
1433 caso esemplare di un contesto rigo per un ossia. Per ottenere ciò, di
1434 solito si introduce la definizione di contesto nel punto appropriato
1435 in parallelo con la sezione corrispondente della musica principale.
1436 Per impostazione predefinita, il contesto temporaneo verrà posizionato
1437 sotto tutti i contesti esistenti. Per riposizionarlo sopra il contesto
1438 chiamato @qq{principale}, dovrebbe essere definito in questo modo:
1441 @code{\new Staff \with @{ alignAboveContext = #"principale" @} }
1444 Una situazione simile si pone quando si posiziona un contesto temporaneo
1445 per il testo vocale all'interno di una disposizione multirigo come
1446 @code{ChoirStaff}; per esempio, quando si aggiunge una seconda strofa a
1447 una sezione ripetuta. Per impostazione predefinita, il contesto temporaneo
1448 per il testo vocale verrà posizionato sotto i righi più bassi. Definendo il
1449 contesto temporaneo per il testo vocale con @code{alignBelowContext}, questo
1450 può essere posizionato correttamente sotto i contesti della voce (con nome)
1451 che contengono la prima strofa.
1453 Esempi che mostrano questo riposizionamento di contesti temporanei possono
1454 essere trovati altrove --- vedi @rlearning{Annidare le espressioni musicali},
1455 @ref{Modifying single staves} e @ref{Techniques specific to lyrics}.
1458 Manuale di apprendimento:
1459 @rlearning{Annidare le espressioni musicali}.
1461 Guida alla notazione:
1462 @ref{Modifying single staves},
1463 @ref{Techniques specific to lyrics}.
1466 @rprogram{Appare un rigo in più}.
1469 @file{ly/engraver-init.ly}.
1472 @node Come funziona la Guida al funzionamento interno
1473 @section Come funziona la Guida al funzionamento interno
1474 @translationof Explaining the Internals Reference
1477 * Navigazione nella guida al programma::
1478 * Interfacce di formattazione::
1479 * Determinazione della proprietà del grob::
1480 * Convenzioni sui nomi::
1483 @node Navigazione nella guida al programma
1484 @subsection Navigazione nella guida al programma
1485 @translationof Navigating the program reference
1487 @c TODO remove this (it's in the LM)
1488 @c Replace with more factual directions
1490 Supponiamo di voler togliere l'indicazione di diteggiatura nel seguente
1493 @lilypond[quote,fragment,verbatim]
1497 Consultando la documentazione sulle istruzioni di diteggiatura (in
1498 @ref{Fingering instructions}), si nota:
1503 Guida al funzionamento interno: @rinternals{Fingering}.
1508 La guida del programmatore è disponibile come documento HTML. È caldamente
1509 consigliata la lettura della versione HTML, accessibile online o in locale
1510 scaricando la documentazione HTML. Questa sezione sarà molto più difficile da
1511 comprendere se si usa il manuale PDF.
1514 Seguire il collegamento a @rinternals{Fingering}. In cima alla pagina
1517 @c Non tradurre le parti citate del manuale Internals Reference, che non è tradotto.
1519 Fingering objects are created by: @rinternals{Fingering_engraver} and
1520 @rinternals{New_fingering_engraver}.
1523 Seguendo i collegamenti correlati nella guida del programma, possiamo seguire
1524 il flusso di informazione del programma:
1528 @item @rinternals{Fingering}:
1529 @rinternals{Fingering} objects are created by:
1530 @rinternals{Fingering_engraver}
1532 @item @rinternals{Fingering_engraver}:
1533 Music types accepted: @rinternals{fingering-event}
1535 @item @rinternals{fingering-event}:
1536 Music event type @code{fingering-event} is in Music expressions named
1537 @rinternals{FingeringEvent}
1540 Questo percorso va in direzione contraria al flusso dell'informazione nel
1541 programma: parte dall'output e termina nell'evento di input. Si può anche
1542 partire da un evento di input e leggere seguendo il flusso di informazione
1543 arrivando infine all'oggetto di output.
1545 La guida al programma può anche essere sfogliata come un normale
1546 documento. Contiene capitoli su
1548 @rinternals{Music definitions},
1551 @code{Music definitions}
1553 su @rinternals{Translation}, e sul @rinternals{Backend}. Ogni capitolo
1554 elenca tutte le definizioni usate e tutte le proprietà che possono
1558 @node Interfacce di formattazione
1559 @subsection Interfacce di formattazione
1560 @translationof Layout interfaces
1562 @cindex interface, layout
1563 @cindex layout interface
1566 La pagina HTML che abbiamo incontrato nella sezione precedente descrive
1567 l'oggetto di formattazione chiamato @rinternals{Fingering}. Tale oggetto
1568 è un simbolo interno alla partitura. Ha delle proprietà che contengono
1569 numeri (come gli spessori e le direzioni), ma anche collegamenti a oggetti
1570 correlati. Un oggetto di formattazione viene chiamato anche @emph{Grob},
1571 che è un diminutivo di Graphical Object (oggetto grafico). Maggiori dettagli
1572 sui Grob si trovano in @rinternals{grob-interface}.
1574 La pagina relativa al grob @code{Fingering} elenca le definizioni per l'oggetto
1575 @code{Fingering}. Per esempio, la pagina dice
1578 @code{padding} (dimension, in staff space):
1584 che significa che il numero verrà tenuto a una distanza di almento 0.5 spazi
1585 rigo dalla testa della nota.
1587 Ogni oggetto di formattazione può avere varie funzioni come elemento
1588 della notazione o tipografico. Per esempio, l'oggetto Fingering ha
1593 La sua dimensione è indipendente dalla spaziatura orizzontale, diversamente
1594 da legature di portamento o travature.
1597 È un frammento testuale, solitamente molto breve.
1600 Questo frammento di testo viene rappresentato con un tipo di carattere,
1601 diversamente da legature di portamento o travature.
1604 Orizzontalmente, il centro del simbolo deve essere allineato al centro della
1608 Verticalmente, il simbolo viene posto accanto alla nota e sul rigo.
1611 La posizione verticale viene coordinata anche con altri simboli di apici
1615 Ognuno di questi aspetti viene registrato nelle cosiddette interfacce
1616 (@emph{interface}), che sono elencate in fondo alla
1617 pagina @rinternals{Fingering}:
1621 This object supports the following interfaces:
1622 @rinternals{item-interface},
1623 @rinternals{self-alignment-interface},
1624 @rinternals{side-position-interface}, @rinternals{text-interface},
1625 @rinternals{text-script-interface}, @rinternals{font-interface},
1626 @rinternals{finger-interface}, and @rinternals{grob-interface}.
1629 Facendo clic su uno di questo collegamenti si arriva alla pagina dell'interfaccia
1630 del rispettivo oggetto. Ogni interfaccia ha una serie di proprietà. Alcune
1631 non sono a disposizione dell'utente (@q{Internal properties}), ma altre
1632 possono essere modificate.
1634 Abbiamo parlato dell'oggetto @code{Fingering}, ma in realtà non si tratta
1635 di niente di troppo complesso. Il file di inizializzazione (vedi
1636 @rlearning{Altre fonti di informazione})
1637 @file{scm/define-grobs.scm} mostra l'anima di questo @qq{oggetto},
1642 (avoid-slur . around)
1643 (slur-padding . 0.2)
1644 (staff-padding . 0.5)
1645 (self-alignment-X . 0)
1646 (self-alignment-Y . 0)
1647 (script-priority . 100)
1648 (stencil . ,ly:text-interface::print)
1649 (direction . ,ly:script-interface::calc-direction)
1650 (font-encoding . fetaText)
1651 (font-size . -5) ; don't overlap when next to heads.
1652 (meta . ((class . Item)
1653 (interfaces . (finger-interface
1655 text-script-interface
1657 side-position-interface
1658 self-alignment-interface
1659 item-interface))))))
1663 Come si può vedere, l'oggetto @code{Fingering} non è niente più di un insieme
1664 di impostazioni di variabili e la pagina web nella Guida al funzionamento interno
1665 è generata direttamente da questa definizione.
1668 @node Determinazione della proprietà del grob
1669 @subsection Determinazione della proprietà del grob
1670 @translationof Determining the grob property
1672 @c TODO remove this (it's in the LM)
1673 @c Replace with more factual directions
1675 Volevamo cambiare la posizione del @b{2} in
1677 @lilypond[quote,fragment,verbatim]
1681 Dato che il @b{2} è posizionato verticalmente vicino alla sua nota, dobbiamo
1682 fare delle prove con l'interfaccia associata a questo posizionamento, ovvero
1683 @code{side-position-interface}. La pagina relativa a questa interfaccia
1688 @code{side-position-interface}
1690 Position a victim object (this one) next to other objects (the
1691 support). The property @code{direction} signifies where to put the
1692 victim object relative to the support (left or right, up or down?)
1697 Sotto questa descrizione, la variabile @code{padding} viene descritta come
1703 (dimension, in staff space)
1705 Add this much extra space between objects that are next to each other.
1709 Aumentando il valore di @code{padding}, possiamo spostare la diteggiatura
1710 lontana dalla testa di nota. Il seguente comando inserisce 3 spazi rigo
1711 di bianco tra la nota e la diteggiatura:
1713 \once \override Voice.Fingering.padding = #3
1716 L'inserimento di questo comando prima che l'oggetto Fingering venga
1717 creato, ovvero prima di @code{c-2}, produce il seguente risultato:
1719 @lilypond[quote,fragment,verbatim]
1720 \once \override Voice.Fingering.padding = #3
1725 In questo caso, il contesto per questa modifica è @code{Voice}. Questo
1726 fatto può anche essere dedotto dalla guida al programma, dato che la pagina
1727 per l'incisore @rinternals{Fingering_engraver} dice
1730 Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
1734 @node Convenzioni sui nomi
1735 @subsection Convenzioni sui nomi
1736 @translationof Naming conventions
1738 È importante conoscere le convenzioni sui nomi. Ecco una panoramica:
1741 @item funzioni scheme: minuscolo-con-trattini (incl. nomi di una-parola)
1742 @item funzioni scheme: ly:plus-scheme-style
1743 @item eventi, classi e proprietà musicali:
1744 come-le-funzioni-scheme
1745 @item interfacce Grob: stile-scheme
1746 @item proprietà del backend: stile-scheme (ma ammette X e Y!)
1747 @item contesti (e EspressioniMusicali e grob): Maiuscolo o CamelCase
1748 @item proprietà di contesto: minuscoloSeguitoDaCamelCase
1750 Maiuscolo_seguito_da_minuscolo_e_con_trattini_bassi
1753 Domande che aspettano una risposta:
1755 @item Quali di queste sono convenzioni e quali sono regole?
1756 @item Quali sono regole del linguaggio sottostante e quali sono specifiche
1760 @node Modifica delle proprietà
1761 @section Modifica delle proprietà
1762 @translationof Modifying properties
1764 @c TODO change the menu and subsection node names to use
1765 @c backslash once the new macro to handle the refs
1766 @c is available. Need to find and change all refs at
1767 @c the same time. -td
1770 * Panoramica sulla modifica delle proprietà::
1772 * Il comando override::
1773 * Il comando tweak::
1775 * Modifica delle liste associative::
1779 @node Panoramica sulla modifica delle proprietà
1780 @subsection Panoramica sulla modifica delle proprietà
1781 @translationof Overview of modifying properties
1783 Ogni contesto è responsabile della creazione di certi tipi di oggetti
1784 grafici. Le impostazioni usate per la rappresentazione grafica di
1785 questi oggetti sono anch'esse salvate dal contesto. Cambiando queste
1786 impostazioni, si può alterare l'aspetto degli oggetti.
1788 Ci sono due tipi diversi di proprietà salvate nei contesti: le proprietà
1789 del contesto e quelle del grob. Le proprietà del contesto sono proprietà
1790 che si applicano al contesto nel suo complesso e regolano il modo in cui
1791 il contesto stesso viene mostrato. Al contrario, le proprietà del grob
1792 si applicano a tipi di grob specifici che verranno mostrati nel contesto.
1794 I comandi @code{\set} e @code{\unset} vengono usati per cambiare i valori
1795 delle proprietà di contesto. I comandi @code{\override} e @code{\revert}
1796 servono a cambiare i valori delle proprietà dei grob.
1800 Guida al funzionamento interno:
1801 @rinternals{Backend},
1802 @rinternals{All layout objects},
1803 @rinternals{OverrideProperty},
1804 @rinternals{RevertProperty},
1805 @rinternals{PropertySet}.
1808 Il backend non è molto stretto nel controllo del tipo delle proprietà di un
1809 oggetto. Riferimenti ciclici nei valori Scheme delle proprietà possono
1810 causare attese o crash, o entrambi.
1814 @node Il comando set
1815 @subsection Il comando @code{@bs{}set}
1816 @translationof The set command
1820 @cindex modifica delle proprietà
1822 Ogni contesto ha un insieme di @emph{proprietà}, variabili contenute in
1823 quel contesto. Le proprietà di contesto si cambiano col comando @code{\set},
1824 che ha la seguente sintassi:
1827 \set @var{contesto}.@var{proprietà} = #@var{valore}
1830 @var{valore} è un oggetto Scheme, ecco perché deve essere preceduto dal
1831 carattere @tie{}@code{#}.
1833 Le proprietà dei contesti sono solitamente nominate in
1834 @code{studlyCaps}. Perlopiù regolano la traduzione dalla musica
1835 alla notazione, per esempio @code{localAlterations} (per determinare
1836 se stampare le alterazioni), o @code{measurePosition} (per determinare
1837 quando stampare una stanghetta). Le proprietà di contesto possono
1838 cambiare nel tempo nel corso dell'interpretazione di un brano musicale;
1839 @code{measurePosition} ne è un ovvio esempio. Le proprietà di contesto
1840 si modificano con @code{\set}.
1842 Per esempio, le pause multiple sono combinate in una singola battuta
1843 se la proprietà di contesto @code{skipBars} viene impostata su @code{#t}:
1845 @lilypond[quote,fragment,verbatim]
1847 \set Score.skipBars = ##t
1851 Se l'argomento @var{contesto} non viene specificato, la proprietà sarà
1852 impostata nel contesto di base corrente (solitamente @code{ChordNames},
1853 @code{Voice}, @code{TabVoice} o @code{Lyrics}).
1855 @lilypond[quote,fragment,verbatim]
1856 \set Score.autoBeaming = ##f
1859 \set autoBeaming = ##t
1867 La modifica viene applicata @q{al volo}, durante l'interpretazione della
1868 musica, in modo che l'impostazione abbia effetto soltanto sul secondo
1869 gruppo di note da un ottavo.
1871 Nota che il contesto più inferiore non contiene sempre la proprietà che si
1872 desidera cambiare. Per esempio, il tentativo di impostare la proprietà
1873 @code{skipBars} del contesto di base predefinito, in questo caso
1874 @code{Voice}, non produrrà alcun risultato, perché skipBars è una
1875 proprietà del contesto @code{Score}.
1877 @lilypond[quote,fragment,verbatim]
1883 I contesti sono gerarchici, per cui se viene specificato un contesto che ne
1884 racchiude altri, per esempio @code{Staff}, il cambiamento viene applicato
1885 anche a tutti i contesti @code{Voice} del rigo corrente.
1889 Il comando @code{\unset}:
1892 \unset @var{contesto}.@var{proprietà}
1896 viene usato per togliere la definizione di @var{proprietà} dal
1897 @var{contesto}. Questo comando rimuove la definizione solo se
1898 impostata nel @var{contesto}. Le proprietà impostate nei contesti
1899 più esterni non saranno modificate da un @code{\unset} in un contesto
1902 @lilypond[quote,fragment,verbatim]
1903 \set Score.autoBeaming = ##t
1907 \unset Score.autoBeaming
1915 Come in @code{\set}, non è necessario specificare l'argomento @var{contesto}
1916 per un contesto di fondo, quindi le due dichiarazioni
1919 \set Voice.autoBeaming = ##t
1920 \set autoBeaming = ##t
1924 sono equivalenti se l'attuale contesto di fondo è @code{Voice}.
1928 Anteponendo @code{\once} ai comandi @code{\set} o @code{\unset} l'impostazione
1929 verrà applicata soltanto a un singolo momento temporale:
1931 @lilypond[quote,fragment,verbatim]
1933 \once \set fontSize = #4.7
1938 Una descrizione completa di tutte le proprietà di contesto disponibili si
1939 trova nella Guida al funzionamento interno, vedi
1941 @rinternals{Tunable context properties}.
1944 Translation @expansion{} Tunable context properties.
1948 Guida al funzionamento interno:
1949 @rinternals{Tunable context properties}.
1952 @node Il comando override
1953 @subsection Il comando @code{\override}
1954 @translationof The override command
1956 @cindex grob, proprietà
1957 @cindex proprietà dei grob
1960 Esiste un tipo particolare di proprietà di contesto: la descrizione del
1961 grob. Le descrizioni dei grob vengono nomimate in @code{StudlyCaps}
1962 (iniziando con lettere maiuscole). Contengono le
1963 @qq{impostazioni predefinite} per un certo tipo di grob, come una
1964 lista associativa. Consultare @file{scm/define-grobs.scm}
1965 per vedere le impostazioni per ogni descrizione di grob. Le descrizioni
1966 di grob si modificano con @code{\override}.
1968 La sintassi del comando @code{\override} è
1971 \override [@var{contesto}.]@var{NomeGrob}.@var{proprietà} = #@var{valore}
1974 Per esempio, possiamo aumentare lo spessore del gambo di una nota
1975 modificando la proprietà @code{thickness} dell'oggetto @code{Stem}:
1977 @lilypond[quote,fragment,verbatim]
1979 \override Voice.Stem.thickness = #3.0
1983 Se non viene specificato il contesto in un @code{\override}, viene usato
1984 il contesto di base:
1986 @lilypond[quote,fragment,verbatim]
1987 \override Staff.Stem.thickness = #3.0
1991 \override Stem.thickness = #0.5
2000 Alcune opzioni modificabili vengono chiamate @q{sottoproprietà} e stanno
2001 dentro le proprietà. Per cambiarle, usare i comandi nella forma
2004 \override Stem.details.beamed-lengths = #'(4 4 3)
2007 o, per modificare le estremità degli estensori, usare una forma simile
2011 \override TextSpanner.bound-details.left.text = #"left text"
2012 \override TextSpanner.bound-details.right.text = #"right text"
2016 @cindex ripristinare le modifiche
2017 @cindex modifiche, ripristinare
2019 Gli effetti di @code{\override} possono essere annullati con @code{\revert}.
2021 La sintassi del comando @code{\revert} è
2024 \revert [@var{contesto}.]@var{NomeGrob}.@var{proprietà}
2029 @lilypond[quote,verbatim]
2032 \override Voice.Stem.thickness = #3.0
2034 \revert Voice.Stem.thickness
2039 Gli effetti di @code{\override} e @code{\revert} si applicano a tutti i
2040 grob nel contesto interessato da quel momento in poi:
2042 @lilypond[quote,verbatim]
2046 \override Staff.Stem.thickness = #3.0
2051 \revert Staff.Stem.thickness
2058 @cindex modificare in un solo istante
2060 Si può usare @code{\once} insieme a @code{\override} o @code{\revert}
2061 per agire solo sul momento corrente:
2063 @lilypond[quote,verbatim]
2066 \override Stem.thickness = #3.0
2071 \once \override Stem.thickness = #3.0
2078 Guida al funzionamento interno:
2079 @rinternals{Backend}
2082 @node Il comando tweak
2083 @subsection Il comando @code{\tweak}
2084 @translationof The tweak command
2089 Modificare le proprietà dei grob con @code{\override} fa sì che i
2090 cambiamenti siano applicati a tutti i grob in questione in quel
2091 contesto nel momento in cui la modifica viene applicata. Talvolta,
2092 tuttavia, si può voler applicare le modifiche a un solo grob invece
2093 che a tutti i grob del contesto interessato. Per farlo si usa il
2094 comando @code{\tweak}, che ha la seguente sintassi:
2097 \tweak [@var{oggetto-formattazione}.]@var{proprietà-grob} @var{valore}
2100 @var{oggetto-formattazione} è opzionale.
2101 Il comando @code{\tweak} viene applicato all'oggetto musicale che segue
2102 immediatamente @var{valore} nel flusso musicale.
2104 Per un'introduzione alla sintassi e agli usi del comando tweak leggere
2105 @rlearning{Metodi di modifica}.
2107 Quando molti elementi simili sono disposti nello stesso momento musicale,
2108 non è possibile usare il comando @code{\override} per modificarne soltanto
2109 uno. È in casi come questi che occorre usare il comando @code{\tweak}.
2110 Ecco alcuni elementi che possono apparire più di una volta nello stesso
2114 @item teste di note di un accordo
2115 @item segni di articolazione su una singola nota
2116 @item legature di valore tra note di un accordo
2117 @item parentesi di gruppi irregolari che iniziano nello stesso momento
2120 @cindex accordo, modificare una nota dell'
2122 In questo esempio, il colore di una testa di nota e il tipo di testa di
2123 un'altra nota sono modificati all'interno di un accordo:
2125 @lilypond[verbatim,fragment,quote]
2130 \tweak duration-log #1
2135 @code{\tweak} può essere usato per modificare le legature di portamento:
2137 @lilypond[verbatim,quote]
2138 \relative { c'-\tweak thickness #5 ( d e f) }
2142 Perché il comando @code{\tweak} funzioni, deve trovarsi proprio accanto
2143 all'oggetto al quale deve essere applicato dopo che il file di input è
2144 stato convertito in un flusso musicale. Modificare un intero accordo
2145 non cambia niente perché il suo evento musicale agisce solo come
2146 contenitore, mentre tutti gli oggetti della formattazione sono creati
2147 dagli eventi interni all'@tie{}@code{EventChord}:
2149 @lilypond[verbatim,fragment,quote]
2150 \tweak color #red c''4
2151 \tweak color #red <c'' e''>4
2152 <\tweak color #red c'' e''>4
2155 Il semplice comando @code{\tweak} non può essere usato per modificare un
2156 oggetto che non sia creato direttamente dall'input. In particolare, non
2157 agirà su gambi, travature automatiche o alterazioni, dato che questi sono
2158 generati successivamente dagli oggetti della formattazione di @code{NoteHead}
2159 invece che da elementi musicali nel flusso dell'input.
2161 Tali oggetti della formattazione creati indirettamente possono essere tuttavia
2162 modificati usando una forma del comando @code{\tweak} in cui il nome del grob
2163 è indicato esplicitamente:
2165 @lilypond[fragment,verbatim,quote]
2166 \tweak Stem.color #red
2167 \tweak Beam.color #green c''8 e''
2168 <c'' e'' \tweak Accidental.font-size #-3 ges''>4
2171 @code{\tweak} non può essere usato per modificare le chiavi o le indicazioni
2172 di tempo, perché queste vengono separate da qualsiasi comando @code{\tweak}
2173 precedente nel flusso dell'input a causa dell'inserimento automatico di ulteriori
2174 elementi richiesti per specificare il contesto.
2176 Si possono usare vari comandi @code{\tweak} prima di un elemento della
2177 notazione e tutti avranno effetto su di esso:
2179 @lilypond[verbatim,fragment,quote]
2181 -\tweak style #'dashed-line
2182 -\tweak dash-fraction #0.2
2183 -\tweak thickness #3
2189 Il flusso musicale generato da una sezione di un file di input, compresi
2190 gli elementi inseriti automaticamente, può essere esaminato, vedi
2191 @rextend{Displaying music expressions}. Ciò può essere utile nel determinare
2192 cosa può essere modificato da un comando @code{\tweak} o nel valutare come
2193 aggiustare l'input per far sì che un @code{\tweak} sia applicato.
2196 Manuale di apprendimento:
2197 @rlearning{Metodi di modifica}.
2200 @rextend{Displaying music expressions}.
2204 @cindex \tweak e punti di controllo
2205 @cindex punti di controllo e \tweak
2207 Il comando @code{\tweak} non può essere usato per modificare i punti di
2208 controllo di una sola legatura di valore tra tante in un accordo, se non
2209 quelli della prima legatura incontrata nel file di input.
2212 @node set vs override
2213 @subsection @code{\set} vs. @code{\override}
2214 @translationof set versus override
2218 Sia @code{\set} che @code{\override} manipolano le proprietà
2219 associate ai contesti. In entrambi i casi, le proprietà
2220 seguono la gerarchia dei contesti: proprietà non impostate in
2221 un contesto mostrano i valori del rispettivo contesto padre.
2223 I valori e la durata delle proprietà di contesto sono dinamici e
2224 disponibili soltanto mentre la musica viene interpretata, @qq{reiterata}.
2225 Nel momento della creazione del contesto, le proprietà sono inizializzate
2226 a partire dalla definizione di contesto corrispondente e dalle possibili
2227 modifiche di contesto. Poi le modifiche vengono fatte con dei comandi
2228 che impostano la proprietà presenti nella musica stessa.
2230 Le definizioni di grob sono una categoria speciale di proprietà di
2231 contesto. Dato che la loro struttura, @qq{contabilità} e uso sono
2232 diversi dalle normali proprietà di contesto, ad esse si accede con
2233 un insieme diverso di comandi e sono trattate in modo separato
2234 nella documentazione.
2236 Al contrario delle semplici proprietà di contesto, le definizioni di grob
2237 sono suddivise in proprietà del grob. Un @qq{grob} (oggetto grafico)
2238 viene solitamente creato da un incisore nel momento in cui l'espressione
2239 musicale viene interpretata e riceve le sue proprietà iniziali dalla definizione
2240 del grob corrente del contesto dell'incisore. L'incisore (o altre parti del
2241 @q{backend} di LilyPond) può successivamente togliere o cambiare le proprietà
2242 del grob, ma ciò non ha effetto sulla definizione di grob del contesto.
2244 Ciò che chiamiamo @q{proprietà del grob} nel contesto delle modifiche a
2245 livello di utente sono in realtà le proprietà della definizione di grob di
2246 un contesto. Al contrario delle normali proprietà di contesto, le definizioni
2247 di grob hanno dei registri per tenere traccia delle sue parti e delle proprietà
2248 individuali dei grob (e perfino delle loro sottoproprietà) separatamente, così
2249 che sia possibile definire queste parti in contesti diversi e far sì che la
2250 definizione di grob complessiva sia assemblata dai pezzi forniti in contesti
2251 diversi compresi tra il contesto corrente e i suoi contesti superiori.
2253 Le definizioni di grob sono manipolate con @code{\override} e
2254 @code{\revert} e hanno un nome che inizia con una lettera maiuscola
2255 (come @samp{NoteHead}), mentre le normali proprietà di contesto sono
2256 manipolate con @code{\set} e @code{\unset} e il loro nome inizia con
2257 una lettera minuscola.
2259 @cindex tweak, relazione con @code{\override}
2261 @funindex \overrideProperty
2262 I comandi speciali @code{\tweak} e @code{\overrideProperty} modificano le
2263 proprietà dei grob bypassando completamente le proprietà di contesto.
2264 Catturano i grob mentre vengono creati e poi impostano direttamente
2265 le proprietà su di essi quando vengono da un evento musicale modificato
2266 o sono di un tipo particolare.
2269 @node Modifica delle liste associative
2270 @subsection Modifica delle liste associative
2271 @translationof Modifying alists
2273 Alcune proprietà configurabili dall'utente sono rappresentate internamente
2274 come @emph{alist} (liste associative), che contengono coppie di
2275 @emph{chiavi} e @emph{valori}. La struttura di una lista associativa è:
2278 '((@var{chiave1} . @var{valore1})
2279 (@var{chiave2} . @var{valore2})
2280 (@var{chiave3} . @var{valore3})
2284 Se una lista associativa è una proprietà di un grob o una variabile
2285 @code{\paper}, le sue chiavi possono essere modificate individualmente
2286 senza influenzare altre chiavi.
2288 Per esempio, per ridurre lo spazio tra righi adiacenti in un gruppo di
2289 righi, si usa la proprietà @code{staff-staff-spacing} del grob
2290 @code{StaffGrouper}. La proprietà è una lista associativa con quattro
2291 chiavi: @code{basic-distance}, @code{minimum-distance},
2292 @code{padding} e @code{stretchability}. Le impostazioni predefinite
2293 per questa proprietà sono elencate nella sezione @qq{Backend} della
2294 Guida al funzionamento interno (vedi @rinternals{StaffGrouper}):
2297 '((basic-distance . 9)
2298 (minimum-distance . 7)
2300 (stretchability . 5))
2303 Un modo per avvicinare i righi è ridurre il valore della chiave
2304 @code{basic-distance} (@code{9}) perché corrisponda al valore
2305 di @code{minimum-distance} (@code{7}). Per modificare una chiave
2306 singola individualmente, usare una @emph{dichiarazione annidata}:
2308 @lilypond[quote,verbatim]
2309 % spazio predefinito tra i righi
2311 \new Staff { \clef treble c''1 }
2312 \new Staff { \clef bass c1 }
2315 % spazio ridotto tra i righi
2316 \new PianoStaff \with {
2317 % questa è la dichiarazione annidata
2318 \override StaffGrouper.staff-staff-spacing.basic-distance = #7
2320 \new Staff { \clef treble c''1 }
2321 \new Staff { \clef bass c1 }
2325 Con una dichiarazione annidata si aggiornerà la chiave specificata (come
2326 @code{basic-distance} nell'esempio precedente) senza modificare alcuna
2327 altra chiave già impostata per la stessa proprietà.
2329 Ora immaginiamo di volere che i righi siano più vicini possibile ma senza
2330 sovrapporsi. Il modo più semplice per fare ciò è impostare tutte e quattro
2331 le chiavi della lista su zero. Tuttavia, non è necessario inserire quattro
2332 dichiarazioni annidate, una per ogni chiave. Si può invece ridefinire
2333 completamente la proprietà con una sola dichiarazione, attraverso una
2336 @lilypond[quote,verbatim]
2337 \new PianoStaff \with {
2338 \override StaffGrouper.staff-staff-spacing =
2339 #'((basic-distance . 0)
2340 (minimum-distance . 0)
2342 (stretchability . 0))
2344 \new Staff { \clef treble c''1 }
2345 \new Staff { \clef bass c1 }
2349 Nota bene che qualsiasi chiave non elencata esplicitamente nella
2350 definizione della lista associativa sarà ripristinata al suo valore
2351 @emph{predefinito-quando-non-impostato}. Nel caso di
2352 @code{staff-staff-spacing}, qualsiasi chiave-valore non impostata
2353 viene ripristinata su zero (eccetto @code{stretchability}, che
2354 prende il valore di @code{basic-distance} quando non è impostata). Dunque
2355 le due seguenti dichiarazioni sono equivalenti:
2358 \override StaffGrouper.staff-staff-spacing =
2359 #'((basic-distance . 7))
2361 \override StaffGrouper.staff-staff-spacing =
2362 #'((basic-distance . 7)
2363 (minimum-distance . 0)
2365 (stretchability . 7))
2368 Una conseguenza (possibilmente non voluta) di questo approccio è
2369 l'eliminazione di eventuali impostazioni predefinite impostate in
2370 un file di inizializzazione e caricate ogni volta che un file di
2371 input viene compilato. Nell'esempio precedente le impostazioni
2372 predefinite per @code{padding} e @code{minimum-distance} (definite
2373 in @file{scm/define-grobs.scm}) sono ripristinate ai loro valori
2374 predefiniti-quando-non-impostati (zero per entrambe le chiavi).
2375 La definizione di una proprietà o di una variabile come una lista
2376 associativa (di qualsiasi dimensione) ripristinerà sempre tutte
2377 le chiavi-valori ai loro valori predefiniti-quando-non-impostati.
2378 A meno che questo non sia il risultato voluto, è più sicuro
2379 aggiornare le chiavi-valori individualmente con una dichiarazione
2382 @warning{Le dichiarazioni annidate non funzionano per le liste
2383 associative delle proprietà di contesto (come @code{beamExceptions},
2384 @code{keyAlterations}, @code{timeSignatureSettings}, etc.). Queste
2385 proprietà possono essere modificate soltanto ridefinendole completamente
2386 come liste associative.}
2389 @node Proprietà e concetti utili
2390 @section Proprietà e concetti utili
2391 @translationof Useful concepts and properties
2395 * Modalità di inserimento::
2396 * Direzione e posizionamento::
2397 * Distanze e misurazioni::
2399 * Proprietà del simbolo del rigo::
2401 * Visibilità degli oggetti::
2402 * Stili della linea::
2403 * Rotazione degli oggetti::
2406 @node Modalità di inserimento
2407 @subsection Modalità di inserimento
2408 @translationof Input modes
2410 Il modo in cui la notazione contenuta in un file di input è interpretata è
2411 determinato dalla modalità di inserimento corrente.
2413 @subsubsubheading Modalità accordo
2415 Viene attivata col comando @code{\chordmode} e fa sì che l'input
2416 sia interpretato con la sintassi della notazione degli accordi, vedi
2417 @ref{Chord notation}. Gli accordi sono visualizzati come note su
2420 La modalità accordo viene attivata anche col comando @code{\chords}.
2421 Questo crea anche un nuovo contesto @code{ChordNames} e fa sì che
2422 l'input che segue sia interpretato con la sintassi della notazione
2423 degli accordi e visualizzato come nomi di accordo nel contesto
2424 @code{ChordNames}, vedi @ref{Printing chord names}.
2426 @subsubsubheading Modalità percussioni
2428 Viene attivata col comando @code{\drummode} e fa sì che l'input
2429 sia interpretato con la sintassi della notazione delle percussioni,
2430 vedi @ref{Basic percussion notation}.
2432 La modalità percussioni viene attivata anche col comando @code{\drums}.
2433 Questo crea anche un nuovo contesto @code{DrumStaff} e fa sì che
2434 l'input che segue sia interpretato con la sintassi della notazione
2435 delle percussioni e visualizzato come simboli di percussione su un
2436 rigo ritmico, vedi @ref{Basic percussion notation}.
2438 @subsubsubheading Modalità basso continuo
2440 Viene attivata col comando @code{\figuremode} e fa sì che
2441 l'input che segue sia interpretato con la sintassi del basso
2442 continuo, vedi @ref{Entering figured bass}.
2444 La modalità basso continuo viene attivata anche col comando @code{\figures}.
2445 Questo crea anche un nuovo contesto @code{FiguredBass} e fa sì che
2446 l'input che segue sia interpretato con la sintassi del basso continuo
2447 e visualizzato come numeri di basso nel contesto @code{FiguredBass},
2448 vedi @ref{Introduction to figured bass}.
2450 @subsubsubheading Modalità tastiera e intavolatura
2452 Non esistono speciali modalità di inserimento per i simboli della tastiera
2453 e dell'intavolatura (o tablatura).
2455 Per creare diagrammi in intavolatura, inserire note o accordi nella modalità
2456 nota e visualizzarli in un contesto @code{TabStaff}, vedi
2457 @ref{Default tablatures}.
2459 Per creare diagrammi della tastiera sopra un rigo, ci sono due opzioni.
2460 Si può usare il contesto @code{FretBoards} (vedi
2461 @ref{Automatic fret diagrams}) oppure inserirli come testo (markup)
2462 sopra le note usando il comando @code{\fret-diagram} (vedi
2463 @ref{Fret diagram markups}).
2465 @subsubsubheading Modalità testo vocale
2467 Viene attivata col comando @code{\lyricmode} e fa sì che l'input
2468 sia interpretato come sillabe del testo vocale con durate opzionali
2469 e modificatori del testo associato, vedi @ref{Vocal music}.
2471 La modalità testo vocale viene attivata anche col comando @code{\addlyrics}.
2472 Questo crea anche un nuovo contesto @code{Lyrics} e un comando implicito
2473 @code{\lyricsto} che associa il testo vocale che segue con la musica che
2476 @subsubsubheading Modalità testo (markup)
2478 Viene attivata col comando @code{\markup} e fa sì che l'input
2479 sia interpretato con la sintassi di markup, vedi
2480 @ref{Text markup commands}.
2482 @subsubsubheading Modalità nota
2484 Questa è la modalità predefinita e può essere attivata esplicitamente
2485 col comando @code{\notemode}. L'input viene interpretato come altezze,
2486 durate, markup, etc. e rappresentato come notazione musicale su un rigo.
2488 Normalmente non è necessario specificare la modalità nota esplicitamente, ma
2489 potrebbe essere utile farlo in alcune situazioni, per esempio se si è in
2490 modalità testo vocale o accordo o qualsiasi altra modalità e si vuole inserire
2491 qualcosa che può essere fatto solo con la sintassi della modalità nota.
2494 @node Direzione e posizionamento
2495 @subsection Direzione e posizionamento
2496 @translationof Direction and placement
2498 Nella composizione tipografica musicale la direzione e il posizionamento di
2499 molti elementi è una questione di gusto. Per esempio, i gambi delle note
2500 possono essere rivolti in su o in giù; testi, dinamiche e altri segni
2501 espressivi possono essere posti sopra o sotto il rigo; il testo può
2502 essere allineato a sinistra, destra o al centro; etc. La maggior parte
2503 di queste scelte possono essere lasciate alla decisione di LilyPond, ma in
2504 alcuni casi si può voler forzare una direzione o un posizionamento particolari.
2507 * Indicatori di direzione delle articolazioni::
2508 * La proprietà direction::
2511 @node Indicatori di direzione delle articolazioni
2512 @unnumberedsubsubsec Indicatori di direzione delle articolazioni
2513 @translationof Articulation direction indicators
2515 Per impostazione predefinita alcune direzioni sono sempre in su o sempre in
2516 giù (es: le dinamiche o la corona), mentre altri elementi possono alternare
2517 tra su e giù in base alla direzione del gambo (come le legature di portamento
2520 @c TODO Add table showing these
2522 L'azione predefinita può essere modificata anteponendo all'articolazione
2523 un @emph{indicatore di direzione}. Sono disponbibili tre indicatori
2524 di direzione: @code{^} (ovvero @qq{su}), @code{_} (ovvero @qq{giù})
2525 e @code{-} (ovvero @qq{usa la direzione predefinita}). L'indicatore di
2526 direzione solitamente può essere omesso, nel qual caso viene supposto @code{-},
2527 ma un indicatore di direzione è @strong{sempre} richiesto prima di
2530 @item comandi @code{\tweak}
2531 @item comandi @code{\markup}
2532 @item comandi @code{\tag}
2533 @item stringhe di testo, ovvero -"stringa"
2534 @item istruzioni di diteggiatura, come @w{@code{-1}}
2535 @item scorciatoie delle articolazioni, come @w{@code{-.}}, @w{@code{->}}, @w{@code{--}}
2538 Gli indicatori di direzione hanno effetto soltanto sulla nota vicina:
2540 @lilypond[verbatim,quote]
2549 @node La proprietà direction
2550 @unnumberedsubsubsec La proprietà direction
2551 @translationof The direction property
2553 La posizione della direzione di molti oggetti della formattazione è regolata
2554 dalla proprietà @code{direction}.
2556 Il valore della proprietà @code{direction} può essere impostata su @code{1},
2557 ovvero @qq{su} o @qq{sopra}, oppure su @w{@code{-1}}, ovvero @qq{giù} o
2558 @qq{sotto}. I simboli @code{UP} e @code{DOWN} possono essere usati al
2559 posto di @code{1} e @w{@code{-1}}. La direzione predefinita può essere
2560 specificata impostando @code{direction} su @code{0} o @code{CENTER}.
2561 Altrimenti, in molti casi esistono comandi predefiniti per specificare la
2562 direzione. Questo hanno la forma
2565 @code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral}
2569 dove @code{\xxxNeutral} significa @qq{usa la direzione predefinita}.
2570 Vedi @rlearning{Oggetti interni al rigo}.
2572 In pochi casi, per esempio l'arpeggio, il valore della proprietà @code{direction}
2573 può specificare se l'oggetto debba essere posizionato a destra o a sinistra
2574 dell'oggetto genitore. In questo caso @w{@code{-1}} o @code{LEFT} significano
2575 @qq{a sinistra} e @code{1} o @code{RIGHT} significano @qq{a destra}.
2576 @code{0} o @code{CENTER} significano @qq{usa la direzione predefinita}.
2579 These all have side-axis set to #X
2580 AmbitusAccidental - direction has no effect
2582 StanzaNumber - not tried
2583 TrillPitchAccidental - not tried
2584 TrillPitchGroup - not tried
2587 Queste indicazioni hanno effetto su tutte le note finché non vengono annullate.
2589 @lilypond[verbatim,quote]
2600 Nella musica polifonica, generalmente è meglio specificare una voce esplicita
2601 invece di cambiare la direzione di un oggetto. Maggiori informazioni
2602 in @ref{Multiple voices}.
2605 Manuale di apprendimento:
2606 @rlearning{Oggetti interni al rigo}.
2608 Guida alla notazione:
2609 @ref{Multiple voices}.
2612 @node Distanze e misurazioni
2613 @subsection Distanze e misurazioni
2614 @translationof Distances and measurements
2616 @cindex distances, absolute
2617 @cindex distances, scaled
2624 Le distanze in LilyPond sono di due tipi: assolute e proporzionali.
2626 Le distanze assolute si usano per specificare i margini, le indentazioni e
2627 altri dettagli della formattazione di pagina; per impostazione predefinita
2628 sono specificate in millimetri. Le distanze possono essere specificate in
2629 altre unità di misura appendendo alla quantità @code{\mm}, @code{\cm},
2630 @code{\in}@tie{}(inch, ovvero pollici) o @code{\pt}@tie{}(punti, 1/72.27 di
2631 un pollice). Le distanze della formattazione di pagina possono essere
2632 specificate anche in unità di misura proporzionali (vedi paragrafo seguente)
2633 appendendo @code{\staff-space} alla quantità. La formattazione di pagina è
2634 trattata dettagliatamente in @ref{Page layout}.
2636 Le distanze proporzionali sono sempre specificate in unità di spazi
2637 rigo o, raramente, mezzo spazio rigo. Lo spazio rigo è la distanza
2638 tra due linee del rigo adiacenti. Il valore predfinito può essere
2639 modificato globalmente impostando la dimensione globale del rigo oppure
2640 può essere sovrascritto localmente cambiando la proprietà @code{staff-space}
2641 di @code{StaffSymbol}. Le distanze proporzionali vengono ridimensionate
2642 automaticamente insieme a qualsiasi cambiamento nella dimensione globale
2643 del rigo o nella proprietà @code{staff-space} di @code{StaffSymbol}, mentre i
2644 tipi di carattere vengono ridimensionati automaticamente soltanto con i
2645 cambiamenti alla dimensione globale del rigo. Questa permette quindi di
2646 variare facilmente la dimensione complessiva di una partitura. I metodi
2647 per impostare la dimensione globale del rigo sono descritti in
2648 @ref{Setting the staff size}.
2652 Se soltanto una sezione di una partitura deve essere elaborata su una
2653 scala diversa, per esempio una sezione ossia o una nota a piè di pagina,
2654 non si può cambiare la dimensione globale del rigo perché ciò avrebbe
2655 effetto sull'intera partitura. In questi casi bisogna modificare sia
2656 la proprietà @code{staff-space} di @code{StaffSymbol} sia la dimensione
2657 dei tipi di carattere. Esiste una funzione Scheme, @code{magstep}, che
2658 permette di convertire una modifica della dimensione del tipo di carattere
2659 nella modifica equivalente in @code{staff-space}. Questa funzione è spiegata
2660 e esemplificata in @rlearning{Lunghezza e spessore degli oggetti}.
2663 Manuale di apprendimento:
2664 @rlearning{Lunghezza e spessore degli oggetti}.
2666 Guida alla notazione:
2668 @ref{Setting the staff size}.
2672 @subsection Dimensioni
2673 @translationof Dimensions
2676 @cindex riquadro intorno all'oggetto
2678 Le dimensioni di un oggetto grafico specificano le posizioni delle estremità
2679 sinistra e destra e di quelle inferiore e superiore del riquadro in cui sono
2680 iscritti gli oggetti come distanze dal punto di riferimento degli oggetti in
2681 unità di spazi rigo. Queste posizioni sono solitamente scritte come due
2682 coppie Scheme. Per esempio, il comando di testo @code{\with-dimensions} prende
2683 tre argomenti: i primi due sono una coppia Scheme che indica le posizioni
2684 delle estremità sinistra e destra e un'altra coppia Scheme che indica le
2685 posizioni delle estremità inferiore e superiore:
2688 \with-dimensions #'(-5 . 10) #'(-3 . 15) @var{arg}
2691 Questo comando specifica un riquadro per @var{arg} il cui margine sinistro
2692 si trova a -5, il margine destro a 10, il margine inferiore a -3 e quello
2693 superiore a 15, tutti misurati a partire dal punto di riferimento degli
2694 oggetti in unità di spazi rigo.
2697 Guida alla notazione:
2698 @ref{Distances and measurements}.
2701 @node Proprietà del simbolo del rigo
2702 @subsection Proprietà del simbolo del rigo
2703 @translationof Staff symbol properties
2705 @cindex cambiare il simbolo del rigo
2706 @cindex disegnare il simbolo del rigo
2707 @cindex simbolo del rigo, impostazione del
2709 @c TODO Extend or remove this section. See also NR 1.6.2 Staff symbol
2710 @c Need to think of uses for these properties. Eg 'line-positions
2711 @c is used in a snippet to thicken centre line.
2712 @c If retained, add @ref to here in 1.6.2 -td
2714 La posizione verticale e il numero delle linee del rigo possono essere
2715 definiti contemporaneamente. Come mostra l'esempio seguente, le posizioni
2716 delle note non sono influenzate dalle posizioni delle linee del rigo.
2718 @warning{La proprietà @code{'line-positions} sovrascrive la proprietà
2719 @code{'line-count}. Il numero di linee del rigo è definito implicitamente
2720 dal numero di elementi nella lista di valori per @code{'line-positions}.}
2722 @lilypond[verbatim,quote]
2724 \override StaffSymbol.line-positions = #'(7 3 0 -4 -6 -7)
2726 \relative { a4 e' f b | d1 }
2729 La larghezza di un rigo può essere modificata. Le unità sono spazi
2730 rigo. La spaziatura degli oggetti dentro il rigo non è influenzata
2731 da questa impostazione.
2733 @lilypond[verbatim,quote]
2735 \override StaffSymbol.width = #23
2737 \relative { a4 e' f b | d1 }
2742 @subsection Estensori
2743 @translationof Spanners
2745 Molti oggetti della notazione musicale si estendono per varie note o addirittura
2746 per molte battute. Ne sono un esempio le legature di portamento, le travature,
2747 le parentesi dei gruppi irregolari, quelle delle volte delle ripetizioni, i
2748 crescendi, i trilli e i glissandi. Tali oggetti vengono chiamati @qq{estensori}
2749 (o spanner, in inglese) e hanno delle proprietà speciali per regolare il loro
2750 aspetto e comportamento. Alcune di queste proprietà sono comuni a tutti gli
2751 estensori; altre sono limitate a un sottoinsieme di estensori.
2753 Tutti gli estensori supportano l'interfaccia @code{spanner-interface}. Ma pochi,
2754 essenzialmente quelli che disegnano una linea dritta tra due oggetti, supportano
2755 anche l'interfaccia @code{line-spanner-interface}.
2758 * Uso di spanner-interface::
2759 * Uso di line-spanner-interface::
2762 @node Uso di spanner-interface
2763 @unnumberedsubsubsec Uso di @code{spanner-interface}
2764 @translationof Using the spanner-interface
2766 Questa interfaccia fornisce due proprietà che si applicano a vari estensori.
2768 @subsubsubheading La proprietà @code{minimum-length}
2770 La lunghezza minima dell'estensore è specificata dalla proprietà
2771 @code{minimum-length}. Aumentando questa si aumenta necessariamente
2772 anche la spaziatura delle note comprese tra le due estremità.
2773 Tuttavia questa modifica non ha effetto su molti estensori, perché
2774 la loro lunghezza è determinata da altre considerazioni. Di seguito
2775 vengono mostrati alcuni esempi in cui è in funzione.
2777 @lilypond[verbatim,quote,fragment]
2780 % aumenta la lunghezza della legatura di valore
2781 -\tweak minimum-length #5
2785 @lilypond[verbatim,quote]
2786 \relative \compressMMRests {
2789 % aumenta la lunghezza della misura con pausa
2790 \once \override MultiMeasureRest.minimum-length = #20
2796 @lilypond[verbatim,quote]
2799 % aumenta la lunghezza della forcella
2800 \override Hairpin.minimum-length = #20
2805 Questa modifica può essere usata anche per aumentare la lunghezza delle
2806 legature di portamento e di frase:
2808 @lilypond[verbatim,quote]
2812 -\tweak minimum-length #5
2817 -\tweak minimum-length #5
2822 Per alcuni oggetti della formattazione, la proprietà @code{minimum-length}
2823 diventa effettiva solo se viene richiamata esplicitamente la procedura
2824 @code{set-spacing-rods}. Per farlo, la proprietà @code{springs-and-rods}
2825 deve essere impostata su @code{ly:spanner::set-spacing-rods}. Per esempio,
2826 la lunghezza minima di un glissando cambia solo quando si imposta la
2827 proprietà @code{springs-and-rods}:
2829 @lilypond[verbatim,fragment,quote]
2833 % non funziona da sola
2834 \once \override Glissando.minimum-length = #20
2837 % funziona solo quando entrambe le modifiche sono presenti
2838 \once \override Glissando.minimum-length = #20
2839 \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods
2843 Lo stesso vale per l'oggetto @code{Beam}:
2845 @lilypond[verbatim,fragment,quote]
2846 % non funziona da sola
2847 \once \override Beam.minimum-length = #20
2850 % funziona solo quando entrambe le modifiche sono presenti
2851 \once \override Beam.minimum-length = #20
2852 \once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods
2856 @subsubsubheading La proprietà @code{to-barline}
2858 La seconda proprietà utile di @code{spanner-interface} è
2859 @code{to-barline}. Il valore predefinito (vero) fa sì che le forcelle e
2860 gli altri estensori che terminano sulla prima nota di una misura si estendano
2861 invece fino alla stanghetta immediatamente precedente. Se impostata su falso,
2862 l'estensore andrà oltre la stanghetta e terminerà sulla nota stessa:
2864 @lilypond[verbatim,quote]
2866 a' \< a a a a \! a a a \break
2867 \override Hairpin.to-barline = ##f
2868 a \< a a a a \! a a a
2872 Questa proprietà non funziona con tutti gli estensori. Per esempio,
2873 impostandola su @code{#t} non si produce alcun effetto su legature di
2874 portamento o di frase, o su altri estensori per i quali terminare sulla
2875 stanghetta non avrebbe senso.
2878 @node Uso di line-spanner-interface
2879 @unnumberedsubsubsec Uso di @code{line-spanner-interface}
2880 @translationof Using the line-spanner-interface
2882 Gli oggetti che supportano l'interfaccia @code{line-spanner-interface} comprendono:
2885 @item @code{DynamicTextSpanner}
2886 @item @code{Glissando}
2887 @item @code{TextSpanner}
2888 @item @code{TrillSpanner}
2889 @item @code{VoiceFollower}
2892 La routine responsabile del disegno di questi estensori è
2893 @code{ly:line-spanner::print}. Essa determina la posizione esatta
2894 delle due estremità e disegna una linea tra di esse, nello stile
2895 richiesto. Le posizioni delle due estremità dell'estensore sono
2896 calcolate al volo, ma è possibile sovrascrivere le loro coordinate
2897 Y. Le proprietà da specificare sono annidate di due livelli nella
2898 gerarchia della proprietà, ma la sintassi del comando @code{\override}
2899 è piuttosto semplice:
2901 @lilypond[quote,fragment,verbatim]
2903 \once \override Glissando.bound-details.left.Y = #3
2904 \once \override Glissando.bound-details.right.Y = #-2
2908 Le unità di misura della proprietà @code{Y} sono gli spazi rigo
2909 (@code{staff-space}), con la linea centrale del rigo che è il
2910 punto zero. Per il glissando, questo è il valore per @code{Y} alla
2911 coordinata X che corrisponde al punto centrale della testa di ogni
2912 nota, se si immagina che la linea si estenda fino a là.
2914 Se @code{Y} non è impostato, il valore viene calcolato dalla posizione
2915 verticale del punto di attacco corrispondente dell'estensore.
2917 In caso di un'interruzione di linea, i valori per le estremità sono
2918 specificati dalle sottoliste @code{left-broken} e @code{right-broken}
2919 di @code{bound-details}. Per esempio:
2921 @lilypond[ragged-right,fragment,verbatim,quote]
2922 \override Glissando.breakable = ##t
2923 \override Glissando.bound-details.right-broken.Y = #-3
2924 c''1 \glissando \break
2929 Altre proprietà delle sottoliste @code{left} e @code{right} della proprietà
2930 @code{bound-details} possono essere modificate nello stesso modo di @code{Y}:
2934 Questa imposta la coordinata Y dell'estremità, che si sposta di un certo
2935 numero di @code{staff-space} dalla linea centrale del rigo. Per impostazione
2936 predefinita, è il centro dell'oggetto a cui è associato, dunque un glissando
2937 punta al centro verticale della testa di nota.
2939 Nel caso di estensori orizzontali, come quelli del testo e del trillo,
2940 il suo valore è fisso su 0.
2943 Questa determina dove la linea inizia e termina nella direzione X,
2944 relativa all'oggetto a cui è associato. Quindi un valore di @w{@code{-1}} (o
2945 @code{LEFT}) fa sì che la linea inizi/termini sul lato sinistro della testa
2946 della nota a cui è attaccata.
2949 Questa è la coordinata X assoluta dell'estremità. Viene solitamente calcolata
2950 al volo e sovrascriverla produce solitamente un effetto poco utile.
2953 Gli estensori della linea possono avere dei simboli all'inizio o alla fine,
2954 contenuti in questa sottoproprietà. Questa proprietà è per uso interno;
2955 si raccomanda di usare @code{text} al suo posto.
2958 Questo è un testo markup che viene valutato per produrre lo stampo (stencil,
2959 in inglese). Viene usato per mettere @i{cresc.}, @i{tr} e altro testo su
2960 estensori orizzontali.
2962 @lilypond[quote,ragged-right,fragment,verbatim]
2963 \override TextSpanner.bound-details.left.text
2964 = \markup { \small \bold Rall. }
2965 \relative { c''2\startTextSpan b c a\stopTextSpan }
2968 @item stencil-align-dir-y
2969 @item stencil-offset
2970 Se non si imposta una di queste proprietà, lo stampo viene messo semplicemente
2971 all'estremità, centrato sulla linea, come definito nelle sottoproprietà
2972 @code{X} e @code{Y}. Impostando @code{stencil-align-dir-y} o
2973 @code{stencil-offset} il simbolo si sposterà verticalmente sul margine
2974 rispetto all'estremità della linea:
2976 @lilypond[quote,fragment,verbatim]
2977 \override TextSpanner.bound-details.left.stencil-align-dir-y = #-2
2978 \override TextSpanner.bound-details.right.stencil-align-dir-y = #UP
2980 \override TextSpanner.bound-details.left.text = #"ggg"
2981 \override TextSpanner.bound-details.right.text = #"hhh"
2983 \relative { c'4^\startTextSpan c c c \stopTextSpan }
2986 Nota bene che valori negativi spostano il testo in @emph{su}, contrariamente
2987 a quanto si potrebbe pensare, perché un valore di @w{@code{-1}} o
2988 @code{DOWN} fa sì che si allinei il margine @emph{inferiore} del testo con
2989 la linea dell'estensore. Un valore di @code{1} o @code{UP} allinea il margine
2990 superiore del testo con la linea dell'estensore.
2993 Impostando questa sottoproprietà su @code{#t} viene generata la punta di una
2994 freccia a un'estremità della linea.
2997 Questa sottoproprietà regola lo spazio tra l'estremità della linea specificata
2998 e la fine reale. Senza padding, un glissando inizia e termina nel centro della
3003 La funzione musicale @code{\endSpanners} termina prematuramente l'estensore
3004 che inizia nella nota immediatamente seguente. Viene terminato esattamente
3005 dopo una nota o alla stanghetta seguente se @code{to-barline} è impostato
3006 su vero e c'è una stanghetta prima della nota successiva.
3008 @lilypond[verbatim,quote,ragged-right]
3011 c2 \startTextSpan c2 c2
3017 Quando si usa @code{\endSpanners} non è necessario chiudere
3018 \startTextSpan con \stopTextSpan, né è necessario chiudere le
3019 forcelle con @code{\!}.
3022 Guida al funzionamento interno:
3023 @rinternals{TextSpanner},
3024 @rinternals{Glissando},
3025 @rinternals{VoiceFollower},
3026 @rinternals{TrillSpanner},
3027 @rinternals{line-spanner-interface}.
3030 @node Visibilità degli oggetti
3031 @subsection Visibilità degli oggetti
3032 @translationof Visibility of objects
3034 @cindex objects, visibility of
3035 @cindex grobs, visibility of
3036 @cindex visibility of objects
3038 Esistono quattro modi principali per regolare la visibilità degli oggetti della
3039 formattazione: si può togliere il loro stampo, possono essere resi trasparenti,
3040 possono essere colorati di bianco o si può sovrascrivere la loro proprietà
3041 @code{break-visibility}. Le prime tre sono valide per tutti gli oggetti
3042 della formattazione; l'ultimo solo per alcuni, gli oggetti che possono essere
3043 @emph{interrotti}, o spezzati, (break, in inglese).
3044 Il Manuale di apprendimento contiene un'introduzione a queste quattro tecniche
3045 in @rlearning{Visibilità e colore degli oggetti}.
3047 Esistono anche altre tecniche che sono specifiche di alcuni oggetti della
3048 formattazione. Queste sono trattate in @ref{Special considerations}.
3051 * Soppressione dello stampo::
3052 * Rendere gli oggetti trasparenti::
3053 * Dipingere gli oggetti di bianco::
3054 * Uso di break-visibility::
3055 * Considerazioni speciali::
3059 @node Soppressione dello stampo
3060 @unnumberedsubsubsec Soppressione dello stampo
3061 @translationof Removing the stencil
3063 @cindex stencil, soppressione
3064 @cindex stampo, soppressione
3067 Tutti gli oggetti della formattazione hanno una proprietà @code{stencil} (in
3068 italiano, stampo). Per impostazione predefinita questa è impostata sulla
3069 funzione specifica che disegna quell'oggetto. Se questa proprietà viene
3070 sovrascritta e impostata su @code{#f}, non verrà richiamata alcuna funzione
3071 e l'oggetto non verrà disegnato. L'azione predefinita può essere ripristinata
3074 @lilypond[quote,fragment,verbatim]
3076 \override Score.BarLine.stencil = ##f
3078 \revert Score.BarLine.stencil
3082 Questa operazione piuttosto comune ha una scorciatoia, @code{\omit}:
3084 @lilypond[quote,fragment,verbatim]
3088 \undo \omit Score.BarLine
3093 @node Rendere gli oggetti trasparenti
3094 @unnumberedsubsubsec Rendere gli oggetti trasparenti
3095 @translationof Making objects transparent
3097 @cindex transparenti, rendere gli oggetti
3100 Tutti gli oggetti della formattazione hanno una proprietà @code{transparent}
3101 la cui impostazione predefinita è @code{#f} (falso). Se impostata su @code{#t}
3102 (vero), l'oggetto occupa sempre lo spazio ma è reso invisibile.
3104 @lilypond[quote,fragment,verbatim]
3106 \once \override NoteHead.transparent = ##t
3110 Questa operazione piuttosto comune ha una scorciatoia, @code{\hide}:
3112 @lilypond[quote,fragment,verbatim]
3114 \once \hide NoteHead
3119 @node Dipingere gli oggetti di bianco
3120 @unnumberedsubsubsec Dipingere gli oggetti di bianco
3121 @translationof Painting objects white
3123 @cindex oggetti, colorare
3124 @cindex colorare gli oggetti
3126 @cindex ordine di stampa
3127 @cindex sovrascrivere gli oggetti
3128 @cindex oggetti, sovrascrivere
3129 @cindex grob, sovrascrivere
3131 Tutti gli oggetti della formattazione hanno una proprietà del colore il cui
3132 valore predefinito è @code{black} (nero). Se questa viene sovrascritta con
3133 @code{white} (bianco) l'oggetto non sarà più distinguibile dallo sfondo. Tuttavia
3134 se l'oggetto attraversa altri oggetti, il colore dei punti di contatto saranno
3135 determinati dall'ordine in cui sono disegnati, e ciò potrebbe lasciare
3136 un'immagine @qq{spettrale} dell'oggetto bianco, come mostrato qui:
3138 @lilypond[quote,fragment,verbatim]
3139 \override Staff.Clef.color = #white
3143 Ciò può essere evitato cambiando l'ordine di stampa degli oggetti.
3144 Tutti gli oggetti della formattazione hanno una proprietà @code{layer}
3145 (strato) che deve essere impostata su un numero intero.
3146 Gli oggetti col valore più basso di @code{layer} sono disegnati
3147 per primi, poi vengono disegnati quelli con valori via via più
3148 alti, dunque gli oggetti con valori più alti stanno sopra gli
3149 oggetti con valori più bassi. Per impostazione predefinita alla
3150 maggior parte degli oggetti viene assegnato un valore di @code{layer}
3151 pari a @code{1}, sebbene ad alcuni oggetti, tra cui @code{StaffSymbol} e
3152 @code{BarLine}, sia assegnato un valore di @code{0}. L'ordine con cui
3153 vengono stampati oggetti con lo stesso valore di @code{layer} è indeterminato.
3155 Nell'esempio precedente la chiave bianca, con un valore predefinito di
3156 @code{layer} di @code{1}, viene disegnato dopo le linee del rigo (il cui
3157 valore predefinito di @code{layer} è @code{0}), dunque sta sopra di esse.
3158 Per cambiare tale comportamento, all'oggetto @code{Clef} deve essere assegnato
3159 un valore di @code{layer} inferiore, per esempio @w{@code{-1}}, in modo che
3160 venga disegnato prima:
3162 @lilypond[quote,fragment,verbatim]
3163 \override Staff.Clef.color = #white
3164 \override Staff.Clef.layer = #-1
3168 @node Uso di break-visibility
3169 @unnumberedsubsubsec Uso di break-visibility
3170 @translationof Using break-visibility
3172 @c TODO Add making other objects breakable
3174 @cindex break-visibility
3176 La maggior parte degli oggetti della formattazione sono stampati una
3177 volta sola, ma alcuni come le stanghette, le chiavi, le indicazioni
3178 di tempo e le armature di chiave possono dover essere stampate
3179 due volte quando si verifica un'interruzione di linea -- una volta al
3180 termine della linea e di nuovo all'inizio della linea successiva.
3181 Tali oggetti, chiamati @emph{spezzabili}, (dall'inglese breakable)
3182 hanno una proprietà, @code{break-visibility}, per regolare
3183 la loro visibilità nelle tre posizioni in cui potrebbero apparire:
3184 all'inizio di una linea, in mezzo a una linea se vengono modificati
3185 e al termine di una linea se un cambiamento ha luogo lì.
3187 Per esempio, l'indicazione di tempo viene stampata all'inizio della
3188 prima linea, ma da nessuna altra parte a meno che non cambi e allora
3189 verrà stampata nel punto in cui il cambiamento ha luogo. Se tale
3190 cambiamento si verifica al termine di una linea, la nuova indicazione
3191 di tempo verrà stampata all'inizio della linea successiva e un'indicazione
3192 di tempo di precauzione verrà stampata anche al termine della linea precedente.
3194 Tale comportamento è regolato dalla proprietà @code{break-visibility}, che
3195 è spiegata in @rlearning{Visibilità e colore degli oggetti}. Questa proprietà
3196 prende un vettore di tre valori booleani che, in ordine, determinano se
3197 l'oggetto è stampato al termine, in mezzo o all'inizio di una linea. O, per
3198 essere più precisi, prima di un'interruzione di linea, dove non c'è
3199 un'interruzione di linea oppure dopo un'interruzione di linea.
3201 Altrimenti, queste otto combinazoni possono essere specificate da
3202 funzioni predefinite, definite in @file{scm/output-lib.scm},
3203 dove le ultime tre colonne indicano se gli oggetti della formattazione
3204 saranno visibili nelle posizioni mostrate nell'intestazione delle colonne:
3206 @multitable {@code{begin-of-line-invisible}} {@code{#(#t #t #t)}} {Prima} {Senza} {Dopo}
3207 @headitem Funzione @tab Forma @tab Prima di @tab Senza @tab Dopo
3208 @headitem @tab vettoriale @tab interruzione @tab interruzione @tab interruzione
3210 @item @code{all-visible} @tab @code{#(#t #t #t)} @tab sì @tab sì @tab sì
3211 @item @code{begin-of-line-visible} @tab @code{#(#f #f #t)} @tab no @tab no @tab sì
3212 @item @code{center-visible} @tab @code{#(#f #t #f)} @tab no @tab sì @tab no
3213 @item @code{end-of-line-visible} @tab @code{#(#t #f #f)} @tab sì @tab no @tab no
3214 @item @code{begin-of-line-invisible} @tab @code{#(#t #t #f)} @tab sì @tab sì @tab no
3215 @item @code{center-invisible} @tab @code{#(#t #f #t)} @tab sì @tab no @tab sì
3216 @item @code{end-of-line-invisible} @tab @code{#(#f #t #t)} @tab no @tab sì @tab sì
3217 @item @code{all-invisible} @tab @code{#(#f #f #f)} @tab no @tab no @tab no
3220 Le impostazioni predefinite di @code{break-visibility} dipendono dall'oggetto
3221 della formattazione. La tabella seguente mostra tutti gli oggetti rilevanti
3222 che sono influenzati da @code{break-visibility} e l'impostazione predefinita
3223 di questa proprietà:
3225 @multitable @columnfractions .3 .3 .4
3227 @headitem Oggetto formattazione @tab Contesto abituale @tab Impostazione predefinita
3229 @c omit Ambitus as it appears not to be affected by break-visibility -td
3230 @c @item @code{Ambitus} @tab as specified @tab @code{begin-of-line-visible}
3231 @item @code{BarLine} @tab @code{Score} @tab calcolato
3232 @item @code{BarNumber} @tab @code{Score} @tab @code{begin-of-line-visible}
3233 @c omit the following item until it can be explained -td
3234 @c @item @code{BreakAlignGroup} @tab @code{Score} @tab calculated
3235 @item @code{BreathingSign} @tab @code{Voice} @tab @code{begin-of-line-invisible}
3236 @item @code{Clef} @tab @code{Staff} @tab @code{begin-of-line-visible}
3237 @item @code{Custos} @tab @code{Staff} @tab @code{end-of-line-visible}
3238 @item @code{DoublePercentRepeat} @tab @code{Voice} @tab @code{begin-of-line-invisible}
3239 @item @code{KeyCancellation} @tab @code{Staff} @tab @code{begin-of-line-invisible}
3240 @item @code{KeySignature} @tab @code{Staff} @tab @code{begin-of-line-visible}
3241 @c omit LeftEdge until it can be explained -td
3242 @c @item @code{LeftEdge} @tab @code{Score} @tab @code{center-invisible}
3243 @item @code{ClefModifier} @tab @code{Staff} @tab @code{begin-of-line-visible}
3244 @item @code{RehearsalMark} @tab @code{Score} @tab @code{end-of-line-invisible}
3245 @item @code{TimeSignature} @tab @code{Staff} @tab @code{all-visible}
3249 L'esempio successivo mostra l'uso della forma vettoriale per regolare la
3250 visibilità delle stanghette:
3252 @lilypond[quote,verbatim,ragged-right]
3256 % Toglie la stanghetta al termine della linea corrente
3257 \once \override Score.BarLine.break-visibility = ##(#f #t #t)
3264 Sebbene tutti i componenti del vettore usati per sovrascrivere
3265 @code{break-visibility} debbano essere presenti, non tutti sono
3266 funzionanti con qualsiasi oggetto della formattazione, e alcune
3267 combinazioni potrebbero perfino dare errore. Esistono le seguenti
3271 @item Non è possibile stampare le stanghette all'inizio di una linea.
3272 @item Un numero di battuta non può essere stampato all'inizio della prima
3273 linea a meno che non sia impostato per essere diverso da 1.
3274 @item Clef -- vedi sotto.
3275 @item Le ripetizioni percentuali doppie sono o tutte stampate o tutte soppresse.
3276 Usare begin-of-line-invisible per stampare e all-invisible per sopprimere.
3277 @item Key signature -- vedi sotto.
3278 @item ClefModifier -- vedi sotto.
3282 @node Considerazioni speciali
3283 @unnumberedsubsubsec Considerazioni speciali
3284 @translationof Special considerations
3286 @subsubsubheading Visibilità dopo un cambio esplicito
3288 @cindex armatura di chiave, visibilità dopo un cambio esplicito
3289 @cindex explicitKeySignatureVisibility
3290 @cindex chiave, visibilità dopo un cambio esplicito
3291 @cindex explicitClefVisibility
3293 La proprietà @code{break-visibility} controlla la visibilità delle
3294 armature di chiave e dei cambi di chiave solo all'inizio delle linee,
3295 ovvero dopo un'interruzione di linea. Non ha effetto sulla visibilità
3296 dell'armatura di chiave o della chiave che seguono un cambio esplicito
3297 dell'armatura o della chiave all'interno o alla fine di una linea.
3298 Nell'esempio seguente l'armatura di chiave che segue il cambio esplicito
3299 a Si bemolle maggiore è ancora visibile, anche se @code{all-invisible}
3302 @lilypond[quote,verbatim,ragged-right]
3306 % Tentativo di eliminazione di tutte le armature di chiave
3307 \override Staff.KeySignature.break-visibility = #all-invisible
3316 La visibilità di questi cambi espliciti di armatura e di chiave è
3317 controllata dalle proprietà @code{explicitKeySignatureVisibility} e
3318 @code{explicitClefVisibility}. Sono equivalenti alla proprietà
3319 @code{break-visibility} e prendono entrambe come argomento un vettore
3320 di tre booleani o le funzioni predefinite elencate prima, proprio
3321 come @code{break-visibility}. Entrambe le proprietà appartengono al
3322 contesto Staff, non agli oggetti della formattazione stessi, dunque
3323 si impostano col comando @code{\set}. La loro impostazione predefinita
3324 è @code{all-visible}. Queste proprietà regolano solo la visibilità
3325 di armature di chiave e chiavi risultanti da cambi espliciti e non
3326 quelli all'inizio delle linee; per eliminare questi ultimi bisogna
3327 sempre sovrascrivere @code{break-visibility} nell'oggetto appropriato.
3329 @lilypond[quote,verbatim,ragged-right]
3333 \set Staff.explicitKeySignatureVisibility = #all-invisible
3334 \override Staff.KeySignature.break-visibility = #all-invisible
3342 @subsubsubheading Visibilità dei bequadri
3344 Per eliminare i bequadri stampati su un cambio di chiave esplicito,
3345 impostare la proprietà del contesto Staff @code{printKeyCancellation}
3348 @lilypond[quote,verbatim,ragged-right]
3352 \set Staff.explicitKeySignatureVisibility = #all-invisible
3353 \set Staff.printKeyCancellation = ##f
3354 \override Staff.KeySignature.break-visibility = #all-invisible
3362 Con queste modifiche restano solo le alterazioni accanto alle note per
3363 indicare il cambio di armatura.
3365 Nota bene che quando si cambia l'armatura su Do@tie{}maggiore o La@tie{}minore
3366 i bequadri sono l'@emph{unica} indicazione del cambio di chiave. In questo
3367 caso impostando @code{printKeyCancellation} su @code{#f} non si ottiene
3370 @lilypond[quote,verbatim,ragged-right]
3374 \set Staff.explicitKeySignatureVisibility = #all-invisible
3375 \set Staff.printKeyCancellation = ##f
3383 Per sopprimere i bequadri anche quando la tonalità passa a
3384 Do@tie{}maggiore o La@tie{}minore, sovrascrivere la
3385 visibilità del grob @code{KeyCancellation}:
3387 @lilypond[quote,verbatim,ragged-right]
3391 \set Staff.explicitKeySignatureVisibility = #all-invisible
3392 \override Staff.KeyCancellation.break-visibility = #all-invisible
3400 @c TODO Add visibility of cautionary accidentals before notes
3402 @subsubsubheading Battute automatiche
3404 @cindex automaticBars
3405 @cindex stanghette, soppressione
3407 In un caso particolare, la stampa delle stanghette può essere disattivata
3408 impostando la proprietà @code{automaticBars} nel contesto Score. Se impostata
3409 su @code{#f}, le stanghette non verranno stampate automaticamente; devono
3410 invece essere create esplicitamente con un comando @code{\bar}. Diversamente
3411 dal comando predefinito @code{\cadenzaOn}, le misure vengono comunque contate.
3412 La generazione delle battute riprenderà in base a quel conteggio se questa
3413 proprietà viene poi impostata su @code{#t}. Se impostata su @code{#f}, le
3414 interruzioni di linea possono trovarsi solo su comandi @code{\bar} espliciti.
3418 @subsubsubheading Chiavi trasposte
3420 @cindex chiavi trasposte, visibilità delle
3421 @cindex visibilità delle chiavi trasposte
3422 @cindex chiavi, visibilità della trasposizione
3424 Il piccolo simbolo di trasposizione sulle chiavi trasposte è prodotto
3425 dall'oggetto di formattazione @code{ClefModifier}. La sua visibilità
3426 è ereditata automaticamente dall'oggetto @code{Clef}, dunque non è necessario
3427 applicare una modifica di @code{break-visibility} agli oggetti @code{ClefModifier}
3428 per sopprimere i simboli di trasposizione per le chiavi invisibili.
3430 Per cambi di chiave espliciti, la proprietà @code{explicitClefVisibility}
3431 regola sia il simbolo della chiave che qualsiasi simbolo di trasposizione
3435 Manuale di apprendimento:
3436 @rlearning{Visibilità e colore degli oggetti}.
3439 @node Stili della linea
3440 @subsection Stili della linea
3441 @translationof Line styles
3443 Alcune indicazioni esecutive, come @i{rallentando}, @i{accelerando} e
3444 @i{trilli} sono scritte in forma testuale e sono estese per varie misure
3445 tramite delle linee, talvolta puntate o ondulate.
3447 Queste usano tutte le stesse routine del glissando per disegnare i
3448 testi e le linee, dunque il loro comportamento viene modificato nello
3449 stesso modo. Viene fatto con un estensore, e la routine responsabile
3450 del disegno degli estensori è @code{ly:line-spanner::print}. Questa
3451 routine determina la posizione esatta dei due @i{punti di estensione} e
3452 disegna una linea tra loro, nello stile richiesto.
3454 Ecco un esempio che mostra i vari stili di linea disponibili, e come
3457 @lilypond[ragged-right,verbatim,quote]
3460 \once \override Glissando.style = #'dashed-line
3462 \override Glissando.style = #'dotted-line
3464 \override Glissando.style = #'zigzag
3466 \override Glissando.style = #'trill
3471 I punti delle estremità dell'estensore sono calcolati al volo per ogni
3472 oggetto grafico, ma è possibile sovrascriverli:
3475 @lilypond[ragged-right,verbatim,quote]
3478 \once \override Glissando.bound-details.right.Y = #-2
3483 Il valore di @code{Y} è impostato su @w{@code{-2}} per l'estremità
3484 destra. Quella sinistra può essere aggiustata ugualmente specificando
3485 @code{left} invece di @code{right}.
3487 Se @code{Y} non è impostata, il valore è calcolato a partire dalla posizione
3488 verticale dei punti di attacco sinistro e destro dell'estensore.
3490 Sono possibili altre modifiche degli estensori; maggiori dettagli in
3494 @node Rotazione degli oggetti
3495 @subsection Rotazione degli oggetti
3496 @translationof Rotating objects
3498 Sia gli oggetti della formattazione che il testo compreso in un blocco markup
3499 possono essere ruotati di qualsiasi angolo in quasi qualsiasi punto, ma il
3500 metodo per farlo cambia.
3503 * Rotazione degli oggetti della formattazione::
3504 * Rotazione del testo::
3507 @node Rotazione degli oggetti della formattazione
3508 @unnumberedsubsubsec Rotazione degli oggetti della formattazione
3509 @translationof Rotating layout objects
3511 @cindex rotazione degli oggetti
3512 @cindex oggetti, rotazione
3514 Tutti gli oggetti della formattazione che supportano l'interfaccia
3515 @code{grob-interface} possono essere ruotati impostando la loro
3516 proprietà @code{rotation}. Questa prende come argomento una lista
3517 di tre elementi: l'angolo di rotazione in senso antiorario, e le
3518 coordinate x e y del punto relativo al punto di riferimento dell'oggetto
3519 intorno al quale si deve eseguire la rotazione. L'angolo di rotazione
3520 è specificato in gradi e le coordinate in spazi rigo.
3522 L'angolo di rotazione e le coordinate del punto di rotazione devono essere
3523 determinate per prova e errore.
3525 @cindex forcelle angolate
3527 Esistono solo poche situazioni in cui la rotazione degli oggetti della
3528 formattazione è utile; l'esempio seguente ne mostra uno:
3530 @lilypond[quote,fragment,verbatim]
3532 \override Hairpin.rotation = #'(20 -1 0)
3537 @node Rotazione del testo
3538 @unnumberedsubsubsec Rotazione del testo
3539 @translationof Rotating markup
3541 Tutto il testo in un blocco @code{\markup} può essere ruotato di qualsiasi
3542 angolo facendolo precedere dal comando @code{\rotate}. Il comando prende
3543 due argomenti: l'angolo di rotazione in gradi in senso antiorario e il
3544 testo da ruotare. Le estensioni del testo non sono ruotate: prendono il
3545 loro valore dagli estremi delle coordinate x e y del testo ruotato.
3546 Nell'esempio seguente la proprietà @code{outside-staff-priority} del testo
3547 è impostata su @code{#f} per disabilitare l'elusione automatica delle collisioni,
3548 che spingerebbe parte del testo troppo in alto.
3550 @lilypond[quote,fragment,verbatim]
3551 \override TextScript.outside-staff-priority = ##f
3552 g4^\markup { \rotate #30 "un Sol" }
3553 b^\markup { \rotate #30 "un Si" }
3554 des'^\markup { \rotate #30 "un Re bemolle" }
3555 fis'^\markup { \rotate #30 "un Fa diesis" }
3559 @node Ritocchi avanzati
3560 @section Ritocchi avanzati
3561 @translationof Advanced tweaks
3563 Questa sezione discute i vari approcci che permettono di migliorare
3564 l'aspetto delle partiture.
3567 * Allineamento degli oggetti::
3568 * Raggruppamento verticale dei grob::
3569 * Modifica degli stampi::
3570 * Modifica delle forme::
3571 * Modifica degli estensori spezzati::
3572 * Contenitori unpure-pure::
3576 Manuale di apprendimento:
3577 @rlearning{Modifica dell'output},
3578 @rlearning{Altre fonti di informazione}.
3580 Guida alla notazione:
3581 @ref{Explaining the Internals Reference},
3582 @ref{Modifying properties}.
3585 @rextend{Interfaces for programmers}.
3588 @file{scm/define-grobs.scm}.
3591 @rlsr{Tweaks and overrides}.
3593 Guida al funzionamento interno:
3594 @rinternals{All layout objects}.
3597 @node Allineamento degli oggetti
3598 @subsection Allineamento degli oggetti
3599 @translationof Aligning objects
3601 Gli oggetti grafici che supportano l'interfaccia @code{self-alignment-interface}
3602 e/o l'interfaccia @code{side-position-interface} possono essere allineati a un
3603 oggetto disposto precedentemente in vari modi. L'elenco di questi oggetti è
3604 consultabile in @rinternals{self-alignment-interface} e
3605 @rinternals{side-position-interface}.
3607 Tutti gli oggetti grafici hanno un punto di riferimento, un'estensione
3608 orizzontale e una verticale. L'estensione orizzontale è una coppia di
3609 numeri che determina gli spostamenti dal punto di riferimento dei margini
3610 sinistro e destro (gli spostamenti a sinistra sono negativi). L'estensione
3611 verticale è una coppia di numeri che determina lo spostamento dal punto di
3612 riferimento ai margini inferiore e superiore (gli spostamenti in giù sono
3615 La posizione di un oggetto su un rigo è dato dai valori delle proprietà
3616 @code{X-offset} e @code{Y-offset}. Il valore di @code{X-offset} dà lo
3617 spostamento dalla coordinata X del punto di riferimento dell'oggetto genitore,
3618 mentre il valore di @code{Y-offset} dà lo spostamento dalla linea centrale del
3619 rigo. I valori di @code{X-offset} e @code{Y-offset} possono essere impostati
3620 direttamente oppure possono essere impostati per essere calcolati dalle
3621 procedure in modo da consentire un allineamento con l'oggetto genitore.
3623 @warning{Molti oggetti hanno speciali questioni di posizionamento che fanno
3624 sì che qualsiasi impostazione di @code{X-offset} o @code{Y-offset} sia
3625 ignorata o modificata, anche se l'oggetto supporta l'interfaccia
3626 @code{self-alignment-interface}. Sovrascrivendo le proprietà @code{X-offset}
3627 o @code{Y-offset} su un valore fisso la rispettiva proprietà
3628 @code{self-alignment} verrà ignorata.}
3630 Per esempio, un'alterazione può essere riposizionata verticalmente impostando
3631 @code{Y-offset} ma qualsiasi modifica di @code{X-offset} non avrà effetto.
3633 I segni di chiamata possono essere allineati con oggetti spezzabili come
3634 stanghette, simboli di chiave, simboli di indicazione di tempo e armature
3635 di chiave. Ci sono proprietà speciali elencate nell'interfaccia
3636 @code{break-aligned-interface} per posizionare i segni di chiamata su tali
3640 Guida alla notazione:
3641 @ref{Using the break-alignable-interface}.
3644 @rextend{Callback functions}.
3647 * Impostazione diretta di X-offset e Y-offset::
3648 * Uso di side-position-interface::
3649 * Uso di self-alignment-interface::
3650 * Uso di break-alignable-interface::
3653 @node Impostazione diretta di X-offset e Y-offset
3654 @unnumberedsubsubsec Impostazione diretta di @code{X-offset} e @code{Y-offset}
3655 @translationof Setting X-offset and Y-offset directly
3657 Si possono assegnare valori numerici alle prietà @code{X-offset} e
3658 @code{Y-offset} di molti oggetti. L'esempio seguente mostra tre note
3659 con la posizione predefinita della diteggiatura e le posizioni con @code{X-offset}
3660 e @code{Y-offset} modificate.
3662 @lilypond[verbatim,fragment,quote]
3669 -\tweak X-offset #-1
3676 @node Uso di side-position-interface
3677 @unnumberedsubsubsec Uso di @code{side-position-interface}
3678 @translationof Using the side-position-interface
3680 Un oggetto che supporta l'interfaccia @code{side-position-interface} può
3681 essere posizionato accanto al suo oggetto genitore in modo che i margini
3682 indicati dei due oggetti si tocchino. L'oggetto può essere posizionato
3683 sopra, sotto, a destra o a sinistra dell'oggetto genitore. Quest'ultimo
3684 non può essere specificato; è invece determinato dall'ordine degli elementi
3685 nel flusso di input. La maggior parte degli oggetti ha la testa di nota
3686 associata come oggetto genitore.
3688 I valori delle proprietà @code{side-axis} e @code{direction} determinano
3689 dove l'oggetto deve essere posizionato, in questo modo:
3691 @c TODO add an example of each to the table
3693 @multitable @columnfractions .3 .3 .3
3694 @headitem @code{side-axis} @tab @code{direction} @tab
3695 @headitem proprietà @tab proprietà @tab Posizionamento
3697 @item @code{0} @tab @code{-1} @tab sinistra
3698 @item @code{0} @tab @code{1} @tab destra
3699 @item @code{1} @tab @code{-1} @tab sotto
3700 @item @code{1} @tab @code{1} @tab sopra
3704 Quando @code{side-axis} è @code{0}, @code{X-offset} deve essere impostato
3705 sulla procedura @code{ly:side-position-interface::x-aligned-side}.
3706 Questa procedura restituirà il valore corretto di @code{X-offset} per
3707 porre l'oggetto al lato sinistro o destro dell'oggetto genitore in base
3708 al valore di @code{direction}.
3710 Quando @code{side-axis} è @code{1}, @code{Y-offset} deve essere impostato
3711 sulla procedura @code{ly:side-position-interface::y-aligned-side}.
3712 Questa procedura restituirà il valore corretto di @code{Y-offset} per
3713 porre l'oggetto sopra o sotto l'oggetto genitore in base al valore di
3716 @c TODO Add examples
3718 @node Uso di self-alignment-interface
3719 @unnumberedsubsubsec Uso di @code{self-alignment-interface}
3720 @translationof Using the self-alignment-interface
3722 @subsubsubheading Autoallineamento orizzontale degli oggetti
3724 L'allineamento orizzontale di un oggetto che supporta l'interfaccia
3725 @code{self-alignment-interface} è regolato dal valore della proprietà
3726 @code{self-alignment-X}, purché la proprietà @code{X-offset} dell'oggetto
3727 sia impostata su @code{ly:self-alignment-interface::x-aligned-on-self}.
3728 A @code{self-alignment-X} può essere assegnato qualsiasi numero reale,
3729 in unità di metà del totale dell'estensione X dell'oggetto. Valori
3730 negativi spostano l'oggetto a destra, valori positivi lo spostano a
3731 sinistra. Un valore di @code{0} centra l'oggetto sul punto di riferimento
3732 del suo oggetto genitore, un valore di @w{@code{-1}} allinea il margine
3733 sinistro dell'oggetto al punto di riferimento del suo genitore, e un
3734 valore di @code{1} allinea il margine destro dell'oggetto al punto di
3735 riferimento del suo genitore. I simboli @code{LEFT}, @code{CENTER} e
3736 @code{RIGHT} possono essere usati al posto dei valori @w{@code{-1}},
3737 @code{0} e @code{1}, rispettivamente.
3739 Normalmente si usa il comando @code{\override} per modificare il valore
3740 di @code{self-alignment-X}, ma il comando @code{\tweak} può essere utile
3741 per allineare separatamente varie annotazioni su una singola nota:
3743 @lilypond[quote,verbatim,fragment]
3745 -\tweak self-alignment-X #-1
3746 ^"allineato a sinistra"
3747 -\tweak self-alignment-X #0
3748 ^"allineato al centro"
3749 -\tweak self-alignment-X #RIGHT
3750 ^"allineato a destra"
3751 -\tweak self-alignment-X #-2.5
3752 ^"allineato ancora più a destra"
3755 @subsubsubheading Autoallineamento verticale degli oggetti
3757 Gli oggetti possono essere allineati verticalmente in un modo analogo
3758 al loro allineamento orizzontale se la proprietà @code{Y-offset} è
3759 impostata su @code{ly:self-alignment-interface::y-aligned-on-self}.
3760 Tuttavia altri meccanismi sono spesso implicati nell'allineamento
3761 verticale: il valore di @code{Y-offset} è solo una delle variabili
3762 da prendere in considerazione. Ciò potrebbe rendere complicato
3763 l'aggiustamento del valore di alcuni oggetti.
3764 Le unità sono soltanto la metà dell'estensione verticale dell'oggetto, che
3765 è di solito piuttosto piccola, dunque potrebbero essere necessari grossi
3766 numeri. Un valore di @w{@code{-1}} allinea il margine inferiore dell'oggetto
3767 al punto di riferimento dell'oggetto genitore, un valore di @code{0}
3768 allinea il centro dell'oggetto al punto di riferimento del genitore,
3769 e un valore di @code{1} allinea il margine superiore dell'oggetto
3770 al punto di riferimento del genitore. I simboli @code{DOWN},
3771 @code{CENTER} e @code{UP} possono essere usati al posto di @w{@code{-1}},
3772 @code{0} e @code{1}, rispettivamente.
3774 @subsubsubheading Autoallineamento degli oggetti in entrambe le direzioni
3776 Impostando sia @code{X-offset} che @code{Y-offset}, un oggetto può essere
3777 allineato in entrambe le direzioni simultaneamente.
3779 L'esempio seguente mostra come aggiustare un segno di diteggiatura in modo
3780 che stia vicino alla testa di nota.
3782 @lilypond[quote,verbatim,fragment]
3784 -\tweak self-alignment-X #0.5 % sposta orizzontalmente a sinistra
3785 -\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self
3786 -\tweak self-alignment-Y #-1 % sposta verticalmente in su
3791 @unnumberedsubsubsec Using the @code{aligned-on-parent} procedures
3793 @c Cannot document as they do not seem to operate consistently on all objects -td
3794 @c TODO investigate further
3796 The @code{aligned-on-parent} procedures are used in the same way
3797 as the @code{aligned-on-self} procedures, they difference being
3798 that they permit an object to be aligned with the @emph{edges} of
3799 the parent rather than the parent's reference point. The following
3800 example shows the difference:
3804 @lilypond[verbatim,quote]
3810 @unnumberedsubsubsec Using the @code{centered-on-parent} procedures
3812 @c Cannot document as they do not seem to operate consistently on all objects -td
3813 @c TODO investigate further
3817 @c TODO The align-interface, BassFigureAlignment and VerticalAlignment
3819 @node Uso di break-alignable-interface
3820 @unnumberedsubsubsec Uso di @code{break-alignable-interface}
3821 @translationof Using the break-alignable-interface
3823 @cindex allineamento sugli oggetti
3824 @cindex break-align-symbols
3826 I segni di chiamata e i numeri di battuta possono essere allineati con oggetti
3827 della notazione diversi dalle stanghette. Questi oggetti comprendono
3828 @code{ambitus}, @code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar},
3829 @code{left-edge}, @code{key-cancellation}, @code{key-signature} e
3830 @code{time-signature}.
3832 Ogni tipo di oggetto ha il suo punto di riferimento predefinito, al quale i
3833 segni di chiamata sono allineati:
3835 @lilypond[verbatim,quote,fragment]
3836 % Il segno di chiamata sarà allineato al margine destro della chiave
3837 \override Score.RehearsalMark.break-align-symbols = #'(clef)
3842 % Il segno di chiamata sarà allineato al margine sinistro dell'indicazione di tempo
3843 \override Score.RehearsalMark.break-align-symbols = #'(time-signature)
3849 % Il segno di chiamata sarà centrato sul segno di respiro
3850 \override Score.RehearsalMark.break-align-symbols = #'(breathing-sign)
3859 Si può specificare un elenco dei possibili oggetti a cui allineare. Se
3860 alcuni oggetti sono invisibili in quel punto a causa dell'impostazione
3861 di @code{break-visibility} o di impostazioni esplicite della visibilità
3862 di tonalità e chiavi, il segno di chiamata o il numero di battuta viene
3863 allineato al primo oggetto dell'elenco che è visibile. Se nessun oggetto
3864 dell'elenco è visibile, l'oggetto è allineato alla stanghetta. Se la
3865 stanghetta è invisibile, l'oggetto viene allineato al punto in cui si
3866 dovrebbe trovare la stanghetta.
3868 @lilypond[verbatim,quote,fragment]
3869 % Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave
3870 \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
3875 % Il segno di chiamata sarà allineato al margine destro della chiave
3876 \set Staff.explicitKeySignatureVisibility = #all-invisible
3877 \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
3882 % Il segno di chiamata sarà centrato sopra la stanghetta
3883 \set Staff.explicitKeySignatureVisibility = #all-invisible
3884 \set Staff.explicitClefVisibility = #all-invisible
3885 \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef)
3892 L'allineamento del segno di chiamata relativo all'oggetto della notazione
3893 può essere modificato, come evidenziato nell'esempio seguente. In una
3894 partitura con molteplici righi, questa impostazione deve essere fatta per
3897 @lilypond[verbatim,quote,fragment]
3898 % Il segno di chiamata sarà allineato al margine destro dell'armatura di chiave
3899 \override Score.RehearsalMark.break-align-symbols = #'(key-signature)
3905 % Il segno di chiamata sarà centrato sopra l'armatura di chiave
3906 \once \override Score.KeySignature.break-align-anchor-alignment = #CENTER
3910 % Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
3911 \once \override Score.KeySignature.break-align-anchor-alignment = #LEFT
3917 Il segno di chiamata può anche essere spostato a destra o a sinistra del
3918 margine sinistro di una quantità arbitraria. Le unità sono gli spazi rigo:
3920 @lilypond[verbatim,quote,fragment]
3921 % Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
3922 % e poi spostato a destra di 3.5 spazi rigo
3923 \override Score.RehearsalMark.break-align-symbols = #'(key-signature)
3924 \once \override Score.KeySignature.break-align-anchor = #3.5
3928 % Il segno di chiamata sarà allineato al margine sinistro dell'armatura di chiave
3929 % e poi spostato a sinistra di 2 spazi rigo
3930 \once \override Score.KeySignature.break-align-anchor = #-2
3937 @node Raggruppamento verticale dei grob
3938 @subsection Raggruppamento verticale dei grob
3939 @translationof Vertical grouping of grobs
3941 @c TODO Expand this section
3943 I grob VerticalAlignment e VerticalAxisGroup lavorano insieme.
3944 VerticalAxisGroup raggruppa insieme diversi grob come Staff, Lyrics,
3945 etc. VerticalAlignment quindi allinea verticalmente i diversi grob
3946 raggruppati insieme da VerticalAxisGroup. Di solito è presente un
3947 solo VerticalAlignment per partitura ma ogni Staff, Lyrics, etc. ha
3948 il suo VerticalAxisGroup.
3951 @node Modifica degli stampi
3952 @subsection Modifica degli stampi
3953 @translationof Modifying stencils
3955 Tutti gli oggetti della formattazione hanno una proprietà @code{stencil} che
3956 fa parte dell'interfaccia @code{grob-interface}. Per impostazione predefinita,
3957 questa proprietà è solitamente impostata su una funzione specifica per l'oggetto
3958 per cui è concepita in modo da creare il simbolo che lo rappresenta nell'output.
3959 Per esempio, l'impostazione standard della proprietà @code{stencil} dell'oggetto
3960 @code{MultiMeasureRest} è @code{ly:multi-measure-rest::print}.
3962 Il simbolo standard di qualsiasi oggetto può essere sostituito modificando la
3963 proprietà @code{stencil} perché faccia riferimento a una procedura diversa
3964 e scritta appositamente. Ciò richiede una profonda conoscenza del funzionamento
3965 interno di LilyPond, ma esiste un modo più semplice che spesso è in grado di
3966 produrre risultati accettabili.
3968 Si tratta di impostare la proprietà @code{stencil} sulla procedura che stampa
3969 testo -- @code{ly:text-interface::print} -- e aggiungere una proprietà
3970 @code{text} all'oggetto impostato per contenere il testo markup che produce
3971 il simbolo richiesto. Grazie alla flessibilità di markup, si può ottenere
3972 molto -- vedi in particolare @ref{Graphic notation inside markup}.
3974 L'esempio seguente illustra questa procedura cambiando il simbolo della testa
3975 di nota con una croce iscritta in un cerchio.
3977 @lilypond[verbatim,quote]
3979 \once \override NoteHead.stencil = #ly:text-interface::print
3980 \once \override NoteHead.text = \markup {
3982 \halign #-0.7 \draw-circle #0.85 #0.2 ##f
3983 \musicglyph #"noteheads.s2cross"
3991 Qualsiasi glifo del tipo di carattere Feta può essere passato al comando
3992 markup @code{\musicglyph} -- vedi @ref{The Feta font}.
3994 @c TODO Add inserting eps files or ref to later
3996 @c TODO Add inserting Postscript or ref to later
3999 Guida alla notazione:
4000 @ref{Graphic notation inside markup},
4001 @ref{Formatting text},
4002 @ref{Text markup commands},
4003 @ref{The Feta font}.
4006 @node Modifica delle forme
4007 @subsection Modifica delle forme
4008 @translationof Modifying shapes
4011 * Modifica di legature di valore e di portamento::
4014 @node Modifica di legature di valore e di portamento
4015 @unnumberedsubsubsec Modifica di legature di valore e di portamento
4016 @translationof Modifying ties and slurs
4018 @cindex legature di portamento, modificare
4019 @cindex legature di valore, modificare
4020 @cindex curve Bézier, punti di controllo
4021 @cindex punti di controllo, curve Bézier
4022 @cindex Bézier, curve, punti di controllo
4024 Le legature, siano esse di valore (@code{Tie}), di portamento (@code{Slur}),
4025 di frase (@code{PhrasingSlur}), di laisser-vibrer (@code{LaissezVibrerTie})
4026 o di valore ripetute (@code{RepeatTie}), sono tutte disegnate come curve Bézier
4027 di terzo ordine. Se la forma della legatura di valore o di frase che viene
4028 calcolata automaticamente non è ottimale, può essere modificata manualmente
4033 specificando di quanto spostare i punti di controllo della curva
4034 Bézier calcolata automaticamente, o
4037 specificando esplicitamente le posizioni dei quattro punti di controllo
4038 richiesti per definire la curva desiderata.
4041 Entrambi i metodi sono spiegati di seguito. Il primo metodo è più adatto
4042 se sono necessari solo piccoli aggiustamenti alla curva; il secondo può
4043 essere migliore per creare curve che riguardano soltanto una singola nota.
4045 @subsubsubheading Curve Bézier cubiche
4047 Le curve Bézier di terzo ordine o cubiche sono definite da quattro punti
4048 di controllo. Il primo e il quarto punto di controllo sono esattamente
4049 i punti di inizio e fine della curva. I due punti intermedi definiscono
4050 la forma. Sul web si trovano delle animazioni che mostrano come viene
4051 disegnata la curva, ma la seguente descrizione può comunque essere utile.
4052 La curva inizia dal primo punto di controllo e si dirige verso il secondo,
4053 piegandosi gradualmente per arrivare al terzo e poi al quarto, arrivando
4054 lì direttamente dal terzo punto di controllo. La curva è contenuta
4055 interamente nel quadrilatero definito dai quattro punti di controllo.
4056 Traslazioni, rotazioni e ridimensionamenti dei punti di controllo risultano
4057 tutti esattamente nelle stesse operazioni sulla curva.
4059 @subsubsubheading Specificare gli spostamenti dai punti di controllo correnti
4061 @cindex disegnare legature di valore e di portamento
4064 In questo esempio la disposizone automatica della legatura di valore non è
4065 ottimale, e @code{\tieDown} non sarebbe di aiuto.
4067 @lilypond[verbatim,quote]
4071 \relative { r4 <g' c,> <g c,> <g c,> }
4075 Cambiando i punti di controllo della legatura con @code{\shape} consente di
4076 evitare le collisioni.
4078 La sintassi di @code{\shape} è
4081 [-]@code{\shape} @var{spostamenti} @var{elemento}
4084 Questo comando riposiziona i punti di controllo di @var{elemento} di quanto
4085 indicato da @var{spostamenti}. L'argomento @var{spostamenti} è una lista
4086 di coppie di numeri o una lista di tali liste. Ogni elemento di una coppia
4087 rappresenta lo spostamento di una delle coordinate di un punto di controllo.
4088 Se @var{elemento} è una stringa, il risultato è @code{\once\override} per il
4089 tipo di grob specificato. Se @var{elemento} è un'espressione musicale, il
4090 risultato è la stessa espressione musicale con un'appropriata modifica.
4092 In altre parole, la funzione @code{\shape} può comportarsi come un comando
4093 @code{\once\override} o un comando @code{\tweak} a seconda che l'argomento
4094 @var{elemento} sia il nome di un grob, come @qq{Slur}, o un'espressione
4095 musicale, come @qq{(}. L'argomento @var{spostamenti} specifica gli
4096 sfasamenti dei quattro punti di controllo nella forma di una lista di
4097 quattro coppie di valori (dx . dy) in unità di spazi rigo (o una lista
4098 di tali liste se la curva ha più di un segmento).
4100 Il trattino iniziale è richiesto se e solo se si usa la forma con
4103 Dunque usando lo stesso esempio precedente e la forma @code{\once\override}
4104 di @code{\shape}, il seguente comando alzerà la legatura di valore di
4107 @lilypond[verbatim,quote]
4110 \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
4114 \relative { r4 <g' c,> <g c,> <g c,> }
4118 Questo posizionamento è migliore, ma forse dovrebbe essere alzato di più
4119 al centro, come viene fatto nel prossimo esempio, dove stavolta si usa
4120 la forma alternativa @code{\tweak}:
4122 @lilypond[verbatim,quote]
4125 e'1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e'
4128 \relative { r4 <g' c,> <g c,> <g c,> }
4132 Le modifiche alle posizioni orizzontali dei punti di controllo funzionano
4133 nello stesso modo. Si possono ridefinire anche due curve diverse che
4134 iniziano nello stesso momento musicale:
4136 @lilypond[verbatim,quote,ragged-right]
4138 c''8(\( a) a'4 e c\)
4139 \shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur
4140 \shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur
4145 La funzione @code{\shape} può sostituire anche i punti di controllo di
4146 curve che si estendono oltre le interruzioni di linea. A ogni pezzo
4147 della curva spezzata può essere assegnata la sua lista di spostamenti.
4148 Se non sono necessarie delle modifiche a un segmento in particolare,
4149 la lista vuota può servire come segnaposto. In questo esempio l'interruzione
4150 di linea fa sembrare doppia la legatura di portamento singola:
4152 @lilypond[verbatim,quote,ragged-right]
4160 Cambiando le forme delle due metà della legatura di portamento diventa più
4161 chiaro che la legatura continua oltre l'interruzione di linea:
4163 @lilypond[verbatim,quote,ragged-right]
4164 % () può essere usato come una scorciatoia per ((0 . 0) (0 . 0) (0 . 0) (0 . 0))
4165 % nel caso in cui uno dei segmenti non necessiti di modifiche
4168 (( 0 . 0) (0 . 0) (0 . 0) (0 . 1))
4169 ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5))
4177 Se è richiesta una curva a forma di S, bisogna sempre definire manualmente i
4178 punti di controllo --- LilyPond non sceglierà mai tali forme automaticamente.
4180 @lilypond[verbatim,quote]
4182 c8( e b-> f d' a e-> g)
4183 \shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur
4184 c8\( e b-> f d' a e-> g\)
4188 @subsubsubheading Specificare i punti di controllo esplicitamente
4190 Le coordinate dei punti di controllo della curva di Bézier sono specificate
4191 in unità di spazi rigo. La coordinata@tie{}X è relativa al punto di
4192 riferimento della nota a cui la legatura si attacca, mentre la
4193 coordinata@tie{}Y è relativa alla linea centrale del rigo. Le coordinate
4194 sono specificate come una lista di quattro coppie di numeri decimali
4195 (reali). Un possibile approccio consiste nel valutare prima le coordinate
4196 delle due estremità e poi indovinare i due punti intermedi. I valori
4197 ottimali vengono quindi trovati per tentativi. Tenere conto del fatto
4198 che, in caso di ulteriori modifiche alla musica o alla formattazione, questi
4199 valori potrebbero dover essere nuovamente cambiati manualmente.
4201 Una situazione in cui è preferibile specificare i punti di controllo
4202 esplicitamente invece di specificarne gli spostamenti è quella in cui
4203 devono essere indicati per una singola nota. Il prossimo esempio
4204 mostra un modo in cui rappresentare una legatura di portamento che
4205 si estende nelle sezioni alternative di una volta.
4207 @lilypond[verbatim,quote]
4210 \repeat volta 3 { c4 d( e f }
4215 % crea una legatura di portamento e spostala in una nuova posizione
4216 % il <> è solamente un accordo vuoto che serve a terminare la legatura
4217 -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> )
4222 % crea una legatura di portamento e spostala in una nuova posizione
4223 -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> )
4231 Non è possibile modificare le forme di legature di valore e di portamento
4232 cambiando la proprietà @code{control-points} se ci sono molteplici legature
4233 nello stesso momento musicale -- anche il comando @code{\tweak} non funzionerà
4234 in questo caso. Tuttavia si può sovrascrivere la proprietà
4235 @code{tie-configuration} di @code{TieColumn} per impostare l'inizio della linea
4236 e la direzione come desiderato.
4239 Guida al funzionamento interno:
4240 @rinternals{TieColumn}.
4243 @node Modifica degli estensori spezzati
4244 @subsection Modifica degli estensori spezzati
4245 @translationof Modifying broken spanners
4248 * Uso di alterBroken::
4251 @node Uso di alterBroken
4252 @unnumberedsubsubsec Uso di @code{\alterBroken}
4253 @translationof Using alterBroken
4255 @cindex estensori, modificare gli
4256 @cindex estensori spezzati, modificare gli
4257 @funindex \alterBroken
4259 Quando un estensore va a capo o si spezza, ciascun pezzo eredita gli
4260 attributi dell'estensore originario. Dunque la normale modifica di
4261 un estensore spezzato applica le stesse modifiche a ciascuno dei
4262 suoi segmenti. Nell'esempio successivo, la sovrascrittura di
4263 @code{thickness} agisce sulla legatura di portamento su entrambi
4264 i lati rispetto all'interruzione di linea.
4266 @lilypond[verbatim,quote,ragged-right]
4269 \once\override Slur.thickness = 10
4276 È possibile modificare indipendentemente l'aspetto di singoli pezzi
4277 di un estensore spezzato col comando @code{\alterBroken}. Questo
4278 può generare sia un @code{\override} che un @code{\tweak} della
4279 proprietà di un estensore.
4281 La sintassi di @code{\alterBroken} è:
4284 [-]@code{\alterBroken} @var{proprietà} @var{valori} @var{elemento}
4287 L'argomento @var{valori} è una lista di valori, uno per ogni pezzo
4288 spezzato. Se @var{elemento} è il nome di un grob come @code{Slur} o
4289 @code{Staff.PianoPedalBracket}, il risultato è un @code{\override}
4290 del tipo di grob specificato. Se @var{elemento} è un'espressione
4291 musicale come @qq{(} o @qq{[}, il risultato è la stessa espressione
4292 musicale modificata da un comando @code{\tweak}.
4294 Il trattino iniziale è richiesto nella forma @code{\tweak}. Non aggiungerlo
4295 se @code{\alterBroken} viene usato come un @code{\override}.
4297 Nel suo uso come @code{\override}, @code{\alterBroken} può essere
4298 preceduto da @code{\once} o @code{\temporary} e ripristinato con
4299 @code{\revert} seguito da @var{proprietà}.
4301 Il codice seguente applica un @code{\override} indipendente a ciascun
4302 segmento della legatura di portamento dell'esempio precedente:
4304 @lilypond[verbatim,quote,ragged-right]
4307 \alterBroken thickness #'(10 1) Slur
4314 Il comando @code{\alterBroken} può essere usato con qualsiasi oggetto estensore,
4315 inclusi @code{Tie}, @code{PhrasingSlur}, @code{Beam} e @code{TextSpanner}. Per
4316 esempio, un editor che stia preparando un'edizione colta potrebbe voler indicare
4317 l'assenza di parte di una legatura di frase in un manoscritto tratteggiando
4318 solo il segmento che è stato aggiunto. L'esempio seguente mostra come farlo,
4319 in questo caso usando la forma @code{\tweak} del comando:
4321 @lilypond[verbatim,quote,ragged-right]
4322 % Si usa per convenienza la lista vuota, perché è l'impostazione
4323 % predefinita di dash-definition, producendo così una curva continua.
4325 c''2-\alterBroken dash-definition #'(() ((0 1.0 0.4 0.75))) \(e
4331 È importante comprendere che @code{\alterBroken} imposterà ogni pezzo di
4332 un estensore spezzato sul valore corrispondente specificato in
4333 @var{valori}. Quando il numero di valori è inferiore a quello dei pezzi,
4334 a qualsiasi pezzo ulteriore sarà assegnata una lista vuota. Ciò potrebbe
4335 portare a risultati indesiderati se la proprietà di formattazione non è
4336 impostata su una lista vuota per impostazione predefinita. In tali casi,
4337 a ogni segmento deve essere assegnato un valore appropriato.
4340 Le interruzioni di linea possono verificarsi in punti diversi in seguito
4341 a modifiche della formattazione. Le impostazioni scelte per @code{\alterBroken}
4342 potrebbero non essere più adatte per un estensore che non va più a capo o è
4343 diviso in più segmenti di prima. Per proteggersi da questa situazione
4344 conviene fare un uso esplicito di @code{\break}.
4346 Il comando @code{\alterBroken} non funziona nel caso di proprietà dell'estensore
4347 a cui si accede prima di line-breaking, come @code{direction}.
4351 @rextend{Difficult tweaks}.
4354 @node Contenitori unpure-pure
4355 @subsection Contenitori unpure-pure
4356 @translationof Unpure-pure containers
4358 @cindex Scheme, contenitori puri
4359 @cindex Scheme, contenitori impuri
4360 @cindex pure-container, Scheme
4361 @cindex unpure-container, Scheme
4362 @cindex spaziatura orizzontale, sovrascrivere la
4364 I contenitori unpure-pure (impuri-puri) sono utili per sovrascrivere i calcoli
4365 di spaziatura dell'@emph{asse Y} - in particolare @code{Y-offset} e
4366 @code{Y-extent} - tramite una funzione Scheme invece che con un numero o una
4369 Per alcuni grob, il cui @code{Y-extent} è basato sulla proprietà @code{stencil},
4370 sovrascrivere tale proprietà renderà necessario un'ulteriore sovrascrittura di
4371 @code{Y-extent} tramite un contenitore unpure-pure.
4372 Quando una funzione sovrascrive @code{Y-offset} e/o @code{Y-extent}, si presume
4373 che ciò innescherà il calcolo delle interruzioni di linea troppo presto durante
4374 la compilazione. Dunque la funzione non viene affatto calcolata (e di solito
4375 restituirà un valore di @samp{0} o @samp{'(0 . 0)}) e ciò può causare delle
4376 collisioni. Una funzione @q{pure} (pura) non avrà effetto su proprietà,
4377 oggetti o @qq{suicidi} dei grob e quindi tutto ciò che è collegato al suo
4378 asse@tie{}Y sarà sempre calcolato correttamente.
4380 Attualmente, ci sono circa trenta funzioni che sono già considerate
4381 @q{pure} e i contenitori unpure-pure sono un modo per impostare le
4382 funzioni non ancora presenti in questa lista come @q{pure}. La funzione
4383 @q{pure} viene calcolata @emph{prima} di qualsiasi interruzione di linea
4384 e quindi la spaziatura orizzontale può essere regolata @qq{in tempo}. La
4385 funzione @q{unpure} viene invece calcolata @emph{dopo} le interruzioni
4388 @warning{Dato che è difficile sapere sempre quali funzioni si trovano in
4389 questa lista, consigliamo a chi crea funzioni @q{pure} di non usare i
4390 grob @code{Beam} o @code{VerticalAlignment}.}
4392 Un contenitore unpure-pure viene costruito nel modo seguente:
4394 @code{(ly:make-unpure-pure-container f0 f1)}
4396 dove @code{f0} è una funzione che prende @var{n} argomenti (@var{n >= 1})
4397 e il primo argomento deve sempre essere il grob. Questa è la funzione che
4398 restituisce il vero risultato. @var{f1} è la funzione etichettata come
4399 @q{pure} che prende @var{n + 2} argomenti. Di nuovo, il primo argomento
4400 deve sempre essere il grob, ma il secondo e il terzo sono il punto di
4401 partenza, @q{start}, e quello di arrivo, @q{end}.
4403 @var{start} e @var{end} sono, per tutti gli intenti e scopi, valori
4404 fittizi che contano solo per gli estensori, o @code{Spanners}, (ovvero
4405 @code{Hairpin} o @code{Beam}), che possono restituire calcoli diversi
4406 dell'altezza in base a una colonna di inizio e di fine.
4408 Il resto sono altri argomenti della prima funzione (che potrebbero essere
4409 nessuno se @var{n = 1}).
4411 I risultati della seconda funzione sono usati come un'approssimazione del
4412 valore necessario che viene poi usato dalla prima funzione per ottenere il
4413 valore reale, che viene infine usato per la messa a punto, molto più tardi
4414 nel corso del processo di spaziatura.
4416 @lilypond[verbatim,quote,ragged-right]
4417 #(define (square-line-circle-space grob)
4418 (let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
4419 (notename (ly:pitch-notename pitch)))
4420 (if (= 0 (modulo notename 2))
4421 (make-circle-stencil 0.5 0.0 #t)
4422 (make-filled-box-stencil '(0 . 1.0)
4425 squareLineCircleSpace = {
4426 \override NoteHead.stencil = #square-line-circle-space
4429 smartSquareLineCircleSpace = {
4430 \squareLineCircleSpace
4431 \override NoteHead.Y-extent =
4432 #(ly:make-unpure-pure-container
4433 ly:grob::stencil-height
4434 (lambda (grob start end) (ly:grob::stencil-height grob)))
4437 \new Voice \with { \remove "Stem_engraver" }
4439 \squareLineCircleSpace
4441 \smartSquareLineCircleSpace
4446 @c esempio obsoleto: dalla versione 2.18 LilyPond evita le collisioni di default.
4447 Nella prima misura, senza il contenitore unpure-pure, il motore della
4448 spaziatura non conosce la larghezza della testa di nota e lascia che
4449 collida con le alterazioni. Nella seconda misura, che usa i contenitori
4450 unpure-pure, il motore della spaziatura conosce la larghezza della testa
4451 di nota e evita le collisioni allungando la linea dello spazio necessario.
4453 Di solito per semplici calcoli si possono usare funzioni quasi identiche
4454 per entrambe le parti, @q{unpure} e @q{pure}, cambiando soltanto il numero
4455 di argomenti passati e la portata della funzione. Questo caso d'uso è così
4456 frequente che @code{ly:make-unpure-pure-container} costruisce tale seconda
4457 funzione automaticamente quando è richiamata con un solo argomento.
4459 @warning{Se una funzione viene etichettata come @q{pure} ma viene fuori che
4460 non lo è, i risultati possono essere imprevedibili.}
4463 @node Uso delle funzioni musicali
4464 @section Uso delle funzioni musicali
4465 @translationof Using music functions
4467 @c TODO -- add @seealso, etc. to these subsections
4469 Quando le modifiche devono essere riusate con diverse espressioni musicali,
4470 è spesso conveniente fare in modo che la modifica faccia parte di una
4471 @emph{funzione musicale}. In questa sezione, trattiamo soltanto le funzioni
4472 di @emph{sostituzione}, dove l'obiettivo è sostituire una variabile in un
4473 punto del codice di input di LilyPond. Altre funzioni più complesse sono
4474 descritte in @rextend{Music functions}.
4477 * Sintassi della funzione di sostituzione::
4478 * Esempi della funzione di sostituzione::
4481 @node Sintassi della funzione di sostituzione
4482 @subsection Sintassi della funzione di sostituzione
4483 @translationof Substitution function syntax
4485 Creare una funzione che sostituisca una variabile presente nel codice LilyPond
4486 è semplice. La forma generica di queste funzioni è:
4490 #(define-music-function
4491 (@var{arg1} @var{arg2} @dots{})
4492 (@var{tipo1?} @var{tipo2?} @dots{})
4494 @var{@dots{}musica@dots{}}
4501 @multitable @columnfractions .33 .66
4502 @item @code{@var{argN}}
4503 @tab @var{n}esimo argomento
4505 @item @code{@var{tipoN?}}
4506 @tab un @emph{tipo di predicato} scheme per il quale @code{@var{argN}}
4507 deve ritornare @code{#t}.
4509 @item @code{@var{@dots{}musica@dots{}}}
4510 @tab il normale input LilyPond, usando @code{$} (nei punti in cui sono
4511 consentiti solo i costrutti Lilypond) o @code{#} (per usarlo come un valore
4512 Scheme o come argomento di una funzione musicale o come musica all'interno
4513 di liste di musica) per riferirsi agli argomenti (es: @samp{#arg1}).
4516 La lista del tipo di predicati è obbligatoria. Alcuni dei tipi di predicati
4517 più comuni usati nelle funzioni musicali sono:
4521 cheap-list? @emph{(usarlo al posto di }@q{list?}@emph{ per un'elaborazione più veloce)}
4533 Un elenco dei tipi di predicati disponibili si trova in
4534 @ref{Predefined type predicates}. Sono consentiti anche tipi di predicati
4535 definiti dagli utenti.
4538 Guida alla notazione:
4539 @ref{Predefined type predicates}.
4542 @rextend{Music functions}.
4545 @file{lily/music-scheme.cc},
4547 @file{scm/lily.scm}.
4550 @node Esempi della funzione di sostituzione
4551 @subsection Esempi della funzione di sostituzione
4552 @translationof Substitution function examples
4554 Questa sezione presenta alcuni esempi di funzione di sostituzione.
4555 L'obiettivo non è fornire un elenco esaustivo, ma mostrare soltanto
4556 alcune delle possibilità di semplici funzioni di sostituzione.
4558 Nel primo esempio, viene definita una funzione che semplifica il
4559 padding di un oggetto TextScript:
4561 @lilypond[quote,verbatim,ragged-right]
4563 #(define-music-function
4567 \once \override TextScript.padding = #padding
4571 c''4^"più mosso" b a b
4573 c4^"più mosso" b a b
4575 c4^"più mosso" b a b
4579 Oltre ai numeri, si possono usare come argomenti delle funzioni musicali
4580 anche le espressioni musicali, come le note:
4582 @lilypond[quote,verbatim,ragged-right]
4584 #(define-music-function
4588 \tweak NoteHead.stencil #ly:text-interface::print
4589 \tweak NoteHead.text
4590 \markup \musicglyph #"custodes.mensural.u0"
4591 \tweak Stem.stencil ##f
4595 \relative { c'4 d e f \custosNote g }
4599 Entrambe queste funzioni sono semplici espressioni singole dove manca soltanto
4600 l'ultimo elemento di una chiamata di una funzione o di una sovrascrittura. Per
4601 queste particolari definizioni di funzione, esiste una sintassi alternativa
4602 più semplice, che consiste nello scrivere interamente la parte costante
4603 dell'espressione e sostituire il suo elemento finale mancante con @code{\etc}:
4605 @lilypond[quote,verbatim,ragged-right]
4607 \once \override TextScript.padding = \etc
4610 c''4^"più mosso" b a b
4612 c4^"più mosso" b a b
4614 c4^"più mosso" b a b
4618 @lilypond[quote,verbatim,ragged-right]
4620 \tweak NoteHead.stencil #ly:text-interface::print
4621 \tweak NoteHead.text
4622 \markup \musicglyph #"custodes.mensural.u0"
4623 \tweak Stem.stencil ##f
4626 \relative { c'4 d e f \custosNote g }
4630 Si possono definire funzioni di sostituzione con molteplici argomenti:
4632 @lilypond[quote,verbatim,ragged-right]
4634 #(define-music-function
4638 \once \override Score.MetronomeMark.padding = #padding
4639 \tempo \markup { \bold #tempotext }
4643 \tempo \markup { "Tempo basso" }
4645 \tempoPadded #4.0 "Tempo alto"
4650 @c TODO: add appropriate @@ref's here.