5.1.2 Objectes i interfícies

L’ajustament consisteix en modificar el funcionament i estructure interna del programa LilyPond, per la qual cosa en primer lloc introduirem alguns termes que es fan servir per descriure aquestes operacions i estructures internes.

El terme ‘Objecte’ és un terme genèric que s’usa per referir-se A les múltiples estructures que el LilyPond construeix durant el processat d’un fitxer d’entrada. D’aquesta manera, quan es troba una instrucció com ara \new Staff, es construeix un objecte nou de tipus Staff. Aleshores, aquest objecte Staff conté totes les propietats associades amb aquest pentagrama en particular, per exemple, el seu nom i armadura, a més d’altres detalls dels gravadors que s’han assignat perquè operin dins del context del pentagrama. De forma semblant, hi ha objectes que emmagatzemen les propietats de tota la resta de contextos, com ara objectes de Voice, objectes de Score, objectes de Lyrics, així com objectes que representen tots els elements de notació com ara línies divisòries, caps de les notes, lligadures, indicacions dinàmiques, etc. Cada objecte té el seu propi conjunt de valors de propietat.

Certs tipus d’objectes reben noms especials. Els objectes que representen elements de notació sobre la sortida impresa com ara caps de notes, pliques, lligadures d’expressió i d’unió, digitacions, claus, etc., reben el nom de ‘Objectes de presentació’, sovint coneguts com ‘Objectes gràfics’, o abreujadament ‘Grobs’. Encara són objectes, en el sentit genèric que hem mencionat, i també tots ells tenen propietats associades, com la seva posició, mida, color, etc.

Certs objectes de presentació són encara més especialitzats, Les lligadures de fraseig, els reguladores, les indicacions d’octava alta i baixa, i mols altres objectes gràfics no estan situats en un sol lloc: tenen un punt d’inici, un punt final, i un potser altres propietats relacionades amb la seva forma. Els objectes amb una forma estesa com aquests, reben el nom d’«objectes d’extensió» o ‘Spanners’.

Els «spanners» no es poden ajustar després d’haver-se creat. Això inclou tant a StaffSymbol com a LedgerLineSpanner, que continuen al llarg de tota la partitura (excepte si si se’ls dóna fi amb l’ordre \stopStaff i es tornen a crear amb l’ordre \startStaff.

Encara més, hi ha objectes gràfics ‘abstractes’ que no imprimeixen res per sí mateixos, sinó que en realitat el que fan és que recopilen, posicionen i gestionen a altres objectes gràfics. El exemples habituals són DynamicLineSpanner, BreakAlignment, NoteColumn, VerticalAxisGroup, NonMusicalPaperColumn i semblants. Més tard veurem com s’usen alguns d’ells.

Encara falta explicar què són les ‘Interfícies’. Molts objectes, tot i que són força diferents, comparteixen funcionalitats que s’han de processar de la mateixa manera. Per exemple, tots els objectes gràfics tenen un color, una mida, una posició, etc., i totes aquestes propietats es processen de la mateixa forma durant la interpretació del fitxer d’entrada per part del LilyPond. Per simplificar aquestes operacions internes, aquestes accions i propietats comunes s’agrupen a un objecte anomenat grob-interface, interfície d’objecte gràfic. Hi ha moltes altres agrupacions de propietats comunes com aquesta, i cadascuna rep un nom que acaba en interface. En total hi ha més de 100 interfícies d’aquestes. Veurem més endavant perquè és interessant i d’utilitat per a l’usuari.

Aquests són, en definitiva, els termes principals relatius als objectes que utilitzarem a aquest capítol.


Manual d’aprenentatge del GNU LilyPond v2.25.21 (branca de desenvolupament).