A.2.7 Representació interna de la música (Extender LilyPond)

#### A.2.7 Representació interna de la música

Internament, la música es representa com una llista de l’Scheme. la llista conté diversos elements que afecten a la sortida impresa. L’anàlisi sintàctica és el procés de convertir la música de la representació d’entrada del LilyPond a la representació interna de l’Scheme.

Quan s’analitza una expressió musical, es converteix en un conjunt d’objectes musicals de l’Scheme. La propietat definitòria d’un objecte musical és que ocupa un temps. El temps que ocupa s’anomena duració. Les duracions s’expressen com un nombre racional que mesura la longitud de l’objecte musical en rodones.

Un objecte musical té tres classes de tipus:

- nom musical: Cada expressió musical té un nom. Per exemple, una nota porta a un NoteEvent, i `\simultaneous` porta a una SimultaneousMusic. Hi ha una llista de totes les expressions disponibles al manual de funcionament intern, sota l’epígraf Music expressions.
- ‘type’ (tipus) o interfície: Cada nom musical té diversos ‘tipus’ o interfícies, per exemple, una nota és un `event`, però també és un `note-event`, un `rhythmic-event`, i un `melodic-event`. Totes les classes de música estan llistades en el manual de Referència de funcionament intern, sota l’epígraf Music classes.
- objecte de C++: Cada objecte està representat per un objecte de la classe `Music` de C++.

La informació real d’una expressió musical s’emmagatzema en propietats. Per exemple, un NoteEvent té propietats `pitch` i `duration` que emmagatzemen l’altura i la duració d’aquesta nota. HI ha una llista de totes les propietats disponibles al manual de Referència de funcionament intern, sota l’epígraf Music properties.

Una expressió musical composta és un objecte musical que conté d’altres objectes musicals dins de les seves propietats. Es pot emmagatzemar una llista d’objectes dins de la propietat `elements`. Per exemple, SequentialMusic té el seu fill dins de `elements`, i GraceMusic té el seu argument únic dins de `element`. El cos d’una repetició s’emmagatzema dins de la propietat `element` de VoltaRepeatedMusic, i les alternatives dins de `elements`.

#### Extender LilyPond v2.26.0 (stable-branch).

- Appendix A Tutorial de l’Scheme
  - A.1 Introducció a l’Scheme
    - A.1.1 Banc de sorra de l’Scheme
    - A.1.2 Variables de l’Scheme
    - A.1.3 Tipus de dades simples de l’Scheme
    - A.1.4 Tipus de dades compostes de l’Scheme
      - Parelles
      - Llistes
      - Llistes associatives (llistes-A)
      - Taules de hash
    - A.1.5 Càlculs a l’Scheme
    - A.1.6 Procediments de l’Scheme
      - Definició de procediments
      - Predicats
      - Valors de retorn
    - A.1.7 Condicionals de l’Scheme
      - if
      - cond
  - A.2 Scheme dins del LilyPond
    - A.2.1 Sintaxi de l’Scheme del LilyPond
    - A.2.2 Variables del LilyPond
    - A.2.3 Variables d’entrada i l’Scheme
    - A.2.4 Importació de l’Scheme dins del LilyPond
    - A.2.5 Propietats dels objectes
    - A.2.6 Variables del LilyPond compostes
      - Desplaçaments
      - Fraccions
      - Dimensions
      - Llistes-A de propietats
      - Cadenes de llistes-A
    - A.2.7 Representació interna de la música
  - A.3 Construcció de funcions complicades
    - A.3.1 Presentació de les expressions musicals
    - A.3.2 Propietats musicals
    - A.3.3 Duplicació una nota amb lligadures (exemple)
    - A.3.4 Afegir articulacions a les notes (exemple)
- B Interfícies per a programadors
  - B.1 Blocs de codi del LilyPond
  - B.2 Funcions de l’Scheme
    - B.2.1 Definició de funcions de l’Scheme
    - B.2.2 Ús de les funcions de l’Scheme
    - B.2.3 Funcions de l’Scheme buides
  - B.3 Funcions musicals
    - B.3.1 Definicions de funcions musicals
    - B.3.2 Ús de les funcions musicals
    - B.3.3 Funcions de substitució senzilles
    - B.3.4 Funcions de substitució intermèdies
    - B.3.5 Matemàtiques dins de les funcions
    - B.3.6 Funcions sense arguments
    - B.3.7 Funcions musicals buides
  - B.4 Funcions d’esdeveniments
  - B.5 Funcions de marcatge
    - B.5.1 Construcció d’elements de marcatge a l’Scheme
    - B.5.2 Com funcionen internament els elements de marcatge
    - B.5.3 Definició d’una ordre nova de marcatge
      - Sintaxi de la definició d’ordre de marcatge
      - Quant a les propietats
      - Un exemple complet
      - Adaptació d’ordres incorporades
    - B.5.4 Definició de noves ordres de llista de marcatge
  - B.6 Contextos per a programadors
    - B.6.1 Avaluació de contextos
    - B.6.2 Execució d’una funció sobre tots els objectes de la presentació
  - B.7 Funcions de callback
  - B.8 Ajustaments difícils
- C Interfícies de l’Scheme del LilyPond
- Appendix D GNU Free Documentation License
- Appendix E Índex del LilyPond