Arquitectura flexible (Assaig sobre gravat musical automatizat)

#### Arquitectura flexible

Quan vam començar, vam escriure el programa LilyPond enterament en el llenguatge de programació C++; les funcionalitats del programa estaven gravades en pedra per als programadors. Això va demostrar-se insatisfactori per un nombre de raons:

- Quan el LilyPond fa errors, els usuaris han de cancel·lar les decisions de format. Consegüentment, l’usuari ha de tenir accés al motor de formatat. En conseqüència, no podem fixar les regles i les configuracions al moment de la compilació sinó que han de ser accessibles per als usuaris al moment de l’execució.
- El gravat és una qüestió de judici visual, i consegüentment una qüestió de gustos. Tot i que siguem coneixedors, els usuaris poden no estar d’acord amb les nostres decisions personals. Així, les definicions sobre l’estil de tipografia també han d’estar accessibles per a l’usuari.
- Finalment, contínuament estem refinant els algoritmes de format, per tant ens cal un enfoc flexible per a les regles. El llenguatge C++ força a un cert mètode d’agrupament de regles que no es pot aplicar directament al formatat de la notació musical.

Aquests problemes han estat adreçats integrant un interpretador per al llenguatge de programació Scheme i amb la reescriptura de parts del LilyPond amb Scheme. L’arquitectura actual de formatat està construïda en torn a la noció d’objectes gràfics, descrits per variables i funcions de l’Scheme. Aquesta arquitectura inclou regles de formatat, estil tipogràfic i decisions individuals de formatat. L’usuari té accés directe a la major part d’aquests controls.

Les variables de l’Scheme controlen les decisions de disposició. Per exemple, molts objectes gràfics tenen una variable de direcció que codifica l’elecció entre amunt i avall (o esquerra i dreta). Aquí veieu dos acords, amb accents i arpegis. Al primer acord, els objectes gràfics tenen direccions avall (o esquerra). El segon acord té totes les direccions cap amunt (dreta).

El procés de formatat d’una partitura consisteix en la lectura i l’escriptura d’objectes gràfics. Algunes variables tenen un valor preestablert. Per exemple, el gruix de moltes línies – una característica de l’estil tipogràfic – és una variable amb un valor preestablert. Podeu alterar aquest valor si voleu, donant-li a la vostra partitura una impressió tipogràfica diferent.

Les regles de formatat són també variables preestablertes: cada objecte té variables que contenen procediments. Aquests procediments realitzen el formatat real, i mitjançant la substitució d’algun procediments, podem canviar l’aparença dels objectes. A l’exemple següent la regla que governa quins objectes de caps de nota es fan servir per produir el símbol de cap de nota es canvia durant el fragment de música.

#### Assaig sobre gravat musical automatizat v2.26.0 (stable-branch).

- 1 Gravat musical
  - 1.1 La història del LilyPond
  - 1.2 Detalls del gravat
    - Tipus de lletra per a música
    - Espaiat òptic
    - Línies addicionals
    - Dimensionament òptic
    - Perquè treballar tan dur?
  - 1.3 Gravat automàtic
    - Concursos de bellesa
    - Millores per comparació
    - Aconseguint que les coses siguin correctes
  - 1.4 Construcció de programari
    - Representació de la música
    - Quins símbols s’han de gravar?
    - Arquitectura flexible
  - 1.5 Posant el LilyPond a treballar
  - 1.6 Exemples de gravat (BWV 861)
- 2 Llista de referències bibliogràfiques
  - 2.1 Llista bibliogràfica resumida
  - 2.2 Llista bibliogràfica ampliada
- Appendix A GNU Free Documentation License
- Appendix B Índex