Ús d’etiquetes

L’ordre \tag #'parteA marca una expressió musical amb el nom parteA. Les expressions etiquetades d’aquesta manera es poden seleccionar o filtrar més tard pel seu nom, usant o bé \keepWithTag #'nom o bé \removeWithTag #'nom. El resultat de l’aplicació d’aquests filtres a la música etiquetada és com segueix:

FiltreResultat
Música etiquetada precedida de \keepWithTag #'nom o de \keepWithTag #'(nom1 nom2…)S’inclou la música no etiquetada i la música etiquetada amb el nom o noms d’etiquetes donats; s’exclou la música etiquetada amb qualsevol altre nom d’etiqueta.
Música etiquetada precedida de \removeWithTag #'nom o \removeWithTag #'(nom1 nom2…)S’inclou la música no etiquetada i la música que no està etiquetada amb cap dels noms d’etiqueta donats; s’exclou la musica etiquetada amb els noms d’etiqueta donats.
Música etiquetada no precedida de \keepWithTag ni de \removeWithTagS’inclou la música etiquetada i no etiquetada.

Els arguments de les ordres \tag, \keepWithTag i \removeWithTag han de ser un símbol o llista de símbols (com #'score o #'(violiI violiII), seguida d’una expressió musical. Si i sols si els símbols són identificadors del LilyPond vàlids (caràcters alfabètics sols, sense números, guions baixos ni guions normals) que no poden confondre’s amb notes, la porció #' es pot ometre i, com abreviatura, una llista de símbols pot usar el separador de punt, és a dir: \tag #'(violiI violiII) es pot escriure com \tag violiI.violiII. Val el mateix per a \keepWithTag i \removeWithTag.

A l’exemple següent veiem dues versions d’una peça musical, una que mostra trins amb la notació usual i una altra amb els trins expandits explícitament:

music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand { \repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \keepWithTag #'trills \music
}
\score {
  \keepWithTag #'expand \music
}

[image of music]

De forma alternativa, a vegades és més fàcil excloure seccions de música:

music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand {\repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \removeWithTag #'expand
  \music
}
\score {
  \removeWithTag #'trills
  \music
}

[image of music]

El filtrat d’etiquetes es pot aplicar a articulacions, textos, etc., anteposant

-\tag #'la-meva-etiqueta

a una articulació. Per exemple, això defineix una nota amb una indicació opcional de digitació i una nota amb una anotació condicional:

c1-\tag #'finger ^4
c1-\tag #'warn ^"Alerta!"

Es poden posar diverses etiquetes sobre expressions amb diverses entrades de \tag, o combinant diverses etiquetes en una llista de símbols:

music = \relative c'' {
  \tag #'a \tag #'both { a4 a a a }
  \tag #'(b both) { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>

[image of music]

Es poden aplicar diversos filtres \removeWithTag a una sola expressió musical per treure diverses seccions etiquetades amb noms diferents. De forma alternativa, podem usar una sola ordre \removeWithTag amb una llista d’etiquetes.

music = \relative c'' {
  \tag #'A { a4 a a a }
  \tag #'B { b4 b b b }
  \tag #'C { c4 c c c }
  \tag #'D { d4 d d d }
}
\new Voice {
  \removeWithTag #'B
  \removeWithTag #'C
  \music
  \removeWithTag #'(B C)
  \music
}

[image of music]

L’ús de dos o més filtres \keepWithTag sobre una sola expressió musical produeix l’eliminació de totes les seccions etiquetades. El primer filtre treu totes excepte la que es nombra, i qualsevol filtre posterior elimina el reste. Usant una sola ordre \keepWithTag amb una llista de diverses etiquetes se suprimiran sols les seccions etiquetades que no apareixen especificades a la llista.

music = \relative c'' {
  \tag #'violiI { a4 a a a }
  \tag #'violiII { b4 b b b }
  \tag #'viola { c4 c c c }
  \tag #'violoncel { d4 d d d }
}

\new Staff {
  \keepWithTag #'(violinI violinII)
  \music
}

[image of music]

imprimirà \tags violiI i violiII però no viola o violoncel.

Tot i que \keepWithTag és útil per a la gestió de un sol conjunt d’alternatives, l’eliminació de música etiquetada amb altres etiquetes no relacionades és problemàtica si s’utilitza per més d’un propòsit. En aquest cas poden declarar-se ‘grups d’etiquetes’:

\tagGroup #'(violiI violiII viola violoncel)

Ara totes les etiquetes pertanyen a un sol ‘grup d’etiquetes’. Observeu que les etiquetes individuals no poden ser membres de més d’un grup d’etiquetes.

\keepWithTag #'violiI …

mostrarà sols la música etiquetada a partir del grup d’etiquetes de violiI i qualsevol fragment musical etiquetada amb una de les altres etiquetes resultarà suprimit.

music = \relative {
  \tagGroup #'(violiI violiII viola violoncel)
  \tag #'violiI { c''4^"violiI" c c c }
  \tag #'violiII { a2 a }
  \tag #'viola { e8 e e2. }
  \tag #'violoncel { d'2 d4 d }
  R1^"untagged"
}

\new Voice {
  \keepWithTag #'violiI
  \music
}

[image of music]

En usar l’ordre \keepWithTag sols són visibles les etiquetes dels grups d’aquelles etiquetes que s’inclouen a l’ordre.

A vegades podem desitjar dividir la música en un determinat lloc dins d’una expressió musical existent. Podem usar \pushToTag i \appendToTag per afegir material davant o al final dels elements d’una construcció musical existent. No tota construcció musical té la part elements, però les músiques seqüencials i simultànies són dues apostes segures:

music = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \music
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \music
}

[image of music]

Les dues ordres admeten una etiqueta, el material que divideix en cada aparició de l’etiqueta, i l’expressió etiquetada.

Vegeu també

Manual d’aprenentatge: Organitzar les peces mitjançant variables.

Referència de la notació: Combinació automàtica de les parts, Inclusió de fitxers del LilyPond.

Advertiments i problemes coneguts

En cridar a \relative sobre una expressió musical obtinguda mitjançant el filtratge de música amb les ordres \keepWithTag o \removeWithTag, podria passar que canviessin les altures de les notes que efectivament romanen a l’expressió filtrada. L’aplicació de \relative en primer lloc, abans de \keepWithTag o de \removeWithTag, evita aquest perill perquè en aquest cas \relative actua sobre totes les notes tal i com s’introdueixen.


Referència de la notació del GNU LilyPond v2.25.22 (development-branch).