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:

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).

[image of music]

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.

[image of music]

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.

[image of music]

Assaig sobre gravat musical automatizat v2.25.27 (development-branch).