5.4.3 Objectes fora del pentagrama

Els objectes fora del pentagrama se situen automàticament per evitar les col·lisions. Hi ha diverses formes de sobreescriure la col·locació automàtica si el posicionat no resulta òptim.


La propietat outside-staff-priority (prioritat fora del pentagrama)

Els objectes fora-del-pentagrama es col·loquen automàticament per evitar les col·lisions. Els objectes que tenen el valor més bais de la propietat outside-staff-priority se situen més a prop del pentagrama, i llavors altres objectes fora-del-pentagrama s’aixequen tant com sigui necessari per evitar la col·lisió. La prioritat outside-staff-priority es defineix al grob-interface i així és una propietat de totes els objectes de presentació. De forma predeterminada s’estableix a #f per a tots els objectes dins-del-pentagrama, i a un valor numèric adequat a cada objecte fora-del-pentagrama quan es crea l’objecte. La taula següent presenta els valors numèrics predeterminats per a alguns dels objectes fora-del-pentagrama més comuns.

Observeu els noms una mica inusuals d’alguns dels objectes: els objectes d’extensió es creen automàticament per controlar el posicionament vertical dels grobs que (potser) comencen i acaben en diferents moments musicals, de manera que qualsevol modificació a la prioritat outside-staff-priority del grob subjacent no té cap efecte. Per exemple, canviar la outside-staff-priority de l’objecte de regulador Hairpin no té efecte sobre la posició vertical dels reguladors: en comptes d’això, hem de canviar la outside-staff-priority de l’objecte associat DynamicLineSpanner. Aquesta sobreescriptura s’ha de fer al començament de l’objecte d’extensió, que podria incloure diversos reguladors o matisos dinàmics encadenats.

Objecte de presentacióPrioritatControla la posició de:
RehearsalMark1500Lletres d’assaig
MetronomeMark1000Indicacions metronòmiques
VoltaBracketSpanner600Caixetes de primer i segona vegada
TextScript450Text en elements de marcatge
MultiMeasureRestText450Text sobre silencis de compàs complet
OttavaBracket400Indicadors d’octava alta i baixa
TextSpanner350Objectes d’extensió de text
DynamicLineSpanner250Totes les indicacions dinàmiques
VoltaBracketSpanner100Números de compàs
TrillSpanner50Trins mantinguts

Vet aquí un exemple que mostra la situació predeterminada d’alguns d’ells.

% Estableix els detalls per a un Text Spanner posterior
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Col·loca la indicació dinàmica a sobre del pentagrama
\dynamicUp
% Inicia l'indicador d'octava
\ottava #1
c''4 \startTextSpan
% Afegeix el text de la indicació dinàmica i el símbol
c''4\pp\<
c''4
% Afegeix el fragment de text
c''4^Text |
c''4 c''
% Afegeix el text de la dinàmica i finalitza el símbol
c''4\ff c'' \stopTextSpan |
% Atura l'indicador d'octava
\ottava #0
c'4 c' c' c' |

[image of music]

Aquest exemple també mostra com crear textos amb extensió (Text Spanners): textos amb línies extensores per sobre d’una secció de música. L’extensor abasta des de l’ordre\startTextSpan fins l’ordre \stopTextSpan, i el format del text es defineix per mitjà de l’ordre \override TextSpanner. Per veure més detalls, consulteu Extensions de text.

També mostra la manera de crear indicadors d’octava alta i baixa.

Si els valors predeterminats de outside-staff-priority no us ofereixen les col·locacions desitjades es pot sobreescriure la prioritat de qualssevol dels objectes. Suposeu que volguéssim que l’indicador d’octava estigués situat per sota de l’element extensor de text a l’exemple de dalt. Tot el que hem de fer és localitzar la prioritat de OttavaBracket al RFI o en les taules anteriors, i reduir-lo a un valor inferior al de TextSpanner, recordant que OttavaBracket es crea dins del context Staff:

% Estableix els detalls per a un Text Spanner posterior
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Ubica els indicadors de dinàmica a sobre del pentagrama
\dynamicUp
% Posa els següent indicador d'octava a sota dels Text Spanners
\once \override Staff.OttavaBracket.outside-staff-priority = #340
% Inicia l'indicador d'octava
\ottava #1
c''4 \startTextSpan
% Afegeix el text de la dinàmica
c''4\pp
% Afegeix l'extensor de la línia de dinàmica
c''4\<
% Afegeix el fragment de text
c''4^Text |
c''4 c''
% Afegeix el text de la dinàmica
c''4\ff c'' \stopTextSpan |
% Atura l'indicador d'octava
\ottava #0
c'4 c' c' c' |

[image of music]

Observeu que alguns d’aquests objectes, concretament els números de compàs, les indicacions metronòmiques i les lletres d’assaig, es fiquen de forma predeterminada dins del context Score; així doncs, us heu d’assegurar que utilitzeu el context adequat quan se sobreescriuen les propietats.

De forma predeterminada, les lligadures d’expressió estan classificades com objectes dins-del-pentagrama, però amb freqüència apareixen a sobre del pentagrama si les notes que uneixen són molt agudes. Això pot empènyer els objectes fora-del-pentagrama com les articulacions a una posició molt elevada, atès que la lligadura es col·locarà en primer lloc. La propietat avoid-slur de l’articulació es pot establir al valor 'inside (per dins) per portar-la a l’interior de la lligadura, però la propietat avoid-slur és efectiva sols si la prioritat outside-staff-priority està també establerta al valor #f. De forma alternativa, la prioritat outside-staff-priority de la lligadura es pot fixar en un valor numèrica per fer que se situï en línia amb altres objectes fora del pentagrama d’acord amb aquest valor. Vet aquí un exemple que mostra l’efecte dels dos mètodes:

\relative c'' {
  c4( c^\markup { \tiny \sharp } d4.) c8 |
  c4(
    \once \override TextScript.avoid-slur = #'inside
    \once \override TextScript.outside-staff-priority = ##f
    c4^\markup { \tiny \sharp } d4.) c8 |
  \once \override Slur.outside-staff-priority = #500
    c4( c^\markup { \tiny \sharp } d4.) c8 |
}

[image of music]

Els canvis a outside-staff-priority també es poden usar per controlar la ubicació vertical dels objectes individuals, tot i que els resultats poden no ser sempre desitjables. Suposeu que voleu que “Text3” se situï per sobre de “Text4” a l’exemple sota l’epígraf Comportament Automàtic de més a dalt (vegeu Comportament automàtic). Tot el que estem fer és localitzar la prioritat de TextScript en el RFI o en les taules de dalt, i augmentar la prioritat de “Text3” fins un valor superior:

c''2^"Text1"
c''2^"Text2" |
\once \override TextScript.outside-staff-priority = #500
c''2^"Text3"
c''2^"Text4" |

[image of music]

Això, certament, aixeca a “Text3” per sobre de “Text4”, però també l’aixeca per sobre de “Text2”, i “Text4” ara cau cap a baix. Potser no sigui tan bona idea. I si el que realment volem fer és posicionar totes les anotacions a la mateixa distància per sobre del pentagrama? Per fer-lo, ens caldrà clarament espaiar les notes en sentit horitzontal per fer lloc per al text Això es fa usant l’ordre textLengthOn.


L’ordre \textLengthOn

De forma predeterminada, el text produït mitjançant marcatge no ocupa cap espai horitzontal en quant es refereix a la disposició de la música. L’ordre \textLengthOn inverteix aquest comportament, fent que les notes resultin tan espaiades com sigui necessari per encabir el text:

\textLengthOn  % Fa que hi hagi més espai entre les notes per encabir el text
c''2^"Text1"
c''2^"Text2" |
c''2^"Text3"
c''2^"Text4" |

[image of music]

L’ordre per tornar al comportament predeterminat és \textLengthOff. De forma alternativa es pot usar \once amb \textLengthOn si l’efecte s’ha de limitar a un sol moment musical. El comportament d’espaiat corresponent per a les indicacions d’assaig i les indicacions de tempo es controla independentment amb les ordres \markLengthOn y \markLengthOff.

El text de marcatge també evita les notes que es projecten per sobre del pentagrama. Si això no és el que desitgem, el desplaçament automàtic cap a dalt es pot desactivar mitjançant l’establiment de la prioritat a #f. Vet aquí un exemple que mostra com el text de marcatge interactua amb aquestes notes.

\relative {
  % Aquest marcatge és suficientment curt per encabir sense col·lisió
  c''2^"Tex" c'' |
  R1 |

  % Això és massa llarg per encabir, per això és mou cap amunt
  c,,2^"Text" c'' |
  R1 |

  % Desactiva l'evitament de col·lisions
  \once \override TextScript.outside-staff-priority = ##f
  c,,2^"Long Text   " c'' |
  R1 |

  % Desactiva l'evitament de col·lisions
  \once \override TextScript.outside-staff-priority = ##f
  \textLengthOn        % i activa textLengthOn
  c,,2^"Long Text   "  % Es respecten els espais al final
  c''2 |
}

[image of music]


Posicionament dels matisos dinàmics

Les indicacions de matís dinàmic normalment es col·locaran per sota del pentagrama, però es poden posicionar per sobre amb l’ordre \dynamicUp. Se situaran verticalment respecte a la nota a la que van adossades, i flotaran per sota (o per sobre) de tots els objectes dins-del-pentagrama com ara les lligadures de fraseig i números de compàs. Això pot oferir resultats força acceptables, com mostra aquest exemple:

\relative {
  \clef "bass"
  \key aes \major
  \time 9/8
  \dynamicUp
  bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
  ees,2.~\)\mf ees4 r8 |
}

[image of music]

Malgrat això, si les notes i les seves indicacions dinàmiques adossades estan massa a prop, la col·locació automàtica evitarà les col·lisions desplaçant les marques dinàmiques posteriors més lluny, tot i que aquest pot no ser el lloc òptim, com mostra el següent exemple més bé artificial:

\dynamicUp
\relative { a'4\f b\mf a\mp b\p }

[image of music]

Si es presentés una situació semblant en música ‘real’, podria ser preferible espaiar les notes una mica més entre sí, de forma que totes les marques dinàmiques poden cabre a la mateixa distància vertical des del pentagrama. Hem estat capaços de fer això per al text de marcatge utilitzant l’ordre \textLengthOn, però no existeix una ordre equivalent per a les indicacions de matís dinàmic. Per tant, hem d’esbrinar com fer-ho utilitzant ordres \override.


Escalat d’un «Grob»

En primer lloc hem d’aprendre com s’especifica la mida dels grobs. Tots els grobs tenen un punt de referència definit dins d’ells que s’usa per col·locar-los respecte al seu objecte pare. Aleshores, aquest punt del grob es posiciona a una distància horitzontal, X-offset, i una distancia vertical, Y-offset, a partir del seu pare. La dimensió horitzontal de l’objecte ve donada per una parella de números, X-extent, que diu on estan els límits esquerre i dret respecte del punt de referència. L’amplitud vertical es defineix de forma semblant mitjançant una parella de números, Y-extent. Aquestes són propietats de tots els grobs que contemplen grob-interface.

De forma predeterminada, els objectes fora-del-pentagrama reben una amplitud zero, de manera que poden solapar-se a la direcció horitzontal. Això es fa mitjançant el truc de fer que la dimensió més a l’esquerra sigui igual a menys infinit, establint el valor de extra-spacing-width a '(+inf.0 . -inf.0). Així, per assegurar que no se superposen en la direcció horitzontal hem de sobreescriure aquest valor de extra-spacing-width per donar-los una mica de espai addicional. Les unitats són l’espai entre dues línies del pentagrama, de forma que hauria de ser suficient moure el límit esquerre mitja unitat a l’esquerra i el límit dret mitja unitat a la dreta:

\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)

Vejam si funciona al nostre exemple anterior:

\dynamicUp
% Estén l'amplitud amb 1 espai de pentagrama
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
\relative { a'4\f b\mf a\mp b\p }

[image of music]

Això té un aspecte millor, però potser hauríem preferit que les indicacions de dinàmica estiguessin alineades sobre la mateixa línia de base en lloc d’anar cap amunt i cap avall amb les notes. La propietat que ho fa és staff-padding (farciment de pentagrama) que s’estudia a la secció dedicada a les col·lisions (vegeu Col·lisions d’objectes).


LilyPond — Manual d’aprenentatge v2.23.82 (branca de desenvolupament).