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

4.2 Manuale del Funzionamento interno

@translationof The Internals Reference manual


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

4.2.1 Proprietà degli oggetti di formattazione

@translationof Properties of layout objects

Immagina di avere una legatura di portamento che ai tuoi occhi appare troppo sottile e che vorresti un po’ più spessa. Come fare? Sai che LilyPond è molto flessibile e che quindi dovrebbe essere possibile farlo; e probabilmente immagini che sia necessario un comando \override. Ma esiste una proprietà che controlla lo spessore di una legatura? E se esiste come può essere modificata? Qui entra in gioco il manuale del Funzionamento Interno, che contiene tutte le informazioni necessarie per costruire tutti i comandi \override.

Prima di dare un’occhiata alla guida al Funzionamento Interno, vogliamo avvisarti: si tratta di un documento di riferimento, che significa che ci sono poche o nessune spiegazioni al suo interno, dato che il suo scopo è presentare le informazioni in modo preciso e conciso. Dunque potrà sembrare scoraggiante al primo impatto. Ma non ti preoccupare! I consigli e le spiegazioni presentate qui, insieme a un po’ di pratica, ti permetteranno di estrarre da solo da quella guida le informazioni che cerchi.

Partiamo da un esempio concreto, un semplice frammento di musica:

 
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Supponiamo ora che si vogliano rendere un po’ più spesse le legature di portamento. È possibile? La legatura di portamento è certamente un oggetto di formattazione, dunque la domanda è: ‘Esiste una proprietà che appartiene a una legatura di portamento in grado di controllare lo spessore?’ Per rispondere a questa domanda dobbiamo guardare nella guida al Funzionamento interno.

Puoi trovare la guida nella versione di LilyPond che stai usando sul sito di LilyPond: https://lilypond.org. Vai alla pagina della documentazione e clicca sul link alla guida del Funzionamento interno. Per poter seguire questo manuale dovresti usare la versione HTML standard, non quella in un’unica grande pagina né il PDF. Nei prossimi paragrafi ti servirà per seguire gli esempi che faremo.

Sotto il titolo vedrai cinque link. Seleziona il link al Backend, dove si trovano le informazioni sugli oggetti di formattazione (layout objects). Poi sotto il titolo Backend, seleziona il link a All layout objects. La pagina che compare elenca tutti gli oggetti di formattazione usati nella tua versione di LilyPond, in ordine alfabetico. Seleziona il link a Slur (legatura di portamento) e verranno elencate le sue proprietà.

Si può trovare questa pagina anche dalla Guida alla notazione. In una delle pagine che tratta le legature di portamento potrai trovare un link alla Guida al funzionamento interno. Il link ti porterà direttamente a questa pagina, ma se hai un’idea di quale sia l’oggetto di formattazione da modificare, è più semplice andare direttamente nella guida del Funzionamento interno e cercare lì.

La pagina sulla legatura di portamento (Slur) ci dice per prima cosa che gli oggetti Slur sono creati dall’incisore Slur_engraver. Poi elenca le impostazioni standard. Scorrile cercando la proprietà che potrebbe controllare lo spessore delle legature di portamento; dovresti trovare

 
thickness (number)
     1.2
     Line thickness, generally measured in line-thickness

Sembra che sia quel che stiamo cercando. Ci dice che il valore di thickness (spessore) è un semplice numero, che il valore predefinito è 1.2 e che le unità si trovano in un’altra proprietà chiamata line-thickness.

Come abbiamo detto prima, ci sono poche spiegazioni nella guida al Funzionamento interno, tuttavia abbiamo già informazioni sufficienti per cercare di cambiare lo spessore delle legature di portamento. Vediamo che il nome dell’oggetto di formattazione è Slur, che il nome della proprietà da modificare è thickness e che il nuovo valore dovrà essere un numero un po’ più grande di 1.2 se vogliamo rendere più spesse le legature.

Ora possiamo costruire il comando \override sostituendo i valori che abbiamo trovato per i nomi e omettendo il contesto. Inizialmente usiamo un valore molto grande per lo spessore, per essere sicuri che il comando funzioni:

 
\override Slur.thickness = #5.0

Non dimenticare il # che precede il nuovo valore!

L’ultima domanda è: ‘dove va messo questo comando?’ Finché non sei sicuro e stai ancora imparando, la risposta migliore è: ‘dentro la musica, prima della prima legatura di portamento e accanto ad essa.’ Facciamolo:

 
{
  \key es \major
  \time 6/8
  \relative {
    % Aumenta lo spessore di tutte le legature di portamento successive da 1.2 a 5.0
    \override Slur.thickness = #5.0
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

e vediamo che la legatura di portamento è davvero più grossa.

Questi sono i fondamenti per costruire i comandi \override. Incontreremo delle situazioni più complesse nelle sezioni successive, ma ora possiedi già tutte le conoscenze di base che ti permetteranno di costruire i tuoi comandi. Ti manca solo un po’ di pratica, che potrai fare grazie ai prossimi esempi.

Trovare il contesto

E se avessimo bisogno di specificare il contesto? Quale dovrebbe essere? Potremmo immaginare che le legature di portamento si trovino nel contesto Voice, dato che sono ovviamente collegate strettamente alle singole voci, ma possiamo esserne sicuri? Per scoprirlo, vai in cima alla pagina del Funzionamento Interno relativa a «Slur», dove dice ‘Slur objects are created by: Slur engraver’. Significa che le legature di portamento sono create nel contesto in cui si trova l’incisore Slur_engraver. Segui il link alla pagina Slur_engraver. In fondo dice che lo Slur_engraver fa parte di vari contesti Voice, incluso il contesto standard della voce, Voice. Dunque la nostra supposizione era corretta. E dato che Voice è uno dei contesti che si trovano al livello più basso, come è sottinteso senza ambiguità dal fatto che stiamo inserendo delle note, in questo caso possiamo ometterlo.

Sovrascrivere una volta sola

Come puoi vedere, tutte le legature di portamento sono più spesse nell’ultimo esempio. E se volessimo rendere più spessa solo la prima legatura di portamento? Dovremmo usare il comando \once. Se posto immediatamente prima di \override fa sì che questo modifichi soltanto la legatura di portamento che inizia sulla nota immediatamente seguente. Se la nota immediatamente seguente non inizia la legatura, il comando non ha alcun effetto – non è ricordato finché non si incontra una legatura di portamento, ma viene direttamente scartato. Quindi il comando con \once deve essere riposizionato nel modo seguente:

 
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Aumenta lo spessore solo della legatura che segue
    \once \override Slur.thickness = #5.0
    bes8[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Ora solo la prima legatura è più spessa.

Il comando \once può essere usato anche prima del comando \set.

Ripristinare

E se volessimo che soltanto le prime due legature di portamento fossero più spesse? Potremmo usare due comandi, ciascuno preceduto da \once, messo immediatamente prima di ognuna delle note da cui iniziano le legature:

 
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Aumenta lo spessore solo della legatura che segue
    \once \override Slur.thickness = #5.0
    bes[( g]) g |
    % Aumenta lo spessore solo della legatura che segue
    \once \override Slur.thickness = #5.0
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

oppure potremmo omettere il comando \once e usare il comando \revert per far sì che la proprietà thickness ritorni al valore predefinito dopo la seconda legatura:

 
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Aumenta lo spessore di tutte le legature di portamento che
    % seguono da 1.2 a 5.0
    \override Slur.thickness = #5.0
    bes[( g]) g |
    g8[( es]) es
    % Ripristina lo spessore di tutte le legature di portamento che seguono
    % al valore predefinito 1.2
    \revert Slur.thickness
    d8[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

Il comando \revert serve a riportare qualsiasi proprietà modificata con \override al suo valore predefinito. Puoi usare qualsiasi metodo si adatti meglio a quello che vuoi fare.

Si conclude l’introduzione alla guida al Funzionamento interno e ai metodi di base delle modifiche. Nelle sezioni successive di questo capitolo seguiranno vari esempi, in parte per presentarti ulteriori caratteristiche della guida al Funzionamento interno e in parte per farti esercitare nell’estrarre informazioni da esso. Questi esempi conterranno sempre meno consigli e spiegazioni.


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

4.2.2 Proprietà presenti nelle interfacce

@translationof Properties found in interfaces

Supponiamo ora di voler produrre un testo vocale in corsivo. Che tipo di comando \override ci serve? Consultiamo prima la pagina della guida al Funzionamento interno che elenca ‘All layout objects’, come prima, e cerchiamo un oggetto che potrebbe controllare il testo (in inglese lyrics). Troviamo LyricText, che sembra quello giusto. Clicchiamo su di esso e troviamo le proprietà del testo. Queste comprendono font-series e font-size, ma niente che possa dare una forma corsiva. Ciò è dovuto al fatto che la proprietà della forma è comune a tutti gli oggetti di tipi di carattere (font). Quindi, invece di includerla in ogni oggetto di formattazione, viene raggruppata insieme ad altre simili proprietà comuni e inserita in un’Interfaccia: font-interface.

Ora dobbiamo capire come trovare le proprietà delle interfacce e come scoprire quali oggetti usano queste proprietà.

Torna a vedere la pagina che descrive LyricText. In fondo alla pagina c’è una lista di interfacce cliccabili supportate da LyricText. La lista ha molti elementi, incluso font-interface. Cliccando su di essa arriviamo alle proprietà associate con questa interfaccia, che sono anche le proprietà di tutti gli oggetti che la supportano, tra cui LyricText.

Vediamo tutte le proprietà configurabili dall’utente che controllano i tipi di carattere, compresa font-shape(symbol), dove symbol può essere impostato su upright, italic o caps.

Puoi notare che lì sono elencate anche font-series e font-size. Ti potresti chiedere: perché le proprietà comuni dei tipi di carattere font-series e font-size fanno parte sia dell’oggetto LyricText sia dell’interfaccia font-interface mentre font-shape è presente solo nell’interfaccia? Ciò è dovuto al fatto che i valori globali predefiniti di font-series e font-size cambiano quando viene creato un oggetto LyricText, mentre i valori di font-shape non cambiano. Gli elementi in LyricText indicano quali sono i valori per queste due proprietà che si applicano a LyricText. Altri oggetti che supportano font-interface imposteranno queste proprietà in modo diverso quando vengono creati.

Vediamo se ora riusciamo a costruire il comando \override per rendere il testo corsivo. L’oggetto è LyricText, la proprietà è font-shape e il valore è italic. Come in precedenza, ometteremo il contesto.

Per inciso, è importante notare che alcune proprietà prendono come valori dei simboli, ad esempio italic; in questo caso i valori devono essere preceduti da un apostrofo, '. I simboli vengono letti internamente da LilyPond. Nota che sono diversi dalle stringhe di testo arbitrarie, che appaiono nella forma "una stringa di testo"; maggiori informazioni sui simboli e le stringhe si trovano in (extending)Scheme tutorial section ‘Scheme tutorial’ in Estendere.

Quindi il comando \override che rende il testo corsivo è:

 
\override LyricText.font-shape = #'italic

Deve essere posizionato proprio di fronte al testo che vogliamo modificare, in questo modo:

 
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    \override LyricText.font-shape = #'italic
    The man who | feels love's sweet e -- | mo -- tion
  }
}

[image of music]

e tutto il testo è in corsivo.

Nota: Nel testo bisogna lasciare sempre uno spazio bianco tra l’ultima sillaba e la parentesi graffa che chiude il blocco.

Vedi anche

Estendere: (extending)Scheme tutorial section ‘Scheme tutorial’ in Estendere.


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

4.2.3 Tipi di proprietà

@translationof Types of properties

Finora abbiamo visto due tipi di proprietà: number e symbol. Per essere valido, il valore dato a una proprietà deve essere del tipo corretto e obbedire alle regole di quel tipo. Nella guida al Funzionamento interno il tipo di proprietà è indicato tra parentesi dopo il nome della proprietà. Ecco una lista dei tipi che ti possono servire, corredata dalle regole per ciascun tipo e da alcuni esempi. Ovviamente, se inseriti in un comando \override, devono essere sempre preceduti dal simbolo di cancelletto, #, anche se il valore stesso già inizia con #. In questa sede diamo solo esempi di costanti: se si desidera elaborare un valore con Scheme, si veda (extending)Calculations in Scheme section ‘Calculations in Scheme’ in Estendere.

Tipo di proprietàRegoleEsempi
BooleanO Vero (True) o Falso (False), rappresentato da #t o #f#t, #f
Dimension (in staff space)Un numero decimale (nell’unità di misura dello spazio del rigo)2.5, 0.34
DirectionUna valida direzione costante o il suo equivalente numerico (0 o CENTER indicano una direzione neutrale)LEFT, CENTER, UP, 1, -1
IntegerUn numero intero3, -1
ListUna sequenza di costanti o simboli separata da spazi, racchiusa tra parentesi e preceduta da un apostrofo'(left-edge staff-bar), '(1), '(), '(1.0 0.25 0.5)
MarkupQualsiasi valido blocco markup\markup { \italic "cresc." }, "bagpipe"
MomentUna frazione di una nota intera costruita con la funzione make-moment(ly:make-moment 1/4), (ly:make-moment 3/8)
NumberQualsiasi valore positivo o negativo, possibilmente decimale3, -2.45
Pair (of numbers)Due numeri separati da un ‘spazio . spazio’ e racchiusi tra parentesi precedute da un apostrofo'(2 . 3.5), '(0.1 . -3.2)
SymbolQualsiasi insieme di simboli ammesso per quella proprietà, preceduto da un apostrofo'italic, 'inside
UnknownUna procedura o un valore #f che impedisca l’azionebend::print, ly:text-interface::print, #f
VectorCostanti racchiuse tra #(…).#(#t #t #f)

Vedi anche

Estendere: (extending)Scheme tutorial section ‘Scheme tutorial’ in Estendere.


[ < ] [ > ]   [ << ] [ 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, 日本語, nederlands.
A proposito della selezione automatica della lingua.