5.7.5 Ajustaments avançats amb l’Scheme (Manual d’aprenentatge del GNU LilyPond)

#### 5.7.5 Ajustaments avançats amb l’Scheme

Tot i que és possible fer moltes coses amb les ordres `\override` i `\tweak` , tenim una forma encara més poderosa de modificar el funcionament del LilyPond, mitjançant una interfície programable cap a les operacions internes del LilyPond. Es pot incorporar codi escrit en el llenguatge de programació Scheme, directament en el mecanisme de funcionament del LilyPond. Per descomptat, per fer això calen almenys uns coneixements bàsics de programació de l’Scheme, i proveïm una introducció al Tutorial de l’Scheme.

Com exemple que il·lustra una de les moltes possibilitats, en lloc de donar a una propietat un valor constant, es pot establir al resultat d’una procediment de l’Scheme que s’invoca cada cop que el LilyPond accedeix a aquesta propietat. La propietat es pot establir dinàmicament a un valor determinat pel procediment al moment que s’invoca. En aquest exemple donem als caps de les notes un color que depèn de la seva posició dins del pentagrama.

>     #(define (color-notehead grob)
>        "Pinta el cap de la nota d'acord amb la seva posició a la partitura."
>        (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
>                                    7)))
>          (case mod-position
>            ;;   Retorna els colors de l'arc de Sant Martí
>            ((1) (x11-color 'red    ))  ; for C
>            ((2) (x11-color 'orange ))  ; for D
>            ((3) (x11-color 'yellow ))  ; for E
>            ((4) (x11-color 'green  ))  ; for F
>            ((5) (x11-color 'blue   ))  ; for G
>            ((6) (x11-color 'purple ))  ; for A
>            ((0) (x11-color 'violet ))  ; for B
>            )))

>     \relative {
>       % Disposa per obtenir el color del procediment color-notehead
>       \override NoteHead.color = #color-notehead
>       a2 b | c2 d | e2 f | g2 a |
>     }

Es poden trobar exemples addicionals que mostren la utilització d’aquestes interfícies programables, a Funcions de callback.

#### Manual d’aprenentatge del GNU LilyPond v2.26.0 (stable-branch).

- 1 Installing
  - 1.1 Graphical setup
  - 1.2 Command line setup
- 2 Tutorial
  - 2.1 Compilació d’un fitxer
  - 2.2 Com escriure fitxers d’entrada
    - 2.2.1 Notació senzilla
      - Altures
      - Duracions (valors rítmics)
      - Silencis
      - Indicació de compàs
      - Indicacions de tempo
      - Clau
      - Tot a l’hora
    - 2.2.2 Treball sobre els fitxers d’entrada
  - 2.3 Gestió dels errors
    - 2.3.1 Consells generals de solució de problemes
    - 2.3.2 Alguns errors comuns
  - 2.4 Com llegir els manuals
    - 2.4.1 Material omès
    - 2.4.2 Exemples amb enllaç
    - 2.4.3 Panoràmica dels manuals
- 3 Notació corrent
  - 3.1 Notació en un sol pentagrama
    - 3.1.1 Línies divisòries i comprovacions de compàs
      - Línies divisòries
      - Comprovacions de compàs
    - 3.1.2 Alteracions accidentals i armadures
      - Alteracions accidentals
      - Armadures
      - Advertiment: armadures i altures
    - 3.1.3 Lligadures d’unió i d’expressió
      - Lligadures d’unió
      - Lligadures d’expressió
      - Lligadures de fraseig
      - Advertiments: lligadures d’expressió en front a lligadures d’unió
    - 3.1.4 Articulacions i matisos dinàmics
      - Articulacions
      - Indicacions de digitació
      - Matisos dinàmics
    - 3.1.5 Addició de text
    - 3.1.6 Barres automàtiques i manuals
    - 3.1.7 Instruccions rítmiques avançades
      - Compàs parcial
      - Grups especials
      - Notes d’adorn
  - 3.2 Diverses notes a l’hora
    - 3.2.1 Explicació de les expressions musicals
      - Analogia: expressions matemàtiques
      - Expressions musicals simultànies: diversos pentagrames
      - Expressions musicals simultànies: un sol pentagrama
    - 3.2.2 Diversos pentagrames
    - 3.2.3 Grups de pentagrames
    - 3.2.4 Combinar notes per formar acords
    - 3.2.5 Polifonia a un sol pentagrama
  - 3.3 Cançons
    - 3.3.1 Elaborar cançons senzilles
    - 3.3.2 Alineació de la lletra a una melodia
    - 3.3.3 Lletra en diversos pentagrames
  - 3.4 Retocs finals
    - 3.4.1 Organitzar les peces mitjançant variables
    - 3.4.2 Afegir títols
    - 3.4.3 Noms de nota absoluts
    - 3.4.4 Més enllà del tutorial
- 4 Conceptes fonamentals
  - 4.1 Com funcionen els fitxers d’entrada del LilyPond
    - 4.1.1 Introducció a l’estructura dels fitxers del LilyPond
    - 4.1.2 La partitura és una (única) expressió musical composta
    - 4.1.3 Niuat d’expressions musicals
    - 4.1.4 Quant a la impossibilitat de niuar claus i lligadures
  - 4.2 Les veus contenen música
    - 4.2.1 Sento veus
    - 4.2.2 Veus explícites
    - 4.2.3 Veus i música vocal
  - 4.3 Contextos i gravadors
    - 4.3.1 Explicació dels contextos
    - 4.3.2 Creació de contextos
    - 4.3.3 Explicació dels gravadors
    - 4.3.4 Modificar les propietats dels contextos
    - 4.3.5 Afegir i eliminar gravadors
  - 4.4 Extensió de les plantilles
    - 4.4.1 Soprano i violoncel
    - 4.4.2 Partitura vocal a quatre veus SATB
    - 4.4.3 Crear una partitura partint de zero
    - 4.4.4 Estalvi de tecleig mitjançant variables i funcions
    - 4.4.5 Partitures i particel·les
- 5 Ajustament de la sortida
  - 5.1 Elements d’ajustament
    - 5.1.1 Introducció a l’ajustament
    - 5.1.2 Objectes i interfícies
    - 5.1.3 Convencions de noms d’objectes i propietats
    - 5.1.4 Mètodes d’ajustament
      - L’ordre `\override`
      - L’ordre `\revert`
      - El prefix `\once`
      - L’ordre `\overrideProperty`
      - L’ordre `\tweak`
      - El prefix `\single`
  - 5.2 Manual de referència de funcionament intern
    - 5.2.1 Propietats dels objectes de presentació
    - 5.2.2 Propietats de les interfícies
    - 5.2.3 Tipus de propietats
  - 5.3 Aparença dels objectes
    - 5.3.1 Visibilitat i color dels objectes
      - La propietat `stencil` (segell)
      - La propietat `break-visibility` (visibilitat del salt)
      - La propietat `transparent` (transparent)
      - La propietat `color`
    - 5.3.2 Mida dels objectes
    - 5.3.3 Longitud i gruix dels objectes
  - 5.4 Col·locació dels objectes
    - 5.4.1 Comportament automàtic
    - 5.4.2 Objectes interiors al pentagrama
      - La propietat `direction` (direcció)
      - Digitacions
    - 5.4.3 Objectes fora del pentagrama
      - La propietat `outside-staff-priority` (prioritat fora del pentagrama)
      - L’ordre `\textLengthOn`
      - Posicionament dels matisos dinàmics
      - Escalat d’un «Grob»
  - 5.5 Espaiat vertical
  - 5.6 Col·lisions d’objectes
    - 5.6.1 Moviment d’objectes
    - 5.6.2 Ajustament de la notació amb superposicions
      - La propietat `padding` (farciment))
      - La propietat `right-padding` (farciment per la dreta)
      - La propietat `staff-padding` (farciment de pentagrama)
      - La propietat `self-alignment-X` (auto-alineació en X)
      - La propietat `staff-position` (posició al pentagrama)
      - La propietat `extra-offset` (desplaçament addicional)
      - La propietat `positions` (posicions)
      - La propietat `force-hshift` (forçar desplaçament horitzontal)
    - 5.6.3 Exemple real de música
  - 5.7 Ajustaments addicionals
    - 5.7.1 Altres aplicacions dels ajustaments
      - Unió de notes entre veus diferents
      - Simulació de un calderó al MIDI
    - 5.7.2 Ús de variables per als ajustaments de disposició
    - 5.7.3 Fulls d’estil
    - 5.7.4 Altres fonts d’informació
    - 5.7.5 Ajustaments avançats amb l’Scheme
- Appendix A Plantilles
  - A.1 Plantilles incorporades
    - A.1.1 Plantilla coral SATB
    - A.1.2 Plantilla coral SSAATTBB
  - A.2 Plantilles de pentagrama únic
    - A.2.1 Sols notes
    - A.2.2 Notes i lletra
    - A.2.3 Notes i acords
    - A.2.4 Notes, lletra i acords
  - A.3 Plantilles de piano
    - A.3.1 Piano sol
    - A.3.2 Piano i melodia amb lletra
    - A.3.3 Piano amb lletra centrada
  - A.4 Plantilles de quartet de corda
    - A.4.1 Quartet de corda simple
    - A.4.2 Particel·les de quartet de corda
  - A.5 Plantilles de conjunts vocals
    - A.5.1 Partitura vocal SATB
    - A.5.2 Partitura vocal SATB i reducció per a piano automàtica
    - A.5.3 SATB amb contextos alineats
    - A.5.4 SATB sobre quatre pentagrames
    - A.5.5 Estrofes a sol y tornada a dues veus
    - A.5.6 Melodies d’himnes
    - A.5.7 Salms
  - A.6 Plantilles orquestrals
    - A.6.1 Orquestra, cor i piano
  - A.7 Plantilles per a notació antiga
    - A.7.1 Transcripció dfe música mensural
    - A.7.2 Plantilla per a transcripció de cant gregorià
  - A.8 Altres plantilles
    - A.8.1 Combo de jazz
- Appendix B GNU Free Documentation License
- Appendix C Índex