4.4.3 Objectes fora del pentagrama

Els objectes fora-del-pentagrama s’ubiquen automàticament per evitar les col·lisions. Hi ha diverses formes de sobreescriure la col·locació automàtica si la posició no resulta òptima.


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 baix de la propietat outside-staff-priority s’ubiquen més a prop del pentagrama, i així altres objectes fora-del-pentagrama s’eleven 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 tots 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 objects 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 objectes gràfics que (potser) comencen i acaben en diferents moments musicals, de manera que qualsevol modificació a la prioritat outside-staff-priority de l’objecte gràfic 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 d’escriure al començament de l’objecte d’extensió, que podria incloure diversos reguladors o matissos dinàmics encadenats.

Objecte de presentacióPrioritatControla la posició de:
RehearsalMark1500Lletres d’assaig
MetronomeMark1000Indicacions metronòmiques
VoltaBracketSpanner600Capsetes de primera i segona vegada
TextScript450Text a elements d’etiquetatge
MultiMeasureRestText450Text sobre silencis de compàs complet
OttavaBracket400Claudàtors d’octava alta i baixa
TextSpanner350Objectes d’extensió de text
DynamicLineSpanner250Totes les indicacions dinàmiques
VoltaBracketSpanner100Números de compàs
TrillSpanner50Trinats mantinguts

Heus ací un exemple que mostra la situació predeterminada d’alguns d’ells.

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Start Ottava Bracket
\ottava #1
c''4 \startTextSpan
% Add Dynamic Text and hairpin
c''4\pp\<
c''4
% Add Text Script
c''4^Text |
c''4 c''
% Add Dynamic Text and terminate hairpin
c''4\ff c'' \stopTextSpan |
% Stop Ottava Bracket
\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 a dalt d’una secció de música. L’extensor abasta des de l’ordre \startTextSpan fins l’ordre \stopTextSpan, i la composició del text es defineix mitjançant l’ordre \override TextSpanner. Per veure més detalls, consulteu Extensions de text.

També es mostra la manera de crear claudàtors d’octva 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 el claudàtor 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 de Staff:

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket.outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
c''4 \startTextSpan
% Add Dynamic Text
c''4\pp
% Add Dynamic Line Spanner
c''4\<
% Add Text Script
c''4^Text |
c''4 c''
% Add Dynamic Text
c''4\ff c'' \stopTextSpan |
% Stop Ottava Bracket
\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, s’acullen de forma predeterminada dins del context Score; així doncs, heu d’assegurar-vos que utilitzeu el context adequat quan se sobreescriuen les seves propietats.

De forma predeterminada, les lligadures d’expressió estan classificades com a objectes dins-del-pentagrama, però sovint apareixen a sobre del pentagrama si les notes que uneix són molt agudes. Això pot portar a una posició molt elevada els objectes fora-del-pentagrama com les articulacions, ja que la lligadura es col·locarà en primer lloc. Es pot establir la propietat avoid-slur de l’articulació al valor 'inside (per dins) per portar-la a l’interior de la lligadura, però la propietat avoid-slur és efectiva sols si la propietat outside-staff-priority està també ajustada al valor #f. De forma alternativa, la prioritat outside-staff-priority de la lligadura es pot fixar a un valor numèric per fer que es col·loqui en línia amb altres objectes fora del pentagrama d’acord amb aquest valor. Heus ací 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 pode usar per controlar la situació vertical dels objectes individuals, tot i que els resultats poden no sempre ser desitjables. Suposeu que voleu que “Text3” se situï por 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 hem de fer és localitzar la prioritat de TextScript al RFI o a 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, eleva a “Text3” per sobre de “Text4” però també l’eleva per sobre de “Text2”, i “Text4” ara cau cap avall. 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 posar més espai entre 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 l’etiquetatge no ocupa cap espai horitzontal pel que fa a la disposició de la música. L’ordre \textLengthOn inverteix aquest comportament, fent que les notes portin tant d’espai com sigui necessari per acomodar el text:

\textLengthOn  % Cause notes to space out to accommodate 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 corresponent per posar espai per a les marques d’assaig i les indicacions de temps es control·la independentment amb les ordres \markLengthOn i \markLengthOff.

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

\relative {
  % This markup is short enough to fit without collision
  c''2^"Tex" c'' |
  R1 |

  % This is too long to fit, so it is displaced upwards
  c,,2^"Text" c'' |
  R1 |

  % Turn off collision avoidance
  \once \override TextScript.outside-staff-priority = ##f
  c,,2^"Long Text   " c'' |
  R1 |

  % Turn off collision avoidance
  \once \override TextScript.outside-staff-priority = ##f
  \textLengthOn        % and turn on textLengthOn
  c,,2^"Long Text   "  % Spaces at end are honored
  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 adosades, i flotaran per sota (o per sobre) de tots els objects dins-del-pentagrama tals com 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]

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

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

[image of music]

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


Escalat d’un objecte gràfic (grob)

En primer lloc hem d’aprendre com s’especifica la mida dels objectes gràfics (grobs). Tots els objectes gràfics (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 distància 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 esquerra i dreta 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 objects gràfics (grobs) que contemplen el grob-interface.

De forma predeterminada, els objectes fora-del-pentagrama reben una amplada zero, de manera que poden solapar-se en la direcció horitzontal. Això es fa mitjançant l’ajustament de fer que la dimensió més a l’esquerra sigui igual a infinit i que la dimensió més a la dreta sigui igual a menys infinit, establint el valor a extra-spacing-width a '(+inf.0 . -inf.0). Així, per assegurar que se superposen en la direcció horitzontal haurem de sobreescriure aquest valor de extra-spacing-width per donar-los una mica d’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 esquerra mitja unitat a l’esquerra i el límit dret mitja unitat a la dreta:

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

Vegem si funciona en el nostre exemple anterior:

\dynamicUp
% Extend width by 1 staff space
\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 alineats 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 (emplenament del pentagrama) que s’estudia en la secció dedicada a les col·lisions (vegeu Col·lisions d’objectes).


Altres idiomes: English, česky, deutsch, español, français, italiano, 日本語, nederlands.
Quant a selecció automàtica de l'idioma.

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