5.7.3 Fogli di stile (Manuale di apprendimento di LilyPond)

#### 5.7.3 Fogli di stile

L’output prodotto da LilyPond può essere ampiamente modificato, come abbiamo visto nel capitolo Modifica dell’output. Ma se avessi molti file di input a cui voler applicare delle modifiche? O se volessi semplicemente separare le modifiche dalla musica vera e propria? È molto semplice.

Prendiamo un esempio. Non ti preoccupare se non capisci le parti che hanno `#()`; verranno spiegate nel capitolo Modifiche avanzate con Scheme.

>     mpdolce =
>       \tweak self-alignment-X #-0.6
>       #(make-dynamic-script
>         #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

>     inst =
>     #(define-music-function
>          (string)
>          (string?)
>        #{ <>^\markup \bold \box #string #})

>     \relative {
>       \tempo 4=50
>       a'4.\mpdolce d8 cis4--\glissando a |
>       b4 bes a2 |
>       \inst "Clarinet"
>       cis4.\< d8 e4 fis |
>       g8(\! fis)-. e( d)-. cis2 |
>     }

Facciamo qualcosa a proposito delle definizioni di `mpdolce` e `inst`. Producono l’output che desideriamo, ma potremmo volerle usare in un altro brano. Potremmo semplicemente copiarle e incollarle in cima a ogni file, ma sarebbe una seccatura e lascerebbe queste definizioni nel file di input; personalmente trovo tutti quei `#()` piuttosto brutti, dunque nascondiamoli in un altro file:

    %%% salva queste righe in un file chiamato "definitions.ily"
    mpdolce =
      \tweak self-alignment-X #-0.6
      #(make-dynamic-script
        #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

    inst =
    #(define-music-function
         (string)
         (string?)
       #{ <>^\markup \bold \box #string #})

Ci riferiremo a questo file tramite il comando `\include` in cima al file dove c’è la musica. Si usa l’estensione `.ily` per distinguere il file da includere, che non intendiamo compilare da solo, dal file principale. Ora modifichiamo la musica (e salviamo questo file come `music.ly`).

    \include "definitions.ily"

    \relative {
      \tempo 4=50
      a'4.\mpdolce d8 cis4--\glissando a |
      b4 bes a2 |
      \inst "Clarinet"
      cis4.\< d8 e4 fis |
      g8(\! fis)-. e( d)-. cis2 |
    }

L’aspetto è migliore, ma facciamo ancora qualche modifica. Il glissando si vede appena, rendiamolo quindi più spesso e più vicino alle teste di nota. Mettiamo l’indicazione metronomica al di sopra della chiave invece che della prima nota. E, infine, dato che il mio professore di composizione odia l’indicazione di tempo “C”, usiamo “4/4” al suo posto.

Ma non devi cambiare `music.ly` bensì `definitions.ily`, in questo modo:

    %%%  definitions.ily
    mpdolce =
      \tweak self-alignment-X #-0.6
      #(make-dynamic-script
        #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

    inst =
    #(define-music-function
         (string)
         (string?)
       #{ <>^\markup \bold \box #string #})

    \layout{
      \context {
        \Score
        \override MetronomeMark.extra-offset = #'(-5 . 0)
        \override MetronomeMark.padding = #'3
      }
      \context {
        \Staff
        \override TimeSignature.style = #'numbered
      }
      \context {
        \Voice
        \override Glissando.thickness = #3
        \override Glissando.gap = #0.1
      }
    }

Ora l’aspetto è decisamente migliore! Supponiamo ora di voler pubblicare questo brano. Il mio professore di composizione non ama il segno di tempo “C”, mentre a me piace. Copiamo l’attuale file `definitions.ily` in `web-publish.ily` e modifichiamolo. Dato che questa musica verrà distribuita su un pdf da leggere a schermo, aumenteremo anche la dimensione complessiva dell’output.

    %%%  web-publish.ily
    mpdolce =
      \tweak self-alignment-X #-0.6
      #(make-dynamic-script
        #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

    inst =
    #(define-music-function
         (string)
         (string?)
       #{ <>^\markup \bold \box #string #})

    #(set-global-staff-size 23)

    \layout{
      \context {
        \Score
        \override MetronomeMark.extra-offset = #'(-5 . 0)
        \override MetronomeMark.padding = #'3
      }
      \context {
        \Staff
      }
      \context {
        \Voice
        \override Glissando.thickness = #3
        \override Glissando.gap = #0.1
      }
    }

Nel file che contiene la musica non rimane che sostituire `\include "definitions.ily"` con `\include "web-publish.ily"`. Potremmo usare un sistema ancora più conveniente: creare un file `definitions.ily` che contenga solo le definizioni di `mpdolce` e `inst`, un file `web-publish.ily` che contenga solo la sezione `\layout` vista prima, e un file `university.ily` che contenga solo le modifiche necessarie per produrre l’output preferito dal mio professore. L’inizio di `music.ly` apparirebbe così:

    \include "definitions.ily"

    %%% Una sola di queste linee deve essere commentata
    \include "web-publish.ily"
    %\include "university.ily"

Questo approccio può essere utile anche se si sta creando un insieme di parti. Uso una mezza dozzina di diversi ‘fogli di stile’ per i miei progetti. Faccio iniziare ogni file musicale con `\include "../global.ily"`, che contiene

    %%%   global.ily
    \version "2.26.0"

    #(ly:set-option 'point-and-click #f)

    \include "../init/init-defs.ly"
    \include "../init/init-layout.ly"
    \include "../init/init-headers.ly"
    \include "../init/init-paper.ly"

#### Manuale di apprendimento di LilyPond v2.26.0 (stable-branch).

- 1 Installazione
  - 1.1 Installazione grafica in GNU/Linux
  - 1.2 Installazione grafica in Windows
  - 1.3 Installazione grafica in macOS
  - 1.4 Installazione da linea di comando
- 2 Tutorial
  - 2.1 Compilare un file
  - 2.2 Come scrivere i file di input
    - 2.2.1 Notazione semplice
      - Altezze
      - Durate (ritmi)
      - Pause
      - Indicazione di tempo
      - Indicazioni di tempo
      - Chiave
      - Tutto insieme
    - 2.2.2 Lavorare sui file di input
  - 2.3 Gestire gli errori
    - 2.3.1 Consigli generali per la risoluzione dei problemi
    - 2.3.2 Alcuni errori comuni
  - 2.4 Come leggere i manuali
    - 2.4.1 Materiale omesso
    - 2.4.2 Esempi cliccabili
    - 2.4.3 Panoramica dei manuali
- 3 Notazione comunemente utilizzata
  - 3.1 Notazione su un solo pentagramma
    - 3.1.1 Stanghette e controlli di battuta
      - Stanghette
      - Controlli di battuta
    - 3.1.2 Altezze e armature di chiave
      - Alterazioni dell’altezza
      - Armature di chiave
      - Attenzione: armature di chiave e altezze
    - 3.1.3 Legature di valore e di portamento
      - Legature di valore
      - Legature di portamento
      - Legature di frase
      - Attenzione: legature di portamento vs. legature di valore
    - 3.1.4 Articolazioni e dinamiche
      - Articolazioni
      - Diteggiature
      - Dinamiche
    - 3.1.5 Aggiungere il testo
    - 3.1.6 Code automatiche e manuali
    - 3.1.7 Comandi di tempo avanzati
      - Battuta parziale
      - Gruppi irregolari
      - Abbellimenti
  - 3.2 Note simultanee
    - 3.2.1 Espressioni musicali
      - Analogia: le espressioni matematiche
      - Espressioni musicali simultanee: righi multipli
      - Espressioni musicali simultanee: rigo singolo
    - 3.2.2 Righi multipli
    - 3.2.3 Gruppi di pentagrammi
    - 3.2.4 Combinare le note negli accordi
    - 3.2.5 Polifonia su un singolo rigo
  - 3.3 Canzoni
    - 3.3.1 Impostare canzoni semplici
    - 3.3.2 Allineare il testo alla melodia
    - 3.3.3 Testo su più righi
  - 3.4 Ritocchi finali
    - 3.4.1 Organizzare i brani con le variabili
    - 3.4.2 Aggiungere i titoli
    - 3.4.3 Nomi assoluti delle note
    - 3.4.4 Dopo il tutorial
- 4 Concetti fondamentali
  - 4.1 Come funzionano i file di input di LilyPond
    - 4.1.1 Introduzione alla struttura di un file di LilyPond
    - 4.1.2 La partitura è una (singola) espressione musicale composta
    - 4.1.3 Annidare le espressioni musicali
    - 4.1.4 Struttura dell’inserimento note
    - 4.1.5 Sul non annidamento di parentesi e legature di valore
  - 4.2 Le voci contengono la musica
    - 4.2.1 Sento le Voci
    - 4.2.2 Definire esplicitamente le voci
    - 4.2.3 Voci e musica vocale
  - 4.3 Contesti e incisori
    - 4.3.1 I contesti
    - 4.3.2 Creare i contesti
    - 4.3.3 Gli incisori
    - 4.3.4 Modificare le proprietà di contesto
    - 4.3.5 Aggiungere e togliere gli incisori
  - 4.4 Estendere i modelli
    - 4.4.1 Soprano e violoncello
    - 4.4.2 Partitura vocale a quattro parti SATB
    - 4.4.3 Scrivere una partitura da zero
    - 4.4.4 Ridurre l’input grazie a variabili e funzioni
    - 4.4.5 Partiture e parti
- 5 Modifica dell’output
  - 5.1 Modifiche di base
    - 5.1.1 Introduzione alle modifiche
    - 5.1.2 Oggetti e interfacce
    - 5.1.3 Convenzioni per i nomi di oggetti e proprietà
    - 5.1.4 Metodi di modifica
      - Il comando `\override`
      - Il comando `\revert`
      - Il prefisso `\once`
      - Il comando di ritocco `\tweak`
      - Il prefisso `\single`
  - 5.2 Manuale del Funzionamento interno
    - 5.2.1 Proprietà degli oggetti di formattazione
    - 5.2.2 Proprietà presenti nelle interfacce
    - 5.2.3 Tipi di proprietà
  - 5.3 Aspetto degli oggetti
    - 5.3.1 Visibilità e colore degli oggetti
      - La proprietà `stencil`
      - La proprietà `break-visibility`
      - La proprietà `transparent`
      - La proprietà `color`
    - 5.3.2 Dimensione degli oggetti
    - 5.3.3 Lunghezza e spessore degli oggetti
  - 5.4 Posizionamento degli oggetti
    - 5.4.1 Comportamento automatico
    - 5.4.2 Oggetti interni al rigo
      - La proprietà `direction`
      - Diteggiatura
    - 5.4.3 Oggetti esterni al rigo
      - La proprietà `outside-staff-priority`
      - Il comando `\textLengthOn`
      - Posizionamento delle dinamiche
      - Dimensione dei grob
  - 5.5 Spaziatura verticale
  - 5.6 Collisioni tra oggetti
    - 5.6.1 Spostare gli oggetti
    - 5.6.2 Correggere elementi della notazione sovrapposti
      - La proprietà `padding`
      - La proprietà `right-padding`
      - La proprietà `staff-padding`
      - La proprietà `self-alignment-X`
      - La proprietà `staff-position`
      - La proprietà `extra-offset`
      - La proprietà `positions`
      - La proprietà `force-hshift`
    - 5.6.3 Esempio musicale
  - 5.7 Altre modifiche
    - 5.7.1 Altri usi delle modifiche con `\tweak`
      - Legature di valore tra note di voci diverse
      - Simulare una corona nel MIDI
    - 5.7.2 Uso delle variabili per modificare la formattazione
    - 5.7.3 Fogli di stile
    - 5.7.4 Altre fonti di informazione
    - 5.7.5 Modifiche avanzate con Scheme
- Appendix A Modelli
  - A.1 Modelli integrati
    - A.1.1 Modello SATB
    - A.1.2 Modello SSAATTBB
  - A.2 Modelli per rigo singolo
    - A.2.1 Solo note
    - A.2.2 Note e testo
    - A.2.3 Note e accordi
    - A.2.4 Note, testo e accordi
  - A.3 Modelli per pianoforte
    - A.3.1 Solo pianoforte
    - A.3.2 Pianoforte e melodia con testo
    - A.3.3 Pianoforte con testo al centro
  - A.4 Modelli per quartetto d’archi
    - A.4.1 Quartetto d’archi semplice
    - A.4.2 Parti di un quartetto d’archi
  - A.5 Modelli per gruppi vocali
    - A.5.1 Partitura vocale SATB
    - A.5.2 Partitura vocale SATB e automatica riduzione per pianoforte
    - A.5.3 SATB con contesti allineati
    - A.5.4 SATB su quattro righi
    - A.5.5 Strofa sola e ritornello a due parti
    - A.5.6 Inni
    - A.5.7 Salmi
  - A.6 Modelli per orchestra
    - A.6.1 Orchestra, coro e pianoforte
  - A.7 Modelli per notazione antica
    - A.7.1 Trascrizione di musica mensurale
    - A.7.2 Trascrizione di musica Gregoriana
  - A.8 Altri modelli
    - A.8.1 Combo jazz
- Appendix B GNU Free Documentation License
- Appendix C Indice