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

5.3 Modifica delle proprietà

@translationof Modifying properties


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

5.3.1 Panoramica sulla modifica delle proprietà

@translationof Overview of modifying properties

Ogni contesto è responsabile della creazione di certi tipi di oggetti grafici. Le impostazioni usate per la rappresentazione grafica di questi oggetti sono anch’esse salvate dal contesto. Cambiando queste impostazioni, si può alterare l’aspetto degli oggetti.

Ci sono due tipi diversi di proprietà salvate nei contesti: le proprietà del contesto e quelle del grob. Le proprietà del contesto sono proprietà che si applicano al contesto nel suo complesso e regolano il modo in cui il contesto stesso viene mostrato. Al contrario, le proprietà del grob si applicano a tipi di grob specifici che verranno mostrati nel contesto.

I comandi \set e \unset vengono usati per cambiare i valori delle proprietà di contesto. I comandi \override e \revert servono a cambiare i valori delle proprietà dei grob.

Vedi anche

Guida al funzionamento interno: (internals)Backend section ‘Backend’ in Guida al Funzionamento Interno, (internals)All layout objects section ‘All layout objects’ in Guida al Funzionamento Interno, (internals)OverrideProperty section ‘OverrideProperty’ in Guida al Funzionamento Interno, (internals)RevertProperty section ‘RevertProperty’ in Guida al Funzionamento Interno, (internals)PropertySet section ‘PropertySet’ in Guida al Funzionamento Interno.

Problemi noti e avvertimenti

Il backend non è molto severo nel controllo del tipo delle proprietà di un oggetto. Riferimenti ciclici nei valori Scheme delle proprietà possono causare attese o crash, o entrambi.


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

5.3.2 Il comando \set

@translationof The set command

Ogni contesto ha un insieme di proprietà, variabili contenute in quel contesto. Le proprietà di contesto si cambiano col comando \set, che ha la seguente sintassi:

 
\set contesto.proprietà = #valore

valore è un oggetto Scheme, ecco perché deve essere preceduto dal carattere  #.

Le proprietà dei contesti sono solitamente nominate in studlyCaps. Perlopiù regolano la traduzione dalla musica alla notazione, per esempio localAlterations (per determinare se stampare le alterazioni), o measurePosition (per determinare quando stampare una stanghetta). Le proprietà di contesto possono cambiare nel tempo nel corso dell’interpretazione di un brano musicale; measurePosition ne è un ovvio esempio. Le proprietà di contesto si modificano con \set.

Per esempio, le pause multiple sono combinate in una singola battuta se la proprietà di contesto skipBars viene impostata su #t:

 
R1*2
\set Score.skipBars = ##t
R1*2

[image of music]

Se l’argomento contesto non viene specificato, la proprietà sarà impostata nel contesto di base corrente (solitamente ChordNames, Voice, TabVoice o Lyrics).

 
\set Score.autoBeaming = ##f
\relative {
  e''8 e e e
  \set autoBeaming = ##t
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

La modifica viene applicata ‘al volo’, durante l’interpretazione della musica, in modo che l’impostazione abbia effetto soltanto sul secondo gruppo di note da un ottavo.

Nota che il contesto più inferiore non contiene sempre la proprietà che si desidera cambiare. Per esempio, il tentativo di impostare la proprietà skipBars del contesto di base predefinito, in questo caso Voice, non produrrà alcun risultato, perché skipBars è una proprietà del contesto Score.

 
R1*2
\set skipBars = ##t
R1*2

[image of music]

I contesti sono gerarchici, per cui se viene specificato un contesto che ne racchiude altri, per esempio Staff, il cambiamento viene applicato anche a tutti i contesti Voice del rigo corrente.

Il comando \unset:

 
\unset contesto.proprietà

viene usato per togliere la definizione di proprietà dal contesto. Questo comando rimuove la definizione solo se impostata nel contesto. Le proprietà impostate nei contesti più esterni non saranno modificate da un \unset in un contesto più interno:

 
\set Score.autoBeaming = ##t
\relative {
  \unset autoBeaming
  e''8 e e e
  \unset Score.autoBeaming
  e8 e e e
} \\
\relative {
  c''8 c c c c8 c c c
}

[image of music]

Come in \set, non è necessario specificare l’argomento contesto per un contesto di fondo, quindi le due dichiarazioni

 
\set Voice.autoBeaming = ##t
\set autoBeaming = ##t

sono equivalenti se l’attuale contesto di fondo è Voice.

Anteponendo \once ai comandi \set o \unset, l’impostazione verrà applicata soltanto a un singolo momento temporale:

 
c''4
\once \set fontSize = #4.7
c''4
c''4

[image of music]

Una descrizione completa di tutte le proprietà di contesto disponibili si trova nella Guida al funzionamento interno, vedi (internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno.

Vedi anche

Guida al funzionamento interno: (internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno.


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

5.3.3 Il comando \override

@translationof The override command

Esiste un tipo particolare di proprietà di contesto: la descrizione del grob. Le descrizioni dei grob vengono nomimate in StudlyCaps (iniziando con lettere maiuscole). Contengono le “impostazioni predefinite” per un certo tipo di grob, come una lista associativa. Consultare ‘scm/define-grobs.scm’ per vedere le impostazioni per ogni descrizione di grob. Le descrizioni di grob si modificano con \override.

La sintassi del comando \override è

 
\override [contesto.]NomeGrob.proprietà = #valore

Per esempio, possiamo aumentare lo spessore del gambo di una nota modificando la proprietà thickness dell’oggetto Stem:

 
c''4 c''
\override Voice.Stem.thickness = #3.0
c''4 c''

[image of music]

Se non viene specificato il contesto in un \override, viene usato il contesto di base:

 
\override Staff.Stem.thickness = #3.0
<<
  \relative {
    e''4 e
    \override Stem.thickness = #0.5
    e4 e
  } \\
  \relative {
    c''4 c c c
  }
>>

[image of music]

Alcune opzioni modificabili vengono chiamate ‘sottoproprietà’ e stanno dentro le proprietà. Per cambiarle, usare i comandi nella forma

 
\override Stem.details.beamed-lengths = #'(4 4 3)

o, per modificare le estremità degli estensori, usare una forma simile alle seguenti

 
\override TextSpanner.bound-details.left.text = "left text"
\override TextSpanner.bound-details.right.text = "right text"

Gli effetti di \override possono essere annullati con \revert.

La sintassi del comando \revert è

 
\revert [contesto.]NomeGrob.proprietà

Per esempio,

 
\relative {
  c''4
  \override Voice.Stem.thickness = #3.0
  c4 c
  \revert Voice.Stem.thickness
  c4
}

[image of music]

Gli effetti di \override e \revert si applicano a tutti i grob nel contesto interessato da quel momento in poi:

 
<<
  \relative {
    e''4
    \override Staff.Stem.thickness = #3.0
    e4 e e
  } \\
  \relative {
    c''4 c c
    \revert Staff.Stem.thickness
    c4
  }
>>

[image of music]

Si può usare \once insieme a \override o \revert per agire solo sul momento corrente:

 
<<
  \relative c {
    \override Stem.thickness = #3.0
    e''4 e e e
  } \\
  \relative {
    c''4
    \once \override Stem.thickness = #3.0
    c4 c c
  }
>>

[image of music]

Vedi anche

Guida al funzionamento interno: (internals)Backend section ‘Backend’ in Guida al Funzionamento Interno


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

5.3.4 Il comando \tweak

@translationof The tweak command

Modificare le proprietà dei grob con \override fa sì che i cambiamenti siano applicati a tutti i grob in questione in quel contesto nel momento in cui la modifica viene applicata. Talvolta, tuttavia, si può voler applicare le modifiche a un solo grob invece che a tutti i grob del contesto interessato. Per farlo si usa il comando \tweak, che ha la seguente sintassi:

 
\tweak [oggetto-formattazione.]proprietà-grob valore

oggetto-formattazione è opzionale. Il comando \tweak viene applicato all’oggetto musicale che segue immediatamente valore nel flusso musicale.

Per un’introduzione alla sintassi e agli usi del comando tweak leggere (learning)Metodi di modifica section ‘Metodi di modifica’ in Manuale di Apprendimento.

Quando molti elementi simili sono disposti nello stesso momento musicale, non è possibile usare il comando \override per modificarne soltanto uno. È in casi come questi che occorre usare il comando \tweak. Ecco alcuni elementi che possono apparire più di una volta nello stesso momento musicale:

In questo esempio, il colore di una testa di nota e il tipo di testa di un’altra nota sono modificati all’interno di un accordo:

 
< c''
  \tweak color #red
  d''
  g''
  \tweak duration-log #1
  a''
> 4

[image of music]

\tweak può essere usato per modificare le legature di portamento:

 
\relative { c'-\tweak thickness #5 ( d e f) }

[image of music]

Perché il comando \tweak funzioni, deve trovarsi proprio accanto all’oggetto al quale deve essere applicato dopo che il file di input è stato convertito in un flusso musicale. Modificare un intero accordo non cambia niente perché il suo evento musicale agisce solo come contenitore, mentre tutti gli oggetti della formattazione sono creati dagli eventi interni all’ EventChord:

 
\tweak color #red c''4
\tweak color #red <c'' e''>4
<\tweak color #red c'' e''>4

[image of music]

Il semplice comando \tweak non può essere usato per modificare un oggetto che non sia creato direttamente dall’input. In particolare, non agirà su gambi, travature automatiche o alterazioni, dato che questi sono generati successivamente dagli oggetti della formattazione di NoteHead invece che da elementi musicali nel flusso dell’input.

Tali oggetti della formattazione creati indirettamente possono essere tuttavia modificati usando una forma del comando \tweak in cui il nome del grob è indicato esplicitamente:

 
\tweak Stem.color #red
\tweak Beam.color #green c''8 e''
<c'' e'' \tweak Accidental.font-size #-3 ges''>4

[image of music]

\tweak non può essere usato per modificare le chiavi o le indicazioni di tempo, perché queste vengono separate da qualsiasi comando \tweak precedente nel flusso dell’input a causa dell’inserimento automatico di ulteriori elementi richiesti per specificare il contesto.

Si possono usare vari comandi \tweak prima di un elemento della notazione e tutti avranno effetto su di esso:

 
c'
  -\tweak style #'dashed-line
  -\tweak dash-fraction #0.2
  -\tweak thickness #3
  -\tweak color #red
  \glissando
f''

[image of music]

Il flusso musicale generato da una sezione di un file di input, compresi gli elementi inseriti automaticamente, può essere esaminato, vedi (extending)Displaying music expressions section ‘Displaying music expressions’ in Estendere. Ciò può essere utile nel determinare cosa può essere modificato da un comando \tweak o nel valutare come aggiustare l’input per far sì che un \tweak sia applicato.

Vedi anche

Manuale di apprendimento: (learning)Metodi di modifica section ‘Metodi di modifica’ in Manuale di Apprendimento.

Estendere LilyPond: (extending)Displaying music expressions section ‘Displaying music expressions’ in Estendere.

Problemi noti e avvertimenti

Il comando \tweak non può essere usato per modificare i punti di controllo di una sola legatura di valore tra tante in un accordo, se non quelli della prima legatura incontrata nel file di input.


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

5.3.5 \set vs. \override

@translationof set versus override

I comandi \set e \override manipolano le proprietà associate ai contesti. In entrambi i casi, le proprietà seguono una gerarchia dei contesti; proprietà non impostate in un contesto mostreranno i valori del rispettivo contesto padre.

La durata e il valore di una proprietà di contesto sono dinamici e disponibili soltanto mentre la musica viene interpretata (ovvero ‘reiterata’). Nel momento della creazione del contesto, le proprietà sono inizializzate a partire dalle definizioni corrispondenti (insieme a altre modifiche) di quel contesto. Qualsiasi modifica successiva viene fatta con dei comandi di impostazione della proprietà presenti nella musica stessa.

Le definizioni degli oggetti grafici (o “grob”) sono una categoria speciale di proprietà di contesto, perché la loro struttura e uso sono diversi da quelli delle normali proprietà di contesto. Diversamente da quest’ultime, le definizioni dei grob sono suddivise in proprietà dei grob.

Inoltre, diversamente dalle normali proprietà di contesto, le definizioni dei grob hanno una loro ‘contabilità’ interna usata per tenere traccia delle loro individuali proprietà e sottoproprietà. Ciò significa che è possibile definire queste parti in contesti diversi e avere sempre a disposizione la definizione complessiva del grob nel momento della sua creazione, assemblata da tutti i pezzi compresi tra il contesto corrente e i suoi contesti superiori.

Un grob viene solitamente creato da un incisore nel momento in cui l’espressione musicale viene interpretata e riceve le sue proprietà iniziali dalla definizione del grob corrente del contesto dell’incisore. L’incisore (o altre parti del ‘backend’ di LilyPond) può successivamente cambiare (o aggiungere) le proprietà iniziali del grob, ma ciò non ha effetto sulla definizione di grob del contesto.

Ciò che LilyPond chiama ‘proprietà del grob’ nel contesto delle modifiche a livello di utente sono in realtà le proprietà della definizione di grob di un contesto.

Le definizioni di grob sono manipolate con \override e \revert e hanno un nome che inizia con una lettera maiuscola (come ‘NoteHead’), mentre le normali proprietà di contesto sono manipolate con \set e \unset e il loro nome inizia con una lettera minuscola.

I comandi \tweak e \overrideProperty modificano le proprietà dei grob bypassando completamente tutte le proprietà di contesto. Catturano i grob mentre vengono creati, impostando le loro proprietà per un evento musicale (\tweak) o, nel caso di \overrideProperty, per una sovrascrittura specifica.


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

5.3.6 Il comando \offset

@translationof The offset command

Sebbene sia possibile impostare le proprietà dei grob su nuovi valori coi comandi \override, \tweak e \overrideProperty, è spesso più opportuno modificare tali proprietà in modo relativo a un valore predefinito. A questo fine è stato creato il comando \offset.

La sintassi di \offset è

 
[-]\offset proprietà offset elemento

Il comando funziona aggiungendo i contenuti di offset all’impostazione predefinita della proprietà proprietà del grob indicato da elemento.

A seconda di come è formulato il comando, \offset può comportarsi come un \tweak o come un \override. Le variazioni d’uso sono trattate dopo aver considerato le proprietà del grob che possono essere usate con \offset.

Proprietà che possono essere spostate con offset

Molte, ma non tutte, le proprietà dei grob possono essere spostate con offset. Se la proprietà non può essere spostata con offset, l’oggetto resterà invariato e apparirà un avviso. In questi casi bisogna usare \override o \tweak per modificare l’oggetto.

Si potrebbe procedere per prova e errore e basarsi sugli avvisi per capire cosa può essere spostato con offset e cosa no. Tuttavia si può usare un approccio più sistematico.

I seguenti criteri determinano se una proprietà possa essere modificata con \offset:

Gli esempi seguenti prendono in considerazione varie proprietà grob in relazione ai criteri appena delineati.

\offset come override

Se elemento è un nome di grob come Arpeggio o Staff.OttavaBracket, il risultato è un \override del tipo di grob specificato.

 
\offset proprietà offset [contesto.]NomeGrob

Notare che il trattino iniziale non è mai usato nella forma ‘override’, proprio come non è mai usato col comando \override stesso.

L’esempio seguente usa la forma ‘override’ per allungare gli arpeggi predefiniti mostrati nella prima misura in modo che coprano del tutto l’esensione degli accordi. Gli arpeggi sono allungati di mezzo spazio rigo verso l’alto e verso il basso. Viene mostrata anche la stessa operazione fatta sul primo accordo con un normale override della proprietà positions. Questo metodo non rispecchia affatto il compito di ‘allungare di mezzo spazio rigo’, perché le estremità devono essere specificate con coordinate assolute invece che relative. Inoltre, sarebbero necessari override individuali per ciascuno degli altri accordi, dato che variano in dimensione e posizione.

 
arpeggioMusic = {
  <c' e' g'>\arpeggio <a' c'' e''>\arpeggio
  <d' f' a' c''>\arpeggio <c' e' g' b' d'' f'' a''>\arpeggio
}

{
  \arpeggioMusic
  \bar "||"
  \offset positions #'(-0.5 . 0.5) Arpeggio
  \arpeggioMusic
  \bar "||"
  \once \override Arpeggio.positions = #'(-3.5 . -0.5)
  <c' e' g'>1\arpeggio
  \bar "||"
}

[image of music]

Nel suo uso come ‘override’, \offset può essere preceduto da \once o \temporary e annullato con \revert e la proprietà (vedi (extending)Intermediate substitution functions section ‘Intermediate substitution functions’ in Estendere). Ciò deriva dal fatto che \offset in realtà crea un \override della proprietà.

 
music = { c'8\< d' e' f'\! }

{
  \music
  \offset height 1 Hairpin
  \music
  \music
  \revert Hairpin.height
  \music
  \bar "||"
  \once \offset height 1 Hairpin
  \music \music
  \bar "||"
  \override Hairpin.height = 0.2
  \music
  \temporary \offset height 2 Hairpin
  \music
  \music
  \revert Hairpin.height
  \music
  \bar "||"
}

[image of music]

Proprio come \override, la forma ‘override’ di \offset può essere usata con \undo e \single.

 
longStem = \offset length 6 Stem

{
 \longStem c'4 c''' c' c''
 \bar "||"
 \undo \longStem c'4 c''' c' c''
 \bar "||"
 \single \longStem c'4 c''' c' c''
 \bar "||"
}

[image of music]

\offset come tweak

Se elemento è un’espressione musicale come ( o \arpeggio, il risultato è la stessa espressione musicale con una modifica di tipo tweak applicata.

 
[-]\offset [NomeGrob.]proprietà offset espressione-musicale

La sintassi di \offset nella sua forma ‘tweak’ è analoga a quella dello stesso comando \tweak, sia nell’ordine sia in presenza o assenza del trattino iniziale.

L’esempio seguente usa la forma ‘tweak’ per regolare la posizione verticale dell’oggetto BreathingSign. Si confronti questo col normale comando \tweak che lo segue. La sintassi è equivalente, ma l’output di \tweak è meno intuitivo, perché BreathingSign.Y-offset è calcolato dalla linea centrale del pentagramma. Al contratio, non è necessatio conoscere come è calcolato Y-offset quando si usa \offset.

 
{
  c''4
  \breathe
  c''4
  \offset Y-offset 2 \breathe
  c''2
  \tweak Y-offset 3 \breathe
}

[image of music]

Nell’esempio precedente, gli oggetti modificati sono stati creati direttamente dall’input dell’utente: il comando \breathe è un’istruzione esplicita che restituisce un oggetto BreathingSign. Dato che l’ambito del comando era non ambiguo, non è stato necessario specificare il nome dell’oggetto. Ma quando un oggetto viene creato indirettamente, bisogna includere il nome del grob. Ciò è valido anche per il comando \tweak.

Nell’esempio seguente, l’oggetto Beam viene abbassato di due spazi rigo applicando \offset alla proprietà positions.

Il primo impiego di \offset richiede la presenza del nome del grob, perché nessun elemento dell’input crea esplicitamente la travatura. Nel secondo impiego la travatura viene creata manualmente con l’espressione musicale [; dunque il nome del grob non è necessario. L’esempio mostra anche una scorciatoia: un singolo numero viene applicato a entrambi i membri di una coppia di numeri.)

 
{
  c''8 g'' e'' d''
  \offset Beam.positions #'(-2 . -2)
  c''8 g'' e'' d''
  c''8 g'' e'' d''
  c''8-\offset positions #-2 [ g'' e'' d'']
}

[image of music]

\offset con estensori spezzati

È anche possibile modificare in modo indipendente i segmenti di un estensore che va oltre una o più interruzioni di linea. In questo caso, offset prende una lista di valori del tipo di dati richiesto dalla proprietà.

Il comando \offset usato in questo modo è simile al comando \alterBroken, vedi Modifica degli estensori spezzati. Tuttavia, diversamente da \alterBroken, i valori assegnati a \offset non sono assoluti, ma relativi.

L’esempio seguente sposta l’oggetto ‘spezzato’ OttavaBracket attraverso la sua proprietà staff-padding. Dato che la proprietà prende un numero, a offset viene fornita una lista di numeri per rendere conto dei due segmenti creati dall’interruzione di linea. Il pezzo di parentesi dell’ottava sulla prima linea non viene modificato perché viene aggiunto 0 al suo valore predefinito di staff-padding. Il segmento sulla seconda linea viene alzato di tre spazi rigo dalla sua altezza predefinita. L’altezza predefinita è 2, anche se non è necessario saperlo per ottenere la posizione desiderata.

 
{
  \offset staff-padding #'(0 3) Staff.OttavaBracket
  \ottava #1
  c'''2 c'''
  \break
  c'''2 c'''
}

[image of music]

L’esempio seguente imita l’effetto del comando \shape spostando la proprietà control-points dell’oggetto Slur. Qui offset è una lista di number-pair-list, una per ciascun segmento della legatura di portamento. Questo esempio realizza un risultato identico a quello corrispondente in Modifica delle forme.

 
{
  c'4-\offset control-points #'(
               ((0 . 0) (0 . 0) (0 . 0) (0 . 1))
               ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5))
              ) ( f'4 g' c''
  \break
  d'4 c'' f' c')
}

[image of music]


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

5.3.7 Modifica delle liste associative

@translationof Modifying alists

Alcune proprietà configurabili dall’utente sono rappresentate internamente come alist (liste associative), che contengono coppie di chiavi e valori. La struttura di una lista associativa è:

 
'((chiave1 . valore1)
  (chiave2 . valore2)
  (chiave3 . valore3)
  …)

Se una lista associativa è una proprietà di un grob o una variabile \paper, le sue chiavi possono essere modificate individualmente senza influenzare altre chiavi.

Per esempio, per ridurre lo spazio tra righi adiacenti in un gruppo di righi, si usa la proprietà staff-staff-spacing del grob StaffGrouper. La proprietà è una lista associativa con quattro chiavi: basic-distance, minimum-distance, padding e stretchability. Le impostazioni predefinite per questa proprietà sono elencate nella sezione “Backend” della Guida al funzionamento interno (vedi (internals)StaffGrouper section ‘StaffGrouper’ in Guida al Funzionamento Interno):

 
'((basic-distance . 9)
  (minimum-distance . 7)
  (padding . 1)
  (stretchability . 5))

Un modo per avvicinare i righi è ridurre il valore della chiave basic-distance (9) perché corrisponda al valore di minimum-distance (7). Per modificare una chiave singola individualmente, usare una dichiarazione annidata:

 
% spazio predefinito tra i righi
\new PianoStaff <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

% spazio ridotto tra i righi
\new PianoStaff \with {
  % questa è la dichiarazione annidata
  \override StaffGrouper.staff-staff-spacing.basic-distance = #7
} <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

[image of music]

Con una dichiarazione annidata si aggiornerà la chiave specificata (come basic-distance nell’esempio precedente) senza modificare alcuna altra chiave già impostata per la stessa proprietà.

Ora immaginiamo di volere che i righi siano più vicini possibile ma senza sovrapporsi. Il modo più semplice per fare ciò è impostare tutte e quattro le chiavi della lista su zero. Tuttavia, non è necessario inserire quattro dichiarazioni annidate, una per ogni chiave. Si può invece ridefinire completamente la proprietà con una sola dichiarazione, attraverso una lista associativa:

 
\new PianoStaff \with {
  \override StaffGrouper.staff-staff-spacing =
    #'((basic-distance . 0)
       (minimum-distance . 0)
       (padding . 0)
       (stretchability . 0))
} <<
  \new Staff { \clef treble c''1 }
  \new Staff { \clef bass   c1   }
>>

[image of music]

Nota bene che qualsiasi chiave non elencata esplicitamente nella definizione della lista associativa sarà ripristinata al suo valore predefinito-quando-non-impostato. Nel caso di staff-staff-spacing, qualsiasi chiave-valore non impostata viene ripristinata su zero (eccetto stretchability, che prende il valore di basic-distance quando non è impostata). Dunque le due seguenti dichiarazioni sono equivalenti:

 
\override StaffGrouper.staff-staff-spacing =
  #'((basic-distance . 7))

\override StaffGrouper.staff-staff-spacing =
  #'((basic-distance . 7)
     (minimum-distance . 0)
     (padding . 0)
     (stretchability . 7))

Una conseguenza (possibilmente non voluta) di questo approccio è l’eliminazione di eventuali impostazioni predefinite impostate in un file di inizializzazione e caricate ogni volta che un file di input viene compilato. Nell’esempio precedente le impostazioni predefinite per padding e minimum-distance (definite in ‘scm/define-grobs.scm’) sono ripristinate ai loro valori predefiniti-quando-non-impostati (zero per entrambe le chiavi). La definizione di una proprietà o di una variabile come una lista associativa (di qualsiasi dimensione) ripristinerà sempre tutte le chiavi-valori ai loro valori predefiniti-quando-non-impostati. A meno che questo non sia il risultato voluto, è più sicuro aggiornare le chiavi-valori individualmente con una dichiarazione annidata.

Nota: Le dichiarazioni annidate non funzionano per le liste associative delle proprietà di contesto (come beamExceptions, keyAlterations, timeSignatureSettings, etc.). Queste proprietà possono essere modificate soltanto ridefinendole completamente come liste associative.


[ < ] [ > ]   [ << ] [ Su ] [ >> ]

This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.

Altre lingue: English, català, deutsch, español, français, 日本語.
A proposito della selezione automatica della lingua.