| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Contexts and engravers
I contesti e gli incisori sono stati menzionati in modo informale nelle sezioni precedenti; ora dobbiamo approfondire questi concetti, perché sono importanti nell’ottimizzazione dell’output di LilyPond.
| 3.3.1 I contesti | ||
| 3.3.2 Creare i contesti | ||
| 3.3.3 Gli incisori | ||
| 3.3.4 Modificare le proprietà di contesto | ||
| 3.3.5 Aggiungere e togliere gli incisori |
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Contexts explained
Quando la musica viene elaborata, molti elementi notazionali che non compaiono esplicitamente nel file di input devono essere aggiunti nell’output. Ad esempio, si confrontino l’input e l’output del seguente esempio:
\relative { cis''4 cis2. | a4 a2. | }
L’input è alquanto essenziale, ma nell’output sono stati aggiunti stanghette, alterazioni, l’armatura di chiave e il tempo. Quando LilyPond interpreta l’input l’informazione musicale viene analizzata da sinistra a destra, proprio come un musicista legge uno spartito. Mentre legge l’input, il programma ricorda dove si trovano i confini della misura, e quali altezze richiedono espliciti accidenti. Questa informazione deve essere conservata a diversi livelli. Ad esempio, un accidente influisce solo su un singolo rigo, mentre una stanghetta deve essere sincronizzata lungo l’intera partitura.
All’interno di LilyPond, queste regole e pezzi di informazione sono raggruppati
nei Contesti. Abbiamo già presentato il contesto Voice.
Altri contesti sono Staff e Score. I contesti sono strutturati
gerarchicamente per riflettere la natura gerarchica di una partitura musicale.
Ad esempio: un contesto Staff può contenere molti contesti Voice,
e un contesto Score può contenere molti contesti Staff.
Ogni contesto è responsabile di far rispettare alcune regole di notazione,
creare alcuni oggetti della notazione e conservare le proprietà
associate. Ad esempio, il contesto Voice può introdurre
un’alterazione e poi il contesto Staff mantiene la regola per
mostrare o sopprimere l’alterazione per il resto della misura.
Un altro esempio: la sincronizzazione delle stanghette è gestita, per
impostazione predefinita, nel contesto Score. Tuttavia, in
alcune forme musicali potremmo non volere che le stanghette siano
sincronizzate – si consideri una partitura polimetrica in 4/4 e 3/4. In
questi casi, dobbiamo modificare le impostazioni predefinite dei
contesti Score e Staff.
Per spartiti molto semplici, i contesti vengono creati implicitamente, e non è necessario occuparsene. Ma per brani più ampi, come qualsiasi cosa abbia più di un rigo, devono essere creati esplicitamente per essere sicuri di avere tutti i righi necessari, e che questi siano nel giusto ordine. Per scrivere brani che utilizzano una notazione speciale, di solito si modificano i contesti esistenti, o addirittura se ne creano di completamente nuovi.
Oltre ai contesti Score, Staff e Voice ci sono
contesti che stanno tra i livelli della partitura (score) e del
rigo (staff) per controllare i gruppi di pentagrammi, come
i contesti PianoStaff e ChoirStaff. Ci sono anche
contesti alternativi per il rigo e la voce, e contesti per il
testo, le percussioni, la tastiera, il basso continuo, etc.
I nomi di tutti i tipi di contesto sono formati da una o più
parole, e ogni parola viene unita immediatamente alla parola
precedente senza trattini o underscore bensì con la prima lettera
maiuscola: ad esempio, GregorianTranscriptionStaff.
Guida alla notazione: (notation)Tutto sui contesti section ‘Tutto sui contesti’ in Guida alla Notazione.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Creating contexts
In un file di input, un blocco della partitura (introdotto dal comando
\score) contiene un’espressione musicale singola; ma può contenere
anche definizioni di output associate (un blocco \layout, un blocco
\midi o entrambi).
Di solito si lascia che il contesto Score sia creato automaticamente
quando inizia l’interpretazione di quell’espressione musicale.
Per le partiture che hanno una sola voce e un solo rigo, si può lasciare che
i contesti Voice e Staff siano creati automaticamente, ma per
le partiture più complesse è necessario crearli manualmente. Il comando
più semplice per farlo è \new. Viene posto prima di
un’espressione musicale, ad esempio
\new tipo espressione-musicale |
dove tipo è il nome di un contesto (come Staff o
Voice). Questo comando crea un nuovo contesto, e inizia a
interpretare espressione-musicale all’interno di quel contesto.
(Si noti che normalmente non è necessario il comando \new Score,
perché il fondamentale contesto di livello superiore Score viene creato
automaticamente quando l’espressione musicale all’interno del blocco \score
viene interpretata. L’unica ragione per creare un contesto Score
esplicitamente con \new Score è di inserire un blocco
\with dove si possono specificare uno o più valori delle proprietà
di contesto, predefiniti per tutto lo spartito.. Le informazioni su come
usare i blocchi \with si trovano sotto il titolo
“Impostare le proprietà di contesto con \with” in
Modificare le proprietà di contesto.)
Nota: \new Score non dovrebbe essere usato perché il fondamentale
contesto di livello superiore Score viene creato automaticamente quando
l’espressione musicale all’interno del blocco \score viene
interpretata. I valori predefiniti delle proprietà di contesto validi per tutta
la partitura possono essere modificati nel blocco \layout. Vedi
Modificare le proprietà di contesto
Nelle sezioni precedenti hai già visto molti esempi pratici della creazione
di nuovi contesti Staff e Voice, ma per ricordarti
come questi comandi vengano usati in pratica, ecco un esempio
di musica vera e propria:
\score { % inizio di una singola espressione musicale composta << % inizio di una sezione di righi simultanei \time 2/4 \new Staff { % crea rigo della mano destra (MD) \clef "treble" \key g \minor \new Voice { % crea la voce per le note della MD \relative { % inizio delle note della MD d''4 ees16 c8. | d4 ees16 c8. | } % fine delle note della MD } % fine della voce MD } % fine del rigo MD \new Staff << % crea il rigo della mano sinistra (MS); servono due voci simultanee \clef "bass" \key g \minor \new Voice { % crea la prima voce di MS \voiceOne \relative { % inizio delle note della prima voce di MS g8 <bes d> ees, <g c> | g8 <bes d> ees, <g c> | } % fine delle note della prima voce di MS } % fine della prima voce di MS \new Voice { % crea la seconda voce di MS \voiceTwo \relative { % inizio delle note della seconda voce di MS g4 ees | g4 ees | } % fine delle note della seconda voce di MS } % fine della seconda voce di MS >> % fine del rigo di MS >> % fine della sezione dei righi simultanei } % fine della singola espressione musicale composta
(Si noti che tutte le asserzioni che aprono un blocco o con delle
parentesi graffe, {, o con delle parentesi angolari doppie, <<,
sono indentate di due spazi, e la parentesi di chiusura corrispondente
è indentata esattamente dello stesso spazio. Pur non essendo un
requisito indispensabile, seguire questa pratica ridurrà enormemente
il numero di errori da ‘parentesi spaiate’, ed è quindi fortemente
consigliato. Permette di vedere a colpo d’occhio la struttura della
musica, e qualsiasi parentesi spaiata sarà facilmente riconoscibile.
Si noti anche come il rigo LH faccia uso di parentesi angolari doppie
perché richiede due voci, mentre il rigo RH è costituito da
una singola espressione musicale compresa tra parentesi
graffe perché richiede una sola voce.)
Il comando \new può anche dare un nome identificativo al
contesto per distinguerlo da altri contesti dello stesso tipo,
\new tipo = id espressione-musicale |
Si noti la distinzione tra il nome del tipo di contesto,
Staff, Voice, etc, e il nome identificativo di un
particolare esempio di quel tipo, che può essere qualsiasi sequenza di
lettere inventata dall’utente. Nel nome identificativo si possono usare
anche numeri e spazi, ma in questo caso deve essere compreso tra virgolette,
ovvero \new Staff = "MioPentagramma 1" espressione-musicale.
Il nome identificativo viene utilizzato per riportare a quel
particolare esempio di un contesto. Abbiamo visto questo utilizzo
nella sezione sul testo, si veda Voci e musica vocale.
Guida alla notazione: (notation)Creazione e citazione di un contesto section ‘Creazione e citazione di un contesto’ in Guida alla Notazione.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Engravers explained
Ogni segno presente nell’output di una partitura realizzata con LilyPond
è prodotto da un Engraver (incisore). Dunque c’è un incisore per
creare i righi, uno per le teste delle note, uno per i gambi, uno per le
travature, etc, etc. In totale ci sono più di 120 incisori!
Fortunatamente, per gran parte delle partiture è necessario conoscerne
pochi soltanto, e per partiture semplici non occorre conoscerne
alcuno.
Gli incisori vivono ed operano all’interno dei Contesti. Incisori come
il Metronome_mark_engraver, la cui azione e il cui output si applicano
alla partitura nel suo complesso, operano nel contesto di livello più superiore – il
contesto Score.
Gli incisori Clef_engraver e Key_engraver devono invece
trovarsi in ogni contesto Staff, poiché righi diversi potrebbero
richiedere diverse chiavi e tonalità.
Gli incisori Note_heads_engraver e Stem_engraver abitano
ogni contesto Voice, il contesto che si trova al livello più
basso di tutti.
Ogni incisore elabora gli oggetti specifici associati alla sua funzione, e gestisce le proprietà che a quella funzione si riferiscono. Queste proprietà, come le proprietà associate ai contesti, possono essere modificate per cambiare il funzionamento dell’incisore o l’aspetto di quegli elementi nella partitura.
Gli incisori hanno tutti dei nomi composti formati da parole che
descrivono la loro funzione. Solo la prima parola inizia con una maiuscola,
e il resto è collegato insieme con dei trattini bassi. Quindi
l’incisore Staff_symbol_engraver ha il compito di creare le linee del
pentagramma, il Clef_engraver determina e definisce il punto
di riferimento dell’altezza sul rigo disegnando il simbolo di una chiave.
Ecco alcuni degli incisori più utilizzati insieme alla loro funzione. Vedrai che di solito è facile indovinare la funzione a partire dal nome, o viceversa.
| Incisore | Funzione |
|---|---|
| Accidental_engraver | Crea le alterazioni, le alterazioni di precauzione e di cortesia |
| Beam_engraver | Incide le travature |
| Clef_engraver | Incide le chiavi |
| Completion_heads_engraver | Separa le note che attraversano le stanghette |
| Dynamic_engraver | Crea le forcelle e i testi relativi alla dinamica |
| Forbid_line_break_engraver | Impedisce l’a capo se un elemento musicale è ancora attivo |
| Key_engraver | Crea l’armatura di chiave |
| Metronome_mark_engraver | Incide il tempo metronomico |
| Note_heads_engraver | Incide le teste delle note |
| Rest_engraver | Incide le pause |
| Staff_symbol_engraver | Incide le cinque linee (predefinite) del pentagramma |
| Stem_engraver | Crea i gambi e i tremoli su singoli gambi |
| Time_signature_engraver | Crea l’indicazione di tempo |
Vedremo in seguito come cambiare l’output di LilyPond modificando il comportamento degli incisori.
Guida al funzionamento interno: (internals)Engravers and Performers section ‘Engravers and Performers’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Modifying context properties
I contesti si occupano di tenere i valori di un certo numero di
proprietà del contesto. Molte di queste possono essere cambiate
per influenzare l’interpretazione dell’input e quindi modificare
l’aspetto dell’output. Per cambiarle si usa il comando
\set. Questo assume la seguente forma
\set NomeContesto.nomeProprietà = #valore |
Dove il NomeContesto è di solito Score,
Staff o Voice. Può essere omesso, e in questo
caso viene considerato il contesto attuale (solitamente Voice).
I nomi delle proprietà di contesto consistono in parole unite insieme e senza lineette o trattini bassi, e tutte le parole tranne la prima iniziano con una lettera maiuscola. Ecco alcuni esempi di quelle più usate comunemente. Ma ne esistono molte altre.
| nomeProprietà | Tipo | Funzione | Valore di esempio |
|---|---|---|---|
| extraNatural | Booleano | Se è vero, mette i segni di bequadro prima degli accidenti | #t, #f |
| currentBarNumber | Intero | Imposta il numero della battuta corrente | 50 |
| doubleSlurs | Booleano | Se è vero, stampa le legature di portamento sia sopra che sotto le note | #t, #f |
| instrumentName | Testo | Imposta il nome da inserire all’inizio del rigo | "Cello I" |
| fontSize | Reale | Aumenta o riduce la dimensione del carattere | 2.4 |
| stanza | Testo | Imposta il testo da stampare prima dell’inizio di una strofa | "2" |
mentre un Booleano è o Vero (#t) o Falso (#f),
un Intero è un numero intero positivo, un Reale è un numero
decimale positivo o negativo, e il testo è racchiuso tra
virgolette. Si noti la presenza del segno cancelletto,
(#), in due punti diversi – come parte del valore Booleano
prima di t o f, e prima del valore
nell’affermazione \set. Dunque quando si inserisce un valore
Booleano bisogna scrivere due cancelletti, ad esempio ##t.
Prima di poter impostare una qualsiasi di queste proprietà dobbiamo sapere
in quale contesto esse operino. Talvolta questo è ovvio,
ma talvolta può risultare complicato. Se viene specificato il
contesto sbagliato, non viene generato alcun messaggio di errore, ma l’azione
desiderata non avrà luogo. Ad esempio, la proprietà
clefGlyph risiede ovviamente nel contesto Staff, poiché
è il glifo della chiave a dover essere cambiato.
Nell’esempio seguente viene stampata correttamente la prima chiave del
pentagramma, ma non la seconda (che appare come la chiave predefinita di
violino, invece della chiave di basso o Fa che ci aspetteremmo) perché
abbiamo omesso il nome del contesto.
<< \new Staff \relative { \set Staff.clefGlyph = "clefs.C" c''2 c } \new Staff \relative { \set clefGlyph = "clefs.F" % Sbagliato! d'2 d } >>
Ricorda che il nome di contesto predefinito è Voice, dunque il
secondo comando \set imposta la proprietà clefGlyph nel
contesto Voice col valore “clefs.F”, ma dato che LilyPond non trova
tale proprietà nel contesto Voice, non ha avuto luogo
alcuna altra azione. Questo non è un errore, e nessun messaggio di
errore viene riportato nel file di log.
Analogamente, se il nome della proprietà è stato scritto male, non viene
generato alcun messaggio di errore, e ovviamente l’azione desiderata non può essere
eseguita. Infatti, col comando \set puoi impostare qualsiasi ‘proprietà’
(anche inventata) usando qualsiasi nome che ti piaccia in qualsiasi contesto
esistente. Ma se LilyPond non conosce il nome, allora non verrà intrapresa
alcuna azione. Alcuni editor di testo che hanno uno speciale supporto per i file
di input di LilyPond presentano i nomi delle proprietà con una lista scorrevole
al passaggio del mouse, come JEdit col plugin LilyPondTool, oppure
evidenziano in modo diverso i nomi delle proprietà non conosciuti, come fa ConTEXT.
Se non usi un editor con queste funzionalità, è consigliabile controllare il nome
delle proprietà nella Guida al funzionamento interno: si veda
(internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno, o
(internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno.
La proprietà clefGlyph funzionerà soltanto se inserita nel contesto
Staff, ma alcune proprietà possono essere collocate in più di un contesto.
Ad esempio, la proprietà extraNatural è impostata di default sul
valore ##t (vero) su tutti i righi. Se viene impostata su ##f (falso) in uno
specifico contesto Staff si applica solo alle alterazioni presenti su
quel rigo. Se impostata su falso nel contesto Score si applica a tutti
i righi.
Quindi in questo modo si disattiva il bequadro su un rigo:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>
e in questo modo si disattiva in tutti i righi:
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>
Un altro esempio: se la proprietà clefTransposition viene posta
nel contesto Score, cambia immediatamente il valore
della trasposizione in tutti i righi presenti e imposta un nuovo
valore predefinito che sarà applicato a tutti i righi.
Il comando opposto, \unset, di fatto rimuove la proprietà
dal contesto, e questo fa sì che molte proprietà
tornino al valore predefinito. Solitamente \unset non è
necessario dal momento che un nuovo comando \set permetterà
di ottenere quanto si desidera.
I comandi \set e \unset possono trovarsi in qualsiasi
punto del file di input e avranno effetto dal momento in cui si
incontrano fino alla fine della partitura o finché la proprietà non
viene attivata (\set) o disattivata (\unset) di nuovo.
Proviamo a cambiare varie volte la dimensione del font, che influisce (tra
le altre cose) sulla dimensione delle teste delle note. La modifica è relativa
al valore predefinito, non all’ultimo valore impostato.
\relative { c'4 d % rimpicciolisce le teste di nota \set fontSize = #-4 e4 f | % ingrandisce le teste di nota \set fontSize = #2.5 g4 a % ripristina la dimensione predefinita \unset fontSize b4 c | }
Abbiamo visto come impostare i valori di diversi tipi di
proprietà. Si note che gli interi e i numeri sono sempre preceduti
da un segno di cancelletto, #, mentre un valore vero o falso è
specificato con ##t e ##f, ovvero con due cancelletti.
Una proprietà testuale dovrebbe essere racchiusa tra virgolette, come
abbiamo visto prima, sebbene vedremo in seguito che in realtà il testo
può essere specificato in un modo molto più generale usando il potente
comando \markup.
\withIl valore predefinito delle proprietà di contesto possono essere impostate
anche nel momento in cui il contesto viene creato. Talvolta questo è un
modo più chiaro per specificare il valore della proprietà se questa deve
rimanere fissa per la durata del contesto. Un contesto creato col comando \new
può essere immediatamente seguito da un blocco \with { … } dove
vengono impostati i valori predefiniti della proprietà. Ad esempio, se vogliamo
eliminare la stampa del bequadro per l’estensione di un rigo possiamo scrivere:
\new Staff \with { extraNatural = ##f }
|
così:
<< \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>
Si possono ancora cambiare dinamicamente le proprietà impostate in questo modo
usando \set, mentre con \unset si possono riportare al valore
predefinito impostato nel blocco \with.
Quindi se la proprietà fontSize viene inserita in una
proposizione \with, imposta il valore predefinito
della dimensione del font. Se viene in seguito modificato con \set,
questo nuovo valore predefinito può essere recuperato col comando
\unset fontSize.
\contextI valori delle proprietà di un contesto possono essere impostate in tutti
i contesti di un particolare tipo, così come in tutti i contesti Staff, con un
solo comando. Il tipo di contesto viene identificato attraverso il
suo nome, come Staff, preceduto da una barra inversa (backslash): \Staff.
La dichiarazione che imposta il valore della proprietà è la stessa che
abbiamo visto nel blocco \with, introdotto prima. Viene posta in
un blocco \context all’interno di un blocco \layout. Ogni
blocco \context avrà effetto su tutti i contesti del tipo specificato
nel blocco \score o \book nel quale il blocco
\layout si trova. Ecco un esempio per mostrare la struttura:
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }
Se si vuole che la modifica della proprietà venga applicata a tutti i righi della partitura:
\score { << \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff { \relative { gisis'4 gis aeses aes } } >> \layout { \context { \Score extraNatural = ##f } } }
Le proprietà di contesto impostate in questo modo possono essere sovrascritte per
alcuni particolari contesti attraverso asserzioni in un blocco \with, e tramite
comandi \set incorporati nelle asserzioni musicali.
Guida alla notazione: (notation)Modifica delle impostazioni predefinite di un contesto section ‘Modifica delle impostazioni predefinite di un contesto’ in Guida alla Notazione, (notation)Il comando set section ‘Il comando set’ in Guida alla Notazione.
Guida al funzionamento interno: (internals)Contexts section ‘Contexts’ in Guida al Funzionamento Interno, (internals)Tunable context properties section ‘Tunable context properties’ in Guida al Funzionamento Interno.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] | [Inizio] | [Contenuti] | [Indice] | [ ? ] |
@translationof Adding and removing engravers
Abbiamo visto che ciascuno dei contesti contiene vari incisori, ognuno dei quali ha il compito di produrre una parte specifica dell’output, come stanghette, righi, teste, gambi, etc.. Se un incisore viene rimosso da un contesto, non può più produrre il suo output. Si tratta di un metodo sbrigativo per modificare l’output, e talvolta può essere utile.
Per rimuovere un incisore da un singolo contesto usiamo il
comando \with posto subito dopo il comando di creazione del
contesto, come esposto nella sezione precedente.
A titolo di esempio, ripetiamo un esempio della sezione precedente
rimuovendo le linee del rigo. Ricorda che le linee del rigo vengono
create dall’incisore Staff_symbol_engraver.
\new Staff \with { \remove "Staff_symbol_engraver" } \relative { c'4 d \set fontSize = #-4 % make note heads smaller e4 f | \set fontSize = #2.5 % make note heads larger g4 a \unset fontSize % return to default size b4 c | }
Gli incisori possono essere aggiunti anche a contesti individuali. Il comando per farlo è
\consists Engraver_name,
posto all’interno di un blocco \with. Alcune partiture vocali hanno
un ambitus collocato all’inizio del pentagramma per indicare l’intervallo tra la nota
più grave e quella più acuta in quella parte – si veda
(music-glossary)ambitus section ‘ambitus’ in Glossario Musicale. L’ambitus
viene creato dall’incisore Ambitus_engraver, che di norma non è incluso in
alcun contesto. Se lo aggiungiamo al contesto Voice, calcola l’intervallo
di quella voce soltanto:
\new Staff << \new Voice \with { \consists "Ambitus_engraver" } { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
ma se aggiungiamo l’incisore ambitus al contesto Staff, calcola
l’intervallo di tutte le note in tutte le voci di quel pentagramma:
\new Staff \with { \consists "Ambitus_engraver" } << \new Voice { \relative { \voiceOne c''4 a b g } } \new Voice { \relative { \voiceTwo c'4 e d f } } >>
Gli esempi precedenti mostrano come rimuovere o aggiungere degli incisori
a contesti individuali. È anche possibile rimuovere o aggiungere gli
incisori per ogni contesto di un particolare tipo inserendo i comandi
nel contesto appropriato in un blocco \layout. Ad esempio, se
volessimo mostrare un ambitus per ogni pentagramma in una partitura
di quattro pentagrammi, potremmo scrivere
\score { << \new Staff { \relative { c''4 a b g } } \new Staff { \relative { c'4 a b g } } \new Staff { \clef "G_8" \relative { c'4 a b g } } \new Staff { \clef "bass" \relative { c4 a b g } } >> \layout { \context { \Staff \consists "Ambitus_engraver" } } }
I valori delle proprietà di un contesto possono essere impostati anche
per tutti i contesti di un particolare tipo includendo il comando
\set in un blocco \context nello stesso modo.
Guida alla notazione: (notation)Modifica dei componenti aggiuntivi di un contesto section ‘Modifica dei componenti aggiuntivi di un contesto’ in Guida alla Notazione, (notation)Modifica delle impostazioni predefinite di un contesto section ‘Modifica delle impostazioni predefinite di un contesto’ in Guida alla Notazione.
Gli incisori Stem_engraver e Beam_engraver fissano i propri
oggetti alle teste delle note. Se si elimina Note_heads_engraver
le teste delle note non vengono prodotte e di conseguenza non vengono creati
nemmeno i gambi né le travature.
| [ < ] | [ > ] | [ << ] | [ Su ] | [ >> ] |
This document was generated by gub on Luglio 13, 2020 using texi2html 1.82.
Altre lingue: English, català, česky, deutsch, español, français, magyar, 日本語, nederlands.
A proposito della selezione automatica della lingua.