@c -*- coding: utf-8; mode: texinfo; documentlanguage: ca -*-

@ignore
    Translation of GIT committish: 5ae5c88bdb1a478263ed874cb823ec58dafc93f9

    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
    Guide, node Updating translation committishes..
@end ignore

@c \version "2.19.22"

@c Translators: Walter Garcia-Fontes
@c Translation checkers:


@node Ajustament de la sortida
@chapter Ajustament de la sortida
@translationof Tweaking output

Aquest capítol tracta de com modificar la sortida.  El LilyPond és
extremadament configurable; pràcticament tots els fragments de la
sortida es poden canviar.


@menu
* Elements d'ajustament::
* Manual de referència de funcionament intern::
* Aparença dels objectes::
* Col·locació dels objectes::
* Espaiat vertical::
* Col·lisions d'objectes::
* Ajustaments addicionals::
@end menu

@node Elements d'ajustament
@section Elements d'ajustament
@translationof Tweaking basics

@menu
* Introducció a l'ajustament::
* Objectes i interfícies::
* Convencions de noms d'objectes i propietats::
* Mètodes d'ajustament::
@end menu

@node Introducció a l'ajustament
@subsection Introducció a l'ajustament
@translationof Introduction to tweaks

L'@q{ajustament} és un terme del LilyPond que s'usa pels diversos
mètodes que l'usuari té a la seva disposició per modificar el
procés d'interpretació del fitxer d'entrada i canviar l'aparença
de la sortida impresa.  Alguns ajustos són mols fàcils d'usar;
d'altres són complexos.  Però en conjunt, els mètodes d'ajustament
disponibles possibiliten aconseguir gairebé qualsevol aparença
que desitgem a la música impresa.

En aquesta secció estudiarem els conceptes bàsics que calen per
entendre l'ajustament.  Més tard donarem un ampli ventall d'ordres
llistes per usar, que podreu simplement copiar per obtenir el
mateix efecte a les vostres partitures, i al mateix temps
mostrarem la forma de construir aquestes ordres perquè pugueu
aprendre com desenvolupar els vostres propis ajustaments.

Abans de començar aquest capítol, potser vulgueu donar una ullada
a la secció @ref{Contextos i gravadors}, atès que els contextos,
els gravadors i les propietats que es contenen en aquests elements
són fonamentals per comprendre i construir els ajustaments.

@node Objectes i interfícies
@subsection Objectes i interfícies
@translationof Objects and interfaces

@cindex objecte
@cindex grob (objecte gràfic)
@cindex objecte d'extensió
@cindex interfície
@cindex propietats d'objectes
@cindex objecte, propietats de
@cindex disposició, objecte de
@cindex objecte de disposició

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 @q{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 @code{\new Staff}, es construeix un objecte
nou de tipus @code{Staff}.  Aleshores, aquest objecte @code{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 @code{Voice}, objectes de @code{Score}, objectes de
@code{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 @q{Objectes de
presentació}, sovint coneguts com @q{Objectes gràfics}, o
abreujadament @q{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 @q{Spanners}.

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

Encara més, hi ha objectes gràfics @q{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 @code{DynamicLineSpanner},
@code{BreakAlignment}, @code{NoteColumn},
@code{VerticalAxisGroup}, @code{NonMusicalPaperColumn} i
semblants. Més tard veurem com s'usen alguns d'ells.

Encara falta explicar què són les @q{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 @code{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 @code{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.

@node Convencions de noms d'objectes i propietats
@subsection Convencions de noms d'objectes i propietats
@translationof Naming conventions of objects and properties

@cindex nomenclatura, convencions de, per a objectes
@cindex nomenclatura, convencions de, per a propietats
@cindex objectes, convencions de nomenclatura
@cindex propietats, convencions de nomenclatura

Ja hem vist certes convencions de nomenclatura d'objectes, a la
secció @ref{Contextos i gravadors}.  Aquí, per a una referència
més fàcil, presentem una llista dels tipus d'objectes i propietats
més comuns, junt amb les convencions segons les quals reben el seu
nom, i un parell d'exemples de noms reals.  Hem fet servir una
@q{A} majúscula per denotar qualsevol caràcter alfabètic en
majúscules, i @q{aaa} per qualsevol nombre de caràcters alfabètics
en minúscula.  Altres caràcters es fan servir literalment com estan.

@multitable @columnfractions .33 .33 .33
@headitem Objecte o tipus de propietat
  @tab Convenció de nomenclatura
  @tab Exemples
@item Contextos
  @tab Aaaa o AaaaAaaaAaaa
  @tab Staff, GrandStaff
@item Objecte de presentació
  @tab Aaaa o AaaaAaaaAaaa
  @tab Slur, NoteHead
@item Gravadors
  @tab Aaaa_aaa_engraver
  @tab Clef_engraver, Note_heads_engraver
@item Interfícies
  @tab aaa-aaa-interface
  @tab grob-interface, break-aligned-interface
@item Propietats de contextos
  @tab aaa o aaaAaaaAaaa
  @tab alignAboveContext, skipBars
@item Propietats d'objectes de presentació
  @tab aaa o aaa-aaa-aaa
  @tab direction, beam-thickness
@end multitable

Com podrem veure a la brevetat, les propietats dels diferents
tipus d'objecte es poden modificar mitjançant diferents ordres;
així doncs, és útil poder reconèixer els tipus d'objectes i
propietats a partir dels seus noms.

@morerefs
Referencia de la notació:
@ruser{Modificació de les propietats}

@node Mètodes d'ajustament
@subsection Mètodes d'ajustament
@translationof Tweaking methods

@cindex ajustament, mètodes de

@strong{L'ordre \override}

@menu
* L'ordre override::
* L'ordre revert::
* El prefix once::
* L'ordre overrideProperty::
* L'ordre tweak::
* El prefix single::
@end menu

@node L'ordre override
@unnumberedsubsubsec L'ordre @code{\override}
@translationof The override command

@cindex override, instrucció
@cindex override (sobreescriptura), sintaxi de

@funindex \override

Ja hem vist les ordres @code{\set} i @code{\with}, que s'usen per
canviar les propietats dels @strong{contextos} i per treure i
posar @strong{gravadors}, a @ref{Modificar les propietats dels
contextos} i @ref{Afegir i eliminar gravadors}.  Ara hem
d'examinar algunes altres ordres importants.

L'ordre que canvia les propietats dels @strong{objectes
de presentació} és @code{\override}.  Atès que aquesta ordre ha de
modificar propietats internes que es troben a un lloc profund dins
del LilyPond, la seva sintaxi no és tan simple com la de la resta
de les ordres que hem fet servir fins ara.  Heu de saber
exactament quina propietat de quin objecte i a quin context s'ha
de modificar, i quin ha de ser el seu nou valor.  Anem a veure com
es fa.

La sintaxi genèrica d'aquesta ordre és:

@example
\override @var{Context}.@var{ObjecteDePresentació}.@var{propietat-de-presentació} =
#@var{valor}
@end example

@noindent
Això establirà la propietat de nom
@var{propietat-de-presentació} de l'objecte de presentació amb el
nom @var{ObjecteDePresentació}, que es membre del context
@var{Context}, al valor @var{valor}.

El @var{Context} es pot ometre (i normalment és així) quan el
context requerit es troba implicat sense ambigüitat i és un dels
contextos del nivell més baix, és a dir: @code{Voice},
@code{ChordNames} o @code{Lyrics}, i l'ometrem en molts dels
exemples següents.  Més endavant veurem quan cal especificar-lo

Les últimes seccions tracten de forma exhaustiva les propietats i
els seus valors, vegeu @ref{Tipus de propietats}.  Però en aquesta
secció usarem sols unes quantes propietats i valors senzills que
siguin fàcils d'entendre, per il·lustrar el format i la
utilització d'aquestes instruccions.

Les expressions principals del LilyPond són elements musicals com
notes, duracions, i elements marcatge. Les expressions més
bàsiques com ara números, cadenes de caràcters i llistes, es
processen al @q{mode de l'Scheme}, que s'invoca mitjançant del
prefix @samp{#} escrit abans del valor.  Tot i que els valors
poden tenir a vegades una representació vàlida al mode de música
del LilyPond, aquest manual utilitza sempre @samp{#} per a
l'escriptura, per coherència.  Per obtenir més informació sobre el
mode de l'Scheme, consulteu
@rextendnamed{LilyPond Scheme syntax,Sintaxi de l'Scheme del LilyPond}.

@code{\override} és l'ordre d'ús més comú dins de l'ajustament, i
durant la major part de la resta d'aquest capítol presentarem
exemples sobre el seu ús.  A continuació hi ha un exemple senzill
per canviar el color d'un cap:

@cindex color, propietat, exemple
@cindex NoteHead, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \override NoteHead.color = #green
  g4 a b c |
}
@end lilypond


@node L'ordre revert
@unnumberedsubsubsec L'ordre @code{\revert}
@translationof The revert command

@cindex revert, instrucción

@funindex \revert

Un cop sobreescrita, la propietat reté el seu nou valor fins que
se sobreescriu de o es troba una ordre @code{\revert}.  L'ordre té
la sintaxi següent i causa que el valor de la propietat torni al
seu valor predeterminat original; observeu que no és al seu valor
previ si s'han fet servir diverses ordres @code{\override}.

@example
\revert @var{Context}.@var{ObjecteDePresentació}.@var{propietat-de-presentació}
@end example

Un cop més, igual que @var{Context} dins de l'ordre
@code{\override}, freqüentment no és necessari especificar el
@var{Context}. S'ometrà en molts dels exemples següents.  Aquí
retornem el color del cap al valor predeterminat per a les últimes
dues notes:

@cindex color, propietat, exemple
@cindex NoteHead, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \override NoteHead.color = #green
  g4 a
  \revert NoteHead.color
  b4 c |
}
@end lilypond


@node El prefix once
@unnumberedsubsubsec El prefix @code{\once}
@translationof The once prefix

@funindex \once

@code{\override}, @code{\revert}, @code{\set} i @code{\unset} es
poden fer precedir per @code{\once}.  Això fa que l'ordre sigui
efectiva sols durant el temps musical en curs i abans que la
propietat torni a tenir un altre cop el seu valor anterior (que
pot ser diferent al seu valor predeterminat i encara s'està
aplicant una altra ordre @code{\override} de
sobreescriptura). Utilitzant el mateix exemple, podem canviar el
color d'una sola nota de la manera següent:

@cindex color, propietat, exemple
@cindex NoteHead, exemple de sobreescriptura

@lilypond[quote,verbatim]
\relative {
  c'4 d
  \override NoteHead.color = #red
  e4 f |
  \once \override NoteHead.color = #green
  g4 a
  \once \revert NoteHead.color
  b c |
  \revert NoteHead.color
  f2 c |
}
@end lilypond

El prefix @code{\once} també es pot usar davant de moltes ordres
predefinides per limitar el seu efecte a un sol moment musical:

@lilypond[quote,verbatim]
\relative {
  c'4( d)
  \once \slurDashed
  e4( f) |
  g4( a)
  \once \hideNotes
  b( c) |
}
@end lilypond

@node L'ordre overrideProperty
@unnumberedsubsubsec L'ordre @code{\overrideProperty}
@translationof The overrideProperty command

@cindex overrideProperty, ordre

@funindex \overrideProperty

Hi ha una altra forma per a l'ordre de sobreescriptura,
@code{\overrideProperty}, que ocasionalment és necessària.  La
mencionem aquí amb un propòsit d'exhaustivitat, però per veure més
detalls consulteu @rextendnamed{Difficult tweaks,Ajustaments difícils}.
@c Maybe explain in a later iteration  -td


@node L'ordre tweak
@unnumberedsubsubsec L'ordre @code{\tweak}
@translationof The tweak command

@cindex tweak, ordre

@funindex \tweak

L'última ordre d'ajustament que està disponible és @code{\tweak}.
S'ha de fer servir quan diversos objectes s'usen en el mateix
moment musical, però sols volem canviar les propietats d'alguns
d'ells, per exemple una sola nota dins d'un acord.  L'ús de
@code{\override} per a la sobreescriptura afectaria a totes les
notes de l'acord, mentre que @code{\tweak} sols afecta a l'element
següent del flux d'entrada.

Vet aquí un exemple.  Suposeu que volem canviar la mida del cap de
la nota intermèdia (el Mi) a un acord de Do major.  En primer
lloc, vejam el fa faria @code{\once \override}:

@cindex font-size, propietat, exemple
@cindex NoteHead, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\relative {
  <c' e g>4
  \once \override NoteHead.font-size = #-3
  <c e g>4
  <c e g>4
}
@end lilypond

Veiem que la sobreescriptura amb override afecta a @emph{totes}
els caps de les notes de l'acord.  Això és així perquè totes les
notes d'un acord tenen lloc en el mateix @emph{moment musical}, i
l'acció de @code{\once} és aplicar la sobreescriptura a tots els
objectes de presentació del tipus especificat que tenen lloc en el
mateix moment musical que la pròpia ordre de sobreescriptura @code{\override}.

L'ordre @code{\tweak} pera de una manera diferent.  Actua sobre
l'element immediatament següent dins del flux d'entrada.  En la
seva forma més senzilla és efectiu sols sobre objectes que es
creen directament a partir de l'element següent, en essència els
caps i les articulacions.

Així doncs, tornant al nostre exemple, la mida de la nota
intermèdia es canviaria de la forma següent:

@cindex font-size, propietat, exemple
@cindex @code{\tweak}, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  <c' e g>4
  <c \tweak font-size #-3 e g>4
}
@end lilypond

Observeu que la sintaxi de @code{\tweak} no és igual que la de
@code{\override}. El context no s'ha d'especificar; de fet,
generaria un error fer-lo.  Tant el context com l'objecte de
presentació estan implícits per l'element següent del flux
d'entrada.  Observeu també que no ha d'haver un signe d'igual.
Així que la sintaxi de l'ordre @code{\tweak} en la seva forma
senzilla és:

@example
\tweak @var{propietat-de-presentació} #@var{valor}
@end example

Una ordre @code{\tweak} també es pot usar per modificar sols una
d'una sèrie d'articulacions, com es mostra aquí:

@cindex color, propietat, exemple
@cindex @code{\tweak}, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
a'4^"Black"
  -\tweak color #red ^"Red"
  -\tweak color #green _"Green"
@end lilypond

@noindent
Observeu que l'ordre @code{\tweak} ha de venir precedida d'una
marca d'articulació perquè la pròpia expressió ajustada ha
d'aplicar-se com una articulació.  En el cas de més d'una
sobreescriptura de direcció (@code{^} o @code{_}), guanya la
sobreescriptura situada més a l'esquerra perquè s'aplica a l'últim
lloc.

@cindex @code{\tweak}, Accidental
@cindex @code{\tweak}, specific layout object

Els objectes com ara pliques i alteracions accidentals es creen
més tard, i no directament a partir de l'esdeveniment que ve a
continuació.  Encara és possible utilitzar @code{\tweak} sobre
aquests objectes creats indirectament mitjançant el nomenat
explícit de l'objecte de presentació, sempre i quan el LilyPond
pugui rastrejar el seu origen fins l'esdeveniment original:

@lilypond[quote,fragment,ragged-right,verbatim]
<\tweak Accidental.color #red   cis''4
 \tweak Accidental.color #green es''
 g''>
@end lilypond

Aquesta forma extensa de l'ordre @code{\tweak} es pot descriure com
@example
\tweak @var{LayoutObject}.@var{layout-property} #@var{value}
"ABANS" \tweak @var{objecte-de-presentació}.@var{propietat-de-presentació} @var{valor}
@end example

@cindex grups especials niuats
@cindex tresets niuats
@cindex clau de grup especial
@cindex clau de treset
@cindex grup especial, claur de
@cindex treset, claur de

@funindex TupletBracket

L'ordre @code{\tweak} també s'ha d'usar per canviar l'aparença
d'un sol d'un conjunt de grups especials niuats que comencin al
mateix instant musical.  A l'exemple següent, la clau de
treset llarg i el primer de les tres claus curtes comencen al
mateix moment musical, i per això qualsevol ordre @code{\override}
s'aplicaria als dos.  A l'exemple s'usa @code{\tweak} per
distingir entre ells.  La primera ordre @code{\tweak} especifica
que la clau del treset llarg s'ha de col·locar per sobre de
les notes i el segon especifica que el nombre del treset s'ha
d'imprimir en vermell sobre la clau del primer treset curt.

@cindex @code{\tweak}, exemple
@cindex direction, propietat, exemple
@cindex color, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative c'' {
  \tweak direction #up
  \tuplet 3/4 {
    \tweak color #red
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}
@end lilypond

Si els grups niuats no comencen al mateix moment, la seva aparença
es pot modificar de la forma usual mitjançant ordres @code{\override}:

@cindex text, propietat, exemple
@cindex tuplet-number, funció, exemple
@cindex transparent, propietat, exemple
@cindex TupletNumber, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\relative {
  \tuplet 3/2 { c'8[ c c] }
  \once \override TupletNumber.text = #tuplet-number::calc-fraction-text
  \tuplet 3/2 {
    c8[ c]
    c8[ c]
    \once \override TupletNumber.transparent = ##t
    \tuplet 3/2 { c8[ c c] }
    \tuplet 3/2 { c8[ c c] }
  }
}
@end lilypond


@morerefs
Referència de la notació:
@ruser{L'ordre tweak}.

@node El prefix single
@unnumberedsubsubsec El prefix @code{\single}
@translationof The single prefix

@funindex \single
@cindex ajustament, generat a partir d'una sobreescriptura

Suposem que volem emfatitzar el cap d'algunes notes dibuixant-les
amb color i incrementant la seva mida, i suposem també que hem
programat una funció per fer la tasca més còmoda:

@lilypond[quote,verbatim]
emphNoteHead = {
  \override NoteHead.color = #red
  \override NoteHead.font-size = 2
}
\relative {
  c''4 a \once \emphNoteHead f d |
}
@end lilypond

El @code{\once} previ funciona perfectament per emfatitzar notes
úniques o acords complets, però no es pot usar per emfatitzar una
sola nota @emph{dins} d'un acord.  Anteriorment vam veure com es
pot usar l'ordre @code{\tweak} per fer-lo, vegeu
@ref{L'ordre tweak}.  Però
@code{\tweak} no es pot fer servir amb una funció; aquí és on
entra l'ordre @code{\single}:

@lilypond[quote,verbatim]
emphNoteHead = {
  \override NoteHead.color = #red
  \override NoteHead.font-size = 2
}
\relative {
   <c'' a \single \emphNoteHead f d>4
}
@end lilypond

En resum, @code{\single} converteix les característiques fetes amb
@code{\override} en ajustaments fets amb @code{\tweak} de tal
manera que quan hi ha diversos objectes al mateix instant de temps
musical (com ara les notes d'un acord), @code{\single} afecta a
una única nota, la que es genera per l'expressió que afecta a una
única nota, la que es genera per l'expressió que segueix
immediatament, a diferencia de @code{\once} que afecta a tots
aquests objectes.

L'ús de @code{\single} d'aquesta forma amb una funció qualsevol
que contingui sols sobreescriptures, pot aplicar-se a les notes
individuals d'un acord. Malgrat això, @code{\single} no converteix
@code{\revert}, @code{\set} ni @code{\unset} en ajustaments de @code{\tweak}.

@morerefs
Manual de aprenentatge:
@ref{L'ordre tweak},
@ref{Ús de variables per als ajustaments de disposició}.

@node Manual de referència de funcionament intern
@section Manual de referència de funcionament intern
@translationof The Internals Reference manual

@cindex Referència de funcionament intern

@menu
* Propietats dels objectes de presentació::
* Propietats de les interfícies::
* Tipus de propietats::
@end menu

@node Propietats dels objectes de presentació
@subsection Propietats dels objectes de presentació
@translationof Properties of layout objects

@cindex propietats dels objectes presentació
@cindex propietats dels grobs
@cindex grobs, propietats de
@cindex presentació, propietats dels objectes de
@cindex Referència de funcionament intern

Suposeu que teniu una partitura amb una lligadura d'expressió que
al seu gust és massa fina i voleu dibuixar-la una mica més
gruixuda. Com heu de procedir?  Ja sabeu, per les afirmacions
anteriors sobre la flexibilitat del LilyPond, que hi ha aquesta
possibilitat, i segurament penseu que caldrà alguna ordre de
sobreescriptura @code{\override}. Però, hi ha una propietat de
gruix per a les lligadures? I si hi ha, com es pot modificar?
Aquí es on intervé el Manual de Funcionament Intern.  Conte tota
la informació que podeu necessitar per construir aquesta i la
resta d'ordres @code{\override}, de sobreescriptura.

Un advertiment abans de dirigir la nostra mirada a la referència
de funcionament intern.  Aquest és un document de
@strong{referència}, cosa que significa que es proveeixen poques
explicacions o cap: el seu propòsit és presentar la informació de
forma precisa i concisa.  Per tant, us podrà sembla
desencoratjador a primera ullada.  No us amoïneu!  La guia i les
explicacions que presentem aquí us permetran extraure la
informació de la referència de funcionament intern a vós mateix,
sols us cal una mica de pràctica.

@cindex sobreescriptura, exemple de
@cindex Referència de Funcionament Intern, exemple d'utilització
@cindex @code{\addlyrics}, ejemplo

Anem a fer servir un exemple concret amb un senzill fragment de
música real:

@c Mozart, duo, núm. 7 de La Flauta Màgica

@lilypond[quote,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

Suposeu ara que decidim que ens agrades les lligadures una mica
més gruixudes.  És possible?  La lligadura és, certament, un
objecte de presentació, de manera que la qüestió és @q{Hi ha una
propietat pertanyent a les lligadures d'expressió que controli el
seu gruix?}  Per respondre a aquesta pregunta hem de mirar el
manual de Referència de Funcionament Intern, abreujadament
RFI@footnote{@strong{IR} (Internals Reference) en anglès}.

L'RFI és la versió del LilyPond que esteu usant es pot trobar a la
pàgina web del LilyPond a @uref{https://lilypond.org}.  Aneu a la
pàgina de la documentació i seguiu l'enllaç Manual de Referència
de Funcionament Intern (RFI).  Per als nostres propòsits
pedagògics seria millor que utilitzéssiu la versió en HTML, no la
@q{en una sola pàgina} ni el PDF.  Perquè els següents paràgrafs
tinguin algun sentit haureu de consultar-lo realment al temps que
llegiu.

@c Link names in English as those pages are not yet translated. WG
Sota l'encapçalament @strong{Top} podreu veure cinc
enllaços. Seleccioneu l'enllaç @emph{Backend}, que és on es troba
la informació sobre els objectes de presentació.  Un cop allí,
sota l'encapçalament @strong{Backend}, seguiu l'enllaç @emph{All
layout objects}.  La pàgina que apareix relaciona totes els
objectes de presentació que s'usen a la vostra versió del
LilyPond, en ordre alfabètic.  Segui l'enllaç Slur (lligadura
d'expressió), i apareixeran relacionades les propietats de les
lligadures d'expressió o Slurs.

Una forma alternativa de trobar aquesta pàgina és a partir de la
Referencia de la Notació.  En una de les pàgines que tracten de
les lligadures d'expressió podreu trobar un enllaç al manual de
referència del funcionament intern.  Aquest enllaç us portarà
directament a aquesta pàgina, tot i que si teniu una idea del nom
de l'objecte de presentació que preteneu ajustar, li resultarà més
fàcil anar directament al RFI i buscar allí.

Aquesta pàgina sobre les lligadures d'expressió dins del manual
RFI ens diu en primer lloc que els objectes Slur es creen pel
gravador Slur_engraver.  A continuació relaciona els ajustos
estàndard.  Navegueu per ells buscant una propietat que pogués
controlar el gruix de les lligadures, i trobarà

@example
thickness (number)
     1.2
     Line thickness, generally measured in line-thickness
@end example

Això promet ser una bona opció per canviar el gruix.  Ens diu que
el valor de @code{thickness} és un simple @emph{número}, que el
valor predeterminat és 1.2, i que les unitats estan dins d'una
altra propietat anomenada @code{line-thickness}.

Com havíem dit amb anterioritat, hi ha entre poques i cap
explicació al RFI, però ja tenim informació suficient per provar
de canviar el gruix de la lligadura.  Vejam que el nom de
l'objecte de presentació és @code{Slur}, que el nom de la
propietat que hem de canviar és @code{thickness} i que el nou
valor ha de ser un número una mica més gran que 1.2 si volem fer
les lligadures més gruixudes.

Ara podem construir la instrucció de sobreescriptura
@code{\override} simplement mitjançant la substitució dels valores
que hem trobar per als noms, ometent el context.  Usarem un valor
molt gran per al gruix al començament, per estar segurs que
l'ordre estigui funcionant.  Obtenim el següent:

@example
\override Slur.thickness = #5.0
@end example

No oblideu el @code{#'} abans del nom de la propietat
i@tie{}@code{#} abans del valor nou!

La pregunta final és @q{On s'ha de col·locar aquesta ordre?} Tot i
que ens falta seguretat i estem aprenent encara, la millor
resposta és: @q{Dins de la música, abans de la primera lligadura i
a prop d'ella.}  Fem-lo així:

@cindex Slur, exemple de sobreescriptura
@cindex thickness, propietat, exemple

@lilypond[quote,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    % Increase thickness of all following slurs from 1.2 to 5.0
    \override Slur.thickness = #5.0
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

@noindent
i podem veure que la lligadura és, sense dubte, més gruixuda.

Així doncs, aquesta és la forma bàsica de construir ordres
@code{\override} o de sobreescriptura.  Hi ha unes quantes
complicacions més amb les quals ens trobarem a seccions
posteriors, però ara coneixeu totes els principis essencials que
us calen per fer-lo per vós mateix (tot i que encara us fa falta
una mica de pràctica).  Els següents exemples us donaran més
pràctica.

@subsubsubheading Cerca del context

@cindex context, trobar
@cindex context, buscar el, correcte

Però en primer lloc, que hauria passat si haguéssim hagut
d'especificar el context? Quin seria?  Podem suposar que les
lligadures estan al context Voice, per estar clarament associats
de manera estreta amb les línies individuals de música, però podem
tenir seguretat?  Per esbrinar-lo, anem de nou a l'inici de la
pàgina del RFI que descriu les lligadures (Slur), con diu
@q{Slur objects are created by: Slur engraver}
(«Els objectes de lligadura d'expressió es creen per: el gravador
Slur»). Així doncs, les lligadures d'expressió es creen en
qualsevol context en el que es trobi el gravador
@code{Slur_engraver}.  Seguiu l'enllaç a la pàgina del gravador
@code{Slur_engraver}.  Al final de tot, diu que el gravador
@code{Slur_engraver} és part de set contextos de veu, inclòs el
context de veu estàndard, @code{Voice}, per la qual cosa la nostra
suposició és encertada.  I a causa que @code{Voice} és un dels
contextos de més baix nivell que es troba implícit sense
ambigüitat pel fet que estem escrivint notes, podem ometre'l en
aquest lloc concret.

@subsubsubheading Sobreescriptura per un sol cop

@cindex sobreescriptura per un sol cop
@cindex once override

@funindex \once

Com podeu veure, @emph{totes} les lligadures són més gruixudes a
l'últim exemple. Però, i si volguéssim que sols la primera
lligadura fos més gruixuda?  Això s'aconsegueix amb la instrucció
o prefix @code{\once}.  Col·locat immediatament abans de la
instrucció @code{\override} ocasiona que sols canviï la lligadura
que comença a la nota @strong{immediata següent}.  Si la nota
immediata següent no inicia una lligadura, l'ordre no té cap
efecte en absolut: no es recorda fins que es trobi alguna
lligadura, sinó que simplement s'ignora.  Així doncs, l'ordre que
porta @code{\once} s'ha de tornar a posicionar de la forma següent:

@cindex Slur, exemple de sobreescriptura
@cindex thickness, propietat, exemple

@lilypond[quote,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    bes8[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

@noindent
Hem fet que ara sols la primera lligadura sigui més gruixuda.

L'ordre o prefix @code{\once} també es pot fer servir abans de
l'ordre @code{\set}.

@subsubsubheading Recuperació de l'ajustament

@cindex revertir
@cindex predeterminades, recuperar las propietats

@funindex \revert

Finalment, i si volguéssim que sols les dues primeres lligadures
fossin més gruixudes?  Per acabar; podríem usar dues ordres,
cadascuna d'elles precedida pel prefix @code{\once}, situades
immediatament abans de cada una de les notes on comencen les lligadures:

@cindex Slur, exemple de sobreescriptura
@cindex thickness, propietat, exemple

@lilypond[quote,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    bes[( g]) g |
    % Increase thickness of immediately following slur only
    \once \override Slur.thickness = #5.0
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

@noindent
o podríem ometre l'ordre prefix @code{\once} i utilitzar l'ordre
@code{\revert} (restableix) per retornar la propietat del gruix,
@code{thickness}, al seu valor predeterminat després de la segona
lligadura:

@cindex Slur, exemple de sobreescriptura
@cindex thickness, propietat, exemple

@lilypond[quote,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8
    % Increase thickness of all following slurs from 1.2 to 5.0
    \override Slur.thickness = #5.0
    bes[( g]) g |
    g8[( es]) es
    % Revert thickness of all following slurs to default of 1.2
    \revert Slur.thickness
    d8[( f]) as |
    as8 g
  }
  \addlyrics {
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

@noindent
L'ordre @code{\revert} es pot utilitzar per retornar qualsevol
propietat que s'hagi canviat amb @code{\override} al seu valor
predeterminat.  Podeu utilitzar el mètode que millor s'adapti a
allò que voleu fer.

D'aquesta manera finalitza la nostra introducció al manual de RFI,
i el mètode bàsic d'ajustament.  A continuació, en les últimes
seccions d'aquest capítol trobareu diversos exemples, en par par
introduir-vos a algunes de les possibilitats addicionals del
manual RFI, i en part per proporcionar-vos més pràctica sobre com
extraure informació d'ell.  Aquests exemples aniran contenint cada
cop menys paraules de guia i explicació.

@node Propietats de les interfícies
@subsection Propietats de les interfícies
@translationof Properties found in interfaces

@cindex interface
@cindex propietats de les interfícies
@cindex interfaces, propietats

Suposeu ara que volem imprimir la lletra de la cançó en
cursiva. Quina forma d'instrucció @code{\override} necessitem per
fer-lo?  En primer lloc mirem a la pàgina de RFI que fa una
relació de tots els objectes, @q{All layout objects}, com abans, i
busquem un objecte que pugui controlar la lletra de la cançó.
Trobem @code{LyricText}, que sembla adequat.  En seguir aquest
enllaç es presenten les propietats ajustables per al text de la
lletra.  Aquests inclouen @code{font-series} i @code{font-size},
però res que pogués genera una forma cursiva.  Això és perquè la
propietat de la forma és comuna a tots els objectes de font
tipogràfica, i per tant, en comptes d'incloure'l en cada u dels
objectes de presentació, s'agrupa junt amb altres propietats
comunes semblants i es deposita a un @strong{Interface}, la
interfície dels tipus de lletra @code{font-interface}.

Per tant, ara necessitem aprendre com trobar les propietats de les
interfícies, i descobrir quins objectes usen aquestes propietats
d'interfície.

Mireu un altre cop la pàgina del RFI que descriu a LyricText.  Al
final de la pàgina hi ha una llista d'enllaços a les interfícies
que LyricText contempla.  La llista té set elements, entre ells
@code{font-interface}.  En seguir aquest enllaç arribem a les
propietats associades amb aquesta interfície, que també són
propietats de tots els objectes que la porten, entre ells LyricText.

Ara veiem totes les propietats ajustables per l'usuari que
controles els tipus de lletra, entre elles
@code{font-shape(symbol)}, on @code{symbol} es pot establir a
@code{upright} (recta), @code{italics} (cursiva) o @code{caps}
(majúscules petites).

Observareu que @code{font-series} i @code{font-size} també es
troben aquí relacionats.  Això fa que de seguida se'ns plantegi la
pregunta: Perquè estan les propietats comunes de tipografia
@code{font-series} i @code{font-size} relacionades sota
@code{LyricText} així com sota la interfície @code{font-interface}
però @code{font-shape} no ho està? La resposta és que
@code{font-series} i @code{font-size} es canvie a partir dels seus
valors predeterminats globals quan es crea un objecte
@code{LyricText}, però @code{font-shape} no ho fa. Aleshores els
elements de la llista @code{LyricText} els diuen els valors per
aquestes dues propietats que són d'aplicació per a
@code{LyricText}.  D'altres objectes que tenen en compte
@code{font-interface} establiran aquestes propietats de forma
diferent quan es creen.

Vejam ara si podem construir la instrucció @code{\override} per
canviar la lletra a cursiva.  L'objecte és @code{LyricText}, la
propietat és @code{font-shape} i el valor és @code{italic}.  Igual
que abans, ometrem el context.

Com a nota a part, tot i que és important, observeu que certes
propietats prenen valors que són símbols, com ara @code{italic}, i
han d'anar precedits per un apòstrof, @code{'}.  Els símbols es
llegeixen a continuació internament per part del LilyPond.
Tingueu en compte la diferència amb les cadenes de text
arbitràries, que apareixeran com @code{«una cadena de text»}; per
veure més detalls sobre els símbols i les cadenes, consulteu
@rextendnamed{Scheme tutorial,Tutorial de l'Scheme}.

Així doncs, l'ordre @code{\override} necessària per imprimir la
lletra en cursiva és:

@example
\override LyricText.font-shape = #'italic
@end example

@noindent
Això s'ha d'escriure just davant de la lletra que ha d'afectar,
d'aquesta forma:

@cindex font-shape, propietat, exemple
@cindex italic, exemple
@cindex LyricText, exemple de sobreescriptura
@cindex @code{\addlyrics}, exemple

@lilypond[quote,ragged-right,verbatim]
{
  \key es \major
  \time 6/8
  \relative {
    r4 bes'8 bes[( g]) g |
    g8[( es]) es d[( f]) as |
    as8 g
  }
  \addlyrics {
    \override LyricText.font-shape = #'italic
    The man who | feels love's sweet e -- | mo -- tion
  }
}
@end lilypond

@noindent
i tota la lletra s'escriu en cursiva.

@warning{Dins de la lletra, deixeu sempre espais entre la síl·laba
final i la clau de tancament.}

@morerefs
Manual de Extensió:
@rextendnamed{Scheme tutorial,Tutorial de l'Scheme}.


@node Tipus de propietats
@subsection Tipus de propietats
@translationof Types of properties

@cindex propietats, tipus de

Fins aquí hem vis dos tipus de propietats: @code{número} i
@code{símbol}.  Perquè sigui vàlid, el valor que es dóna a una
propietat ha de ser del tipus correcte i obeir les regles d'aquest
tipus.  El tipus de la propietat es mostra sempre entre claus
després del nom de la propietat al RFI.  Vet aquí una llista dels
tipus que us podrà caldre, junt amb les regles d'aquest tipus, i
alguns exemples. Heu d'escriure sempre un símbol d'encoixinat,
@code{#}, per suposat, endavant d'aquests valors quan
s'introdueixen a l'ordre @code{\override}, fins i tot si el propi
valor ja comença per@tie{}@code{#}.  Sols oferim aquí exemple per
a constants; si voleu calcular un valor usant l'Scheme, consulteu
@rextendnamed{Calculations in Scheme,Càlculs a l'Scheme}.

@multitable @columnfractions .2 .45 .35
@headitem Tipus  propietat
  @tab Regles
  @tab Exemples de propietat
@item Booleà
  @tab Vertader o fals, representat per #t o #f
  @tab @code{#t}, @code{#f}
@item Dimensió (en espais de pentagrama)
  @tab Un nombre decimal (en unitats de espais de pentagrama)
  @tab @code{2.5}, @code{0.34}
@item Direcció
  @tab Una constant vàlida de direcció o el seu equivalent numèric
  (@code{0} o @code{CENTER} indiquen una direcció neutra)
  @tab @code{LEFT}, @code{CENTER}, @code{UP},
       @code{1}, @w{@code{-1}}
@item Enter
  @tab Un número enter positiu
  @tab @code{3}, @code{-1}
@item Llista
  @tab Una seqüència de constants o símbols separats per espais,
  envoltada per claus
  i precedida per un apòstrof o cometa simple
  @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
       @code{'(1.0 0.25 0.5)}
@item Marcatge
  @tab Qualsevol element vàlid de marcatge de text
  @tab @code{\markup @{ \italic "cresc." @}}, @code{"gaita"}
@item Moment
  @tab Una fracció de rodona construïda amb la funció make-moment
  @tab @code{(ly:make-moment 1/4)},
       @code{(ly:make-moment 3/8)}
@item Nombre
  @tab Qualsevol valor positiu, possiblement decimal
  @tab @code{3}, @w{@code{-2.45}}
@item Parella (de números)
  @tab Dos números separats per un @q{espai . espai}, envoltat entre parèntesis i precedir per un apòstrof
  @tab @code{'(2 . 3.5)}, @code{'(0.1 . -3.2)}
@item Símbol
  @tab Qualsevol del conjunt de símbols permesos per a aquesta propietat, precedir per un apòstrof
  @tab @code{'italic}, @code{'inside}
@item Desconegut
  @tab Un procediment o @code{#f} per no produir cap acció
  @tab @code{bend::pr
int}, @code{ly:text-interface::print},
       @code{#f}
@item Vector
  @tab Constants
  envoltades per @code{#(}@dots{}@code{)}.
  @tab @code{#(#t #t #f)}
@end multitable


@morerefs
Manual de Extensió:
@rextendnamed{Scheme tutorial,Tutorial de l'Scheme}.


@node Aparença dels objectes
@section Aparença dels objectes
@translationof Appearance of objects

Ara posarem en practica el que hem après amb uns quants exemples
que mostren com es poden usar els ajustament per canviar l'aspecte
de la música impresa.

@menu
* Visibilitat i color dels objectes::
* Mida dels objectes::
* Longitud i gruix dels objectes::
@end menu

@node Visibilitat i color dels objectes
@subsection Visibilitat i color dels objectes
@translationof Visibility and color of objects

Dins d'una ús educatiu de la música, podríem desitjar imprimir una
partitura amb certs elements omesos com a exercici per a l'alumne,
a qui es demana que els completi.  Com a exemple senzill, suposem
que l'exercici és escriure les línies divisòries que falten en un
fragment musical.  Però les línies divisòries que normalment
s'insereixen automàticament, com fem perquè no s'imprimeixin?

Abans d'embolicar-nos amb això, recordem que les propietats dels
objectes s'agrupen en el que hem anomenat @emph{interfaces} (vegeu
@ref{Propietats de les interfícies}).  Això implica simplement
agrupar les propietats que es poden usar juntes per ajustar un
objecte gràfic: si una d'elles es necessita per a un objecte,
també les altres.  Així, certs objectes usen les propietats
d'alguns interfícies, altres usen les d'altres interfícies.  Les
interfícies que contenen les propietats que un determinat grob
necessita es troben relacionades al manual RFI al final de la
pàgina que descriu aquest grob, i aquestes propietats es poden
veure mirant aquestes interfícies.

Hem explicat com trobar informació sobre els grobs a
@ref{Propietats dels objectes de presentació}.  Usant el mateix
enfocament, anem al RFI per buscar l'objecte de presentació que
imprimeix les línies divisòries.  Mitjançant l'enllaç
@emph{Backend} i @emph{All layout objects} trobem que hi ha un
objecte de presentació anomenat @code{Barline}.  Entre les seves
propietats es troben dues que controlen la visibilitat:
@code{break-visibility} i @code{stencil}.  Les línies divisòries
també contemplen una sèrie d'interfícies, entre ells el
@code{grob-interface}, on podem trobar les propietats
@code{transparent} i @code{color}.  Totes poden afectar la
visibilitat de les barres de compàs (i, per suposat, per extensió,
també la de molts altres objectes de presentació).  Considerarem
cada un d'ells per ordre.

@menu
* La propietat stencil (segell)::
* La propietat break-visibility (visibilitat del salt)::
* La propietat transparent (transparent)::
* La propietat color::
@end menu

@node La propietat stencil (segell)
@unnumberedsubsubsec La propietat @code{stencil} (segell)
@translationof The stencil property

@cindex stencil (segell), propietat

Aquesta propietat controla l'aparença de les barres de compàs
mitjançant l'especificació del símbol (o «glif») que s'ha
d'imprimir.  Igual que com altres moltes propietats, es pot
establir de forma que no imprimeixi res ajustant el seu valor a
@code{#f}.  El provarem, com abans, ometent el Context implícit,
p@code{Voice}:

@cindex BarLine, exemple de sobreescriptura
@cindex stencil, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

Les barres de compàs encara s'imprimeixen.  Què és el que està
malament?  Torneu al RFI i mireu un altre cop la pàgina que
ofereix les propietats de l'objecte Barline.  Al principi de la
pàgina diu @qq{Barline objects are created by: Bar_engraver} (els
objectes Barline es creen pel gravador Bar_engraver).  Aneu a la
pàgina del gravador @code{Bar_engraver} seguint l'enllaç.  Al
final dóna una llista de contextos en els quals el gravador de
línies divisòries opera.  Tots ells són del tipus @code{Staff}, i
així la raó que l'ordre @code{\override} no funcionés com
esperàvem, és perquè @code{Barline} no es troba en el context
predeterminat @code{Voice}.  Si el context no s'especifica
correctament, l'ordre simplement no funciona.  No es produeix cap
missatge d'error, i no es registra res al fitxer log de registre.
Intentarem corregir-lo escrivint el context correcte:

@cindex BarLine, exemple de sobreescriptura
@cindex stencil, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.BarLine.stencil = ##f
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

Ara les barres de compàs han desaparegut.  L'operació d'establir la
propietat @code{stencil} al valor @code{#f} és tan freqüent que hi
ha una abreviatura per a ella, anomenada @code{\omit} (ometre):
@funindex \omit

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \omit Staff.BarLine
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

Malgrat això, observeu que l'establiment de la propietat
@code{stencil} al valor @code{#f} produeix error quan es
requereixen les dimensions de l'objecte per un processament
correcte.  Per exemple, es generen errors si la propietat
@code{stencil} de l'objecte @code{NoteHead} s'estableix al valor
@code{#f}.  Si és el cas, podem en comptes d'això utilitzar la
funció  @code{point-stencil}, que estableix el segell a un objecte
amb mida nul·la:

@lilypond[quote,verbatim]
\relative {
  c''4 c
  \once \override NoteHead.stencil = #point-stencil
  c4 c
}
@end lilypond

@node La propietat break-visibility (visibilitat del salt)
@unnumberedsubsubsec La propietat @code{break-visibility} (visibilitat del salt)
@translationof The break-visibility property

@cindex break-visibility, propietat

Veiem a les propietats de @code{BarLine} que apareixen al RFI que
la propietat @code{break-visibility} requereix un vector de tres
valors booleans.  Controlen respectivament si les barres de
compàs s'imprimeixen al final d'una línia, a meitat d'una línia, i
al principi de les línies.  Per al nostre exemple, volem que totes
les barres de compàs es suprimeixin, per la qual cosa el valor que
ens cal és @code{#(#f #f #f)} (disponible també sota el nom
@code{all-invisible}, totes invisibles).  Anem a provar-lo,
recordant incloure el context de @code{Staff}.  Observeu també en
escriure aquest valor tenim @code{##} abans de la clau
d'obertura.  Cal un @code{#} com a part de la sintaxi de les
constants vectorials, i el primer símbol
d'encoixinat@tie{}@code{#} cal, com sempre, per precedir el valor
mateix dins de l'ordre @code{\override}.

@cindex BarLine, exemple de sobreescriptura
@cindex break-visibility, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.BarLine.break-visibility = ##(#f #f #f)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

I podem veure que això també treu totes les línies divisòries.

@node La propietat transparent (transparent)
@unnumberedsubsubsec La propietat @code{transparent} (transparent)
@translationof The transparent property

@cindex transparent, propietat
@cindex transparència

En la relació de propietats que s'especifiquen a la pàgina del
@code{grob-interface} del RFI podem veure que la propietat
@code{transparent} és un valor booleà.  Això s'ha d'establir a
@code{#t} per fer que el grob sigui transparent.  A l'exemple
següent farem que la indicació de compàs, i no les línies
divisòries, siguin transparents.  Per fer-lo hem de buscar el nom
del grob de la indicació de compàs.  Tornat a la pàgina
@q{All layout objects} del RFI, busquem les propietats de
l'objecte de presentació @code{TimeSignature}.  El produeix el
gravador @code{Time_signature_engraver} que com podeu comprovar
viu dins del context @code{Staff} i també contempla la interfície
@code{grob-interface}.  Així doncs, l'ordre que fa transparent a
la indicació de compàs és:

@cindex TimeSignature, exemple de sobreescriptura
@cindex transparent, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.TimeSignature.transparent = ##t
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
Un cop més, l'establiment de la propietat @code{transparent} és
una operació força freqüent, de manera que tenim una abreviatura
anomenada @code{\hide} (ocultar):
@funindex \hide

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \hide Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
En cap dels dos casos apareix ja la indicació de compàs, però
aquesta ordre deixa una separació en el lloc on abans hi havia la
indicació de compàs.  Potser això és el que volem per a un
exercici on l'alumne hagi d'escriure'l, però en altres
circumstàncies aquesta separació podria no ser desitjable.  En
comptes d'això, per treure-la, el stencil o «segell» de la
indicació de compàs s'ha d'establir al valor @code{#f}:

@cindex TimeSignature, exemple de sobreescriptura
@cindex stencil, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \omit Staff.TimeSignature
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
i la diferència és òbvia: en establir el segell al valor
@code{#f} (possiblement per mitjà de @code{\omit} traiem l'objecte
per complet; en fer l'objecte @code{transparent} (cosa que es pot
fer utilitzant @code{\hide}) el deixen on és, però el fem invisible.

@node La propietat color
@unnumberedsubsubsec La propietat @code{color}
@translationof The color property

@cindex color, propietat

Per finalitzar, intentem fer invisibles les barres de compàs
pintant-les de color blanc (hi ha un problema relacionat, que
consisteix en què la línia divisòria blanca pot tapar o no tapar
les línies del pentagrama amb les quals es creua.  Podreu observar
en alguns dels exemples que apareixen a continuació, que això
succeeix de forma impredictible.  Els detalls sobre perquè això passa
així, i com controlar-lo, s'estudien a
@ruser{Pintar els objectes de blanc};
de moment estem estudiant el color, per la qual cosa us preguem
que accepteu aquesta limitació per ara).

La interfície @code{grob-interface} especifica que la propietat
del color és una llista, però no hi ha cap explicació sobre el que
ha d'anar a aquesta llista.  La llista que requereix és realment
una llista de valors en unitats internes, però per evitar haver de
saber quines són, s'ofereixen diverses vies per a l'especificació
dels colors.  La primera forma és utilitzar un dels colors
@q{normals} dels quals es fa una relació a la primera taula de la
@ruser{Llista de colors}.  Per posar les
línies divisòries de color blanc, escrivim:

@cindex BarLine, exemple de sobreescriptura
@cindex color, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.BarLine.color = #white
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
i un altre cop podem comprovar que les barres de compàs no són
visibles.  Observeu que @emph{white} no ve precedit d'un apòstrof:
no és un símbol, sinó una @emph{variable}.  Quan s'avalua,
proporciona la llista de valors interns que es requereixen per
establir el color a blanc.  Els altres colores de la llista normal
també són variables.  Per convèncer-vos que això funciona, potser
voleu canviar el color a una de les altres variables de la llista.

@cindex colors d'X11
@cindex X11, colors de

@funindex x11-color

La segona forma de canviar el color és utilitzar la llista de noms
de colores d'X11 que apareix a la segona llista de
@ruser{Llista de colors}.  De totes maneres,
es fan correspondre als valors real per mitjà de la funció
@code{x11-color} que converteix els símbols de color d'X11 a la
llista de valors interns d'aquests colors:

@cindex BarLine, exemple de sobreescriptura
@cindex color, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(x11-color 'white)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
Observeu que en aquest cas la funció @code{x11-color} agafa un
símbol com a argument, de manera que el símbol ha d'anar precedit
d'un apòstrof per evitar que resulti avaluat com si fos una
variable, i tota la crida a la funció s'ha de envoltar entre parèntesis.

@cindex rgb, colors
@cindex color, rgb

@funindex rgb-color

Encara hi ha una altra funció, que converteix valors RGB en colors
interns: la funció @code{rgb-color}.  Agafa tres arguments que
donen les intensitats de vermell, verd i blau.  Cadascú d'ells pot
agafar valors entre 0 i 1.  Per tant, per establir el color a
vermell, el valor ha de ser @code{(rgb-color 1 0 0)}  i per a
blanc ha de ser @code{(rgb-color 1 1 1)}:

@cindex BarLine, exemple de sobreescriptura
@cindex color, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.BarLine.color = #(rgb-color 1 1 1)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

Finalment, hi ha també una escala de grisos com a part del conjunt
de colors d'X11.  Varien des del negre, @code{'grey0}, fins al
blanc, @code{'grey100}, en passos de 1.  Il·lustrarem això
establint tots els objectes de presentació del nostre exemple a
diverses gradacions de gris:

@cindex StaffSymbol, exemple de sobreescriptura
@cindex TimeSignature, exemple de sobreescriptura
@cindex Clef, exemple de sobreescriptura
@cindex NoteHead, exemple de sobreescriptura
@cindex Stem, exemple de sobreescriptura
@cindex BarLine, exemple de sobreescriptura
@cindex color property, exemple
@cindex x11-color, exemple d'utilització

@lilypond[quote,ragged-right,verbatim]
\relative {
  \time 12/16
  \override Staff.StaffSymbol.color = #(x11-color 'grey30)
  \override Staff.TimeSignature.color = #(x11-color 'grey60)
  \override Staff.Clef.color = #(x11-color 'grey60)
  \override Voice.NoteHead.color = #(x11-color 'grey85)
  \override Voice.Stem.color = #(x11-color 'grey85)
  \override Staff.BarLine.color = #(x11-color 'grey10)
  c''4 b8 c d16 c d8 |
  g,8 a16 b8 c d4 e16 |
  e8
}
@end lilypond

@noindent
Observeu els contextos associats amb cadascú dels objectes de
presentació.  És important que estiguin correctament escrits, o
les ordres no funcionaran.  Recordeu que el context és aquell en
el qual es troba el gravador corresponent.  El context
predeterminat per als gravadors pot trobar-se començant per
l'objecte de presentació, d'aquí al gravador que el produeix, i a
la pàgina del gravador del RFI apareix en quin context es pot
trobar normalment el gravador.

@node Mida dels objectes
@subsection Mida dels objectes
@translationof Size of objects

@cindex canvi de la mida dels objectes
@cindex mida dels objectes
@cindex objectes, mida de
@cindex objectes, canvi de la mida de

Començarem examinant un altre cop un exemple anterior (vegeu
@ref{Niuat d'expressions musicals}) que ens mostrava com introduir
un pentagrama temporal, com a un @rglos{ossia}.

@cindex alignAboveContext, propietat, exemple
@cindex @code{\with}, ejemplo

@lilypond[quote,ragged-right,verbatim]
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main" }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Els fragments d'Ossia s'escriuen normalment sense clau ni compàs,
i en general s'imprimeixen més petits que el pentagrama
principal.  Ja sabem com treure la clau i el compàs: simplement
establim el segell de cadascú d'ells a @code{#f}, como segueix:

@cindex alignAboveContext, propietat, exemple
@cindex @code{\with}, exemple
@funindex \omit
@cindex Clef, exemple de sobreescriptura
@cindex TimeSignature, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
      }
      {
        \omit Staff.Clef
        \omit Staff.TimeSignature
        { f8 f c }
      }
    >>
    r4 |
  }
}
@end lilypond

@noindent
on el parell de claus addicionals després de l'ordre
@code{\with} són necessàries per assegurar que la sobreescriptura
envoltada i la música s'apliquen al pentagrama d'ossia.

Però, quina és la diferència entre modificar el context de
pentagrama usant @code{\with} i modificar els segells de clau i de
compàs amb \override, o en aquest cas @code{\omit}?  La diferència
principal és que els canvis que es realitzen a una ordre
@code{\with} es fan en el moment que es crea el context, i romanen
actiu com a valors @strong{predeterminats} durant tota la duració
d'aquest context, mentre que les ordres @code{\set} o
@code{\override} incloses dins de la música són dinàmiques: fan
canvis sincronitzats amb un punt concret de la música.  Si els
canvis es desfan o es reverteixen mitjançant @code{\unset} o
@code{\revert} tornaran al seu valor predeterminat que serà
l'establert a l'ordre @code{\with}, o si no s'ha establert cap
valor en aquest lloc, els valors predeterminats normals.

Certes propietats de context es poden modificar sols dins de les
ordres @code{\with}.  Són aquelles propietats que no es poden
canviar després que el context s'hagi
creat. @code{alignAboveContext} i el seu company,
@code{alignBelowContext}, són dos d'aquestes propietats: un cop
que el pentagrama s'ha creat, la seva alineació està decidida i no
tindria sentit intentar canviar-la més tard.

Els valors predeterminats de les propietats dels objectes de
presentació també es poden establir dins d'ordres
@code{\with}. Simplement utilitzeu l'ordre @code{\override} normal
deixant a part el nom del context, ja que està definit sense
ambigüitat com el context que l'ordre @code{\with} està
modificant.  De fet, es produirà un error si s'especifica un
context en aquest lloc.

Així doncs, podem reemplaçar l'exemple anterior amb

@cindex alignAboveContext, propietat, exemple
@cindex @code{\with}, exemple
@cindex Clef, exemple de sobreescriptura
@cindex TimeSignature, exemple de sobreescriptura

@lilypond[quote,ragged-right,verbatim]
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        % Don't print clefs in this staff
        \override Clef.stencil = ##f
        % Don't print time signatures in this staff
        \override TimeSignature.stencil = ##f
      }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Resulta que també podem usar aquí les abreviatures @code{\hide} i
@code{\omit} per fixar la propietat @code{transparent} i esborrar
el @code{stencil}, el que condueix al resultat següent:

@lilypond[quote,ragged-right,verbatim]
\new Staff ="principal" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "principal"
        % No imprimeixis claus en aquest pentagrama
        \omit Clef
        % No imprimeixis indicacions de compàs en aquest pentagrama
        \omit TimeSignature
      }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Finalment arribem a la forma de canviar la mida dels objectes de
presentació.

Certs objectes de presentació es creen com glifs trets d'un tipus
de lletra.  Entre ells es troben els caps, alteracions, elements
de marcatge, claus, indicacions de compàs, indicacions dinàmiques
i la lletra de les cançons.  La seva mida es canvia mitjançant la
modificació de la propietat @code{font-size}, com veurem en breu.
Altres objectes de presentació, com ara lligadures d'unió i
d'expressió (en general, objectes d'extensió) es dibuixen
individualment, per la qual cosa no hi ha una mida de tipus de
lletra @code{font-size} associat amb ells.  Aquests objectes
generalment deriven la seva mida dels objectes als quals estan
adjuntats, i per això normalment no hi ha necessitat de
canviar-los la mida manualment.  A més a més, altres propietats
com la longitud de les pliques i les barres de compàs, el gruix de
les barres de corxera i altres línies, i la separació de les
línies del pentagrama, s'han de modificar d'altres maneres especials.

Tornant a l'exemple de l'ossia, canviarem en primer lloc la mida
del tipus de lletra.  Podem fer-lo de dues formes.  Podem canviar
la mida dels tipus de lletra de cadascú dels tipus d'objecte com
els caps (@code{NoteHead}s) amb instruccions com ara:

@example
\override NoteHead.font-size = #-2
@end example

o podem canviar la mida de tots els tipus de lletra establint una
propietat especial, @code{fontSize}, utilitzant @code{\set}, o
mitjançant la seva inclusió dins d'una ordre @code{\with} (però
sense el @code{\set}).

@example
\set fontSize = #-2
@end example

Els dos enunciats produirien una reducció de la mida del tipus de
lletra en dos passos a partir del seu valor previ, on cada pas
redueix o augmenta la mida aproximadament en un 12%.

Ho provarem al nostre exemple de l'ossia:

@cindex alignAboveContext, propietat, exemple
@cindex @code{\with}, exemple
@cindex Clef, exemple de sobreescriptura
@cindex TimeSignature, exemple de sobreescriptura
@cindex fontSize, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        % Redueix totes les mides de tipus de lletra per ~24%
        fontSize = #-2
      }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

Encara no està massa bé.  Els caps i les pliques de les notes
són més petits, però les pliques són massa llargues en proporció,
i les línies del pentagrama estan massa separades entre sí.  S'ha
de reduir la seva escala en proporció a la reducció del tipus de
lletra.  El següents apartat tracta sobre com es fa això.

@node Longitud i gruix dels objectes
@subsection Longitud i gruix dels objectes
@translationof Length and thickness of objects

@cindex distàncies
@cindex gruix
@cindex longitud
@cindex magstep
@cindex mida, canviar
@cindex plica, canviar la longitud
@cindex pentagrama, canviar la separació de les línies

Les distàncies i longituds al LilyPond es mesuren generalment en
espais de pentagrama, la distància entre línies adjacents de la
pauta (o de manera ocasional mig espais), mentre que la major part
de les propietats de @code{thickness} (gruix) es mesuren en
unitats d'una propietat interna anomenada @code{line-thickness.}
Per exemple, de forma predeterminada, a les línies dels reguladors
se'ls dóna un gruix d'una unitat de @code{line-thickness}, mentre
que el @code{thickness} d'una plica és 1.3.  Observeu tanmateix
que certes propietats de gruix són diferents; per exemple, el
gruix de les barres de corxera es controla per mitjà del valor de
@code{beam-thickness}, que es mesura en espais de pentagrama.

Aleshores, com s'han d'escalar les longituds en proporció a la
mida del tipus de lletra?  Es pot fer amb l'ajuda d'una funció
espacial que s'anomena @code{magstep}, pensada especialment per a
aquest propòsit.  Agafa un argument, el canvi de mida de la
tipografia (#-2 al nostre exemple) i retorna un factor d'escalat
adequat per reduir altres objectes en la mateixa proporció. S'una
de la forma següent:

@cindex alignAboveContext, propietat, exemple
@cindex @code{\with}, exemple
@cindex Clef, exemple de sobreescriptura
@cindex TimeSignature, exemple de sobreescriptura
@cindex fontSize, propietat, exemple
@cindex StaffSymbol, exemple de sobreescriptura
@cindex magstep, funció, exemple d'utilització
@cindex staff-space, propietat, exemple
@cindex stencil, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\new Staff ="main" {
  \relative {
    r4 g'8 g c4 c8 d |
    e4 r8
    <<
      { f8 c c }
      \new Staff \with {
        alignAboveContext = "main"
        \omit Clef
        \omit TimeSignature
        fontSize = #-2
        % Redueix la longitud de la plica i l'espaiat entre línies per concordar
        \override StaffSymbol.staff-space = #(magstep -2)
      }
      { f8 f c }
    >>
    r4 |
  }
}
@end lilypond

@noindent
Atès que la longitud de les pliques i moltes altres propietats
relacionades amb les longituds es calculen sempre en relació al
valor de la propietat @code{staff-space}, la seva longitud també
veu reduïda la seva escala automàticament.  Observeu que això
afecta sols a l'escala vertical de l'ossia: l'escala horitzontal
es determina per mitjà de la disposició de la música principal amb
l'objectiu de mantenir-se en sincronia amb ella, de forma que no
resulti afectada per cap d'aquests canvis de mida.  Per suposat,
si l'escala de tota la música principal es canviés d'aquesta
forma, aleshores l'espaiat horitzontal es veuria afectat.
Tractarem d'això més tard, en la secció sobre la disposició.

Això, finalment, completa la creació d'un ossia.  Les mides i
longituds de la resta dels objectes es poden modificar de manera
semblant.

Per a canvis d'escala petits, com a l'exemple de dalt, el gruix de
les diverses línies dibuixades com ara divisòries, barres de
corxera, reguladors, lligadures, etc., no requereixen normalment
cap ajust global.  Si cal ajustar el gruix de qualsevol objecte de
presentació en particular, es pot fer millor mitjançant la
sobreescriptura de la seva propietat
@code{thickness}. Anteriorment vam mostrar un exemple de canvi de
gruix en les lligadures, a @ref{Propietats dels objectes de
presentació}. El gruix de tots els objectes dibuixats (és a dir,
aquells que no es produeixen a partir d'un tipus de lletra) es
poden canviar de la mateixa forma.

@node Col·locació dels objectes
@section Col·locació dels objectes
@translationof Placement of objects

@menu
* Comportament automàtic::
* Objectes interiors al pentagrama::
* Objectes fora del pentagrama::
@end menu


@node Comportament automàtic
@subsection Comportament automàtic
@translationof Automatic behavior

@cindex dins del pentagrama, objectes
@cindex fora del pentagrama, objectes
@cindex objectes dins del pentagrama
@cindex objectes fora del pentagrama

Hi ha certs objectes a la notació musical que pertanyen al
pentagrama i d'altres amb un lloc fora del pentagrama. Reben el
nom d'objectes dins-del-pentagrama i objectes fora-del-pentagrama,
respectivament.

Els objectes dins-del-pentagrama són els que se situen sobre la
pauta: caps, pliques, alteracions, etc.  Les seves posicions
normalment es fixen per la pròpia música; es posicionen
verticalment sobre línies específiques del pentagrama o estan
units a d'altres objectes posicionats d'aquesta forma.  Les
col·lisions entre caps, pliques i alteracions en acords de notes
molt juntes, normalment s'eviten automàticament.  Hi ha
instruccions i sobreescriptures que poden modificar aquest
comportament automàtic, com veurem en breu.

Entre els objectes que pertanyen a l'exterior de la pauta es
troben coses com les marques d'assaig, les marques de text i les
de dinàmica.  La regla del LilyPond per a la col·locació vertical
dels objectes fora-de-pentagrama és col·locar-los tan a prop del
pentagrama com sigui possible, però no tan a prop com perquè
puguin xocar amb algun altre objecte.  El LilyPond utilitza la
propietat @code{outside-staff-priority} per determinar l'ordre en
el qual s'han de situar els objectes, com veurem ara.

En primer lloc, el LilyPond situa tots els objecte
dins-del-pentagrama.  Després ordena els objectes
fora-del-pentagrama d'acord amb la seva prioritat
@code{outside-staff-priority}.  Els objectes fora-del-pentagrama
s'agafen d'un en un, començant pel que té la prioritat
@code{outside-staff-priority} més baixa, i se situen de forme que
no col·lisionin amb cap objecte que s'hagi col·locat ja.  O sigui,
si dos grobs fora-del-pentagrama competeixen pel mateix espai, el
que té la prioritat  @code{outside-staff-priority} més baixa es
col·locarà més a prop del pentagrama.  Si dos objectes tenen la
mateixa @code{outside-staff-priority}, el que s'ha trobat primer
se situarà més a prop de la pauta.

A l'exemple següent tots els textos de marcatge tenen la mateixa
prioritat (atès que no s'ha establert explícitament).  Observeu
que @q{Text3} es posiciona de nou automàticament a prop del
pentagrama, acomodat per sota de @q{Text2}.

@cindex markup, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
c''2^"Text1"
c''2^"Text2" |
c''2^"Text3"
c''2^"Text4" |
@end lilypond

Els pentagrames també es posicionen, de forma predeterminada, tan
a prop els uns dels altre com sigui possible (subjecte a una
separació mínima).  Si les notes es projecten molt lluny en
direcció a un pentagrama adjacent, forçaran a allunyar-se als
pentagrames sols si en cas contrari anés a ocórrer un solapament
de la notació.  L'exemple següent mostra aquesta acomodació
@q{nestling} de les notes sobre pentagrames adjacents:

@lilypond[quote,ragged-right,verbatim]
<<
  \new Staff {
    \relative { c'4 a, }
  }
  \new Staff {
    \relative { c''''4 a, }
  }
>>
@end lilypond


@node Objectes interiors al pentagrama
@subsection Objectes interiors al pentagrama
@translationof Within-staff objects

Ja hem vist com les instruccions @code{\voiceXXX} afecten a la
direcció de les lligadures d'expressió i d'unió, digitacions i
tots els altres elements que depenen de la direcció de les pliques
(vegeu @ref{Veus explícites}).  Quan s'escriu música polifònica,
aquestes ordres són essencials perquè puguin distingir-se diverses
línies melòdiques entrellaçades.  Però ocasionalment pot caldre
sobreescriure aquest comportament automàtic.  Es pot fer seccions
de música completes o fins i tot per a una nota individual.  La
propietat que controla aquest comportament és la propietat de
@code{direction} (direcció) de cada objecte de presentació.  En
primer lloc explicarem que fa això, i després introduirem algunes
instruccions llestes per usar que us evitaran haver de codificar
sobreescriptures explícites per a les modificacions més comunes.

Alguns objectes de presentació com les lligadures es corben cap
amunt o cap avall; d'altres com  les barres i les pliques també
es mouen a la dreta o a l'esquerra quan apunten cap amunt o cap
avall.  Això es controla automàticament quan està establerta la
propietat @code{direction}.

@menu
* La propietat direction (direcció)::
* Digitacions::
@end menu

@node La propietat direction (direcció)
@unnumberedsubsubsec La propietat @code{direction} (direcció)
@translationof The direction property

@cindex amunt
@cindex avall
@cindex centre
@cindex neutre
@cindex down
@cindex up
@cindex center
@cindex neutral

L'exemple següent mostra al primer compàs la col·locació
predeterminada de les lligadures d'expressió, estant per sobre les
que comencen en notes agudes i per sota les que comencen en notes
greus, seguit d'un compàs amb ambdues lligadures forçades cap
avall, un altre compàs amb les dues forçades cap amunt i per últim
un compàs amb les lligadures retornades al seu comportament
predeterminat.

@cindex Slur, exemple de sobreescriptura
@cindex direction, propietat, exemple

@lilypond[quote,fragment,verbatim]
a'4( g') c''( a') |
\override Slur.direction = #DOWN
a'4( g') c''( a') |
\override Slur.direction = #UP
a'4( g') c''( a') |
\revert Slur.direction
a'4( g') c''( a') |
@end lilypond

Aquí hem usat les constants @code{DOWN} (avall) i @code{UP}
(amunt).  Aquestes constants tenen els valors @w{@code{-1}} i
@code{+1}, respectivament, i aquests valors numèrics també es
poden usar directament.  El valor @code{0} també es pot usar en
alguns casos.  Per a les lligadures d'expressió el significat
simplement és @code{up} (cap amunt), però per a alguns objectes té
el significat de @q{centrat}.  Hi ha una constant @code{CENTER}
que té el valor de @code{0}.

Tanmateix, aquestes sobreescriptures no s'usen massa sovint perquè
hi ha disponibles algunes ordres predefinides equivalents més
senzilles. Aquí podem veure una taula de les més comunes.  Es
menciona el significat de cadascuna allí on no és obvi.

@multitable @columnfractions .2 .2 .25 .35
@headitem Avall o Esquerra
  @tab Amunt o Dreta
  @tab Anul·lar
  @tab Efecte
@item @code{\arpeggioArrowDown}
  @tab @code{\arpeggioArrowUp}
  @tab @code{\arpeggioNormal}
  @tab La fletxa està a sota, a dalt o no hi ha fletxa
@item @code{\dotsDown}
  @tab @code{\dotsUp}
  @tab @code{\dotsNeutral}
  @tab Direcció del desplaçament per evitar les línies del pentagrama
@item @code{\dynamicDown}
  @tab @code{\dynamicUp}
  @tab @code{\dynamicNeutral}
  @tab
@item @code{\phrasingSlurDown}
  @tab @code{\phrasingSlurUp}
  @tab @code{\phrasingSlurNeutral}
  @tab Nota: diferent de les ordres de lligadures d'expressió
@item @code{\slurDown}
  @tab @code{\slurUp}
  @tab @code{\slurNeutral}
  @tab
@item @code{\stemDown}
  @tab @code{\stemUp}
  @tab @code{\stemNeutral}
  @tab
@item @code{\textSpannerDown}
  @tab @code{\textSpannerUp}
  @tab @code{\textSpannerNeutral}
  @tab El text introduït com a objecte d'extensió està a sota o a sobre del pentagrama
@item @code{\tieDown}
  @tab @code{\tieUp}
  @tab @code{\tieNeutral}
  @tab
@item @code{\tupletDown}
  @tab @code{\tupletUp}
  @tab @code{\tupletNeutral}
  @tab Els grups especials estan a sota a sobre de les notes
@end multitable

Les variants neutres o normals d'aquests ordres estan
implementades usant @code{\revert} i aquestes ordres @strong{no}
poden anar precedides de @code{\once}.  Si voleu limitar l'efecte
de les altres ordres (que estan implementades usant
@code{\override}) a un sol pas de temps, podeu precedir-la de
@code{\once} de la mateixa forma que ho faríeu amb les
sobreescriptures explícites.

O be, si cap forçar un únic objecte de presentació cap amunt o cap
avall, es poden usar els indicadors de direcció, @code{^} o
@code{_}:

@lilypond[quote,fragment,verbatim]
a'4( g') c''( a') |
a'4^( g') c''_( a') |
@end lilypond

@node Digitacions
@unnumberedsubsubsec Digitacions
@translationof Fingering

@cindex digitació, col·locació
@cindex digitació d'acords

La col·locació de les digitacions sobre notes soltes també es pot
controlar mitjançant la propietat @code{direction}, però els
canvis sobre @code{direction} no tenen cap efecte sobre les notes
dels acords.  Com veurem, hi ha ordres especials que permeten
controlar les digitacions de notes individuals, situant la
digitació a sobre, a sota, a l'esquerra o a la dreta de cada nota.

En primer lloc, vet aquí l'efecte de @code{direction} sobre les
digitacions aplicades a notes soltes.  Es mostra en el primer
compàs el comportament predeterminat, i en els dos compassos
següents l'efecte d'especificat @code{DOWN} i @code{UP}:

@cindex Fingering, exemple de sobreescriptura
@cindex direction, propietat, exemple

@lilypond[quote,verbatim]
\relative {
  c''4-5 a-3 f-1 c'-5 |
  \override Fingering.direction = #DOWN
  c4-5 a-3 f-1 c'-5 |
  \override Fingering.direction = #UP
  c4-5 a-3 f-1 c'-5 |
}
@end lilypond

Tanmateix, la sobreescriptura de la propietat @code{direction} no
és la forma més senzilla d'especificar manualment la digitació per
sobre o per sot de les notes; sol ser preferible usar
@code{_} o @code{^} en lloc de @code{-}, abans del número de la
digitació.  Aquest és l'exemple anterior utilitzant aquest mètode:

@cindex fingering, exemple
@cindex digitación, exemple

@lilypond[quote,verbatim]
\relative {
  c''4-5 a-3 f-1 c'-5 |
  c4_5 a_3 f_1 c'_5 |
  c4^5 a^3 f^1 c'^5 |
}
@end lilypond

La propietat @code{direction} s'ignora per als acords, però els
prefixos direccionals @code{_} i @code{^} sí funcionen. De forma
sí funcionen.  De forma predeterminada, les digitacions es
col·loquen automàticament a sobre i a sota de les notes d'un
acord, com es mostra aquí:

@cindex fingering, exemple
@cindex digitación, exemple

@lilypond[quote,verbatim]
\relative {
  <c''-5 g-3>4
  <c-5 g-3 e-2>4
  <c-5 g-3 e-2 c-1>4
}
@end lilypond

@noindent
però es pot forçar de manera que tots o alguns dels números de
digitació estan per sobre o per sota:

@cindex fingering, exemple
@cindex digitación, exemple

@lilypond[quote,verbatim]
\relative {
  <c''-5 g-3 e-2 c-1>4
  <c^5 g_3 e_2 c_1>4
  <c^5 g^3 e^2 c_1>4
}
@end lilypond

És possible exercir un control encara més gran sobre la
col·locació de les digitacions mitjançant la utilització de
l'ordre @code{\set fingeringOrientations}.  El format d'aquesta
ordre és:

@example
\set fingeringOrientations = #'([up] [left/right] [down])
@end example

@noindent
s'utilitza @code{\set} perquè @code{fingeringOrientations} és una
propietat del context @code{Voice}, creat i usat pel gravador
@code{New_fingering_engraver}.

La propietat es pot establir al valor d'una llista d'entre u i
tres valors.  Controla si les digitacions es poden col·locar per
sobre (si @code{up} apareix a la llista), per sota (si apareix
@code{down}), a l'esquerra (si apareix @code{left}) o a la dreta
(si apareix @code{right}).  A la inversa, si una col·locació no
està a la llista, no se situa cap digitació en aquest lloc.  El
LilyPond agafa aquestes restriccions i calcula la millor
col·locació per a la digitació de les notes dels acords que
segueixen.  Observeu que @code{left} i @code{right} són mútuament
excloents: les digitacions poden situar-se a un costat o l'altre,
no als dos.

@warning{Per controlar la col·locació de la digitació d'una sola
nota usant aquesta instrucció és necessari escriure-la com un
acord d'una sola nota envoltant-la entre angles simples.}

Aquí podem veure alguns exemples:

@cindex fingering, exemple
@cindex digitación, exemple
@cindex @code{\set}, exemple d'utilització
@cindex fingeringOrientations, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\relative {
  \set fingeringOrientations = #'(left)
  <f'-2>4
  <c-1 e-2 g-3 b-5>4
  \set fingeringOrientations = #'(left)
  <f-2>4
  <c-1 e-2 g-3 b-5>4 |
  \set fingeringOrientations = #'(up left down)
  <f-2>4
  <c-1 e-2 g-3 b-5>4
  \set fingeringOrientations = #'(up left)
  <f-2>4
  <c-1 e-2 g-3 b-5>4 |
  \set fingeringOrientations = #'(right)
  <f-2>4
  <c-1 e-2 g-3 b-5>4
}
@end lilypond

@noindent
Si la digitació sembla una mica superpoblada, es pot reduir la
mida @code{font-size}.  El valor predeterminat pot veure's a
l'objecte @code{Fingering} del RFI que és @w{@code{-5}}, així que
provarem @w{@code{-7}}:

@lilypond[quote,ragged-right,verbatim]
\relative {
  \override Fingering.font-size = #-7
  \set fingeringOrientations = #'(left)
  <f'-2>4
  <c-1 e-2 g-3 b-5>4
  \set fingeringOrientations = #'(left)
  <f-2>4
  <c-1 e-2 g-3 b-5>4 |
  \set fingeringOrientations = #'(up left down)
  <f-2>4
  <c-1 e-2 g-3 b-5>4
  \set fingeringOrientations = #'(up left)
  <f-2>4
  <c-1 e-2 g-3 b-5>4 |
  \set fingeringOrientations = #'(right)
  <f-2>4
  <c-1 e-2 g-3 b-5>4
}
@end lilypond


@node Objectes fora del pentagrama
@subsection Objectes fora del pentagrama
@translationof Outside-staff objects

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.

@menu
* La propietat outside-staff-priority (prioritat fora del pentagrama)::
* L'ordre textLengthOn::
* Posicionament dels matisos dinàmics::
* Escalat d'un «Grob»::
@end menu


@node La propietat outside-staff-priority (prioritat fora del pentagrama)
@unnumberedsubsubsec La propietat @code{outside-staff-priority} (prioritat fora del pentagrama)
@translationof The outside-staff-priority property

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 @code{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 @code{outside-staff-priority} es defineix al
@code{grob-interface} i així és una propietat de totes els
objectes de presentació.  De forma predeterminada s'estableix a
@code{#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.

@cindex objectes d'extensió

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 @code{outside-staff-priority} del grob subjacent no
té cap efecte.  Per exemple, canviar la
@code{outside-staff-priority} de l'objecte de regulador
@code{Hairpin} no té efecte sobre la posició vertical dels
reguladors: en comptes d'això, hem de canviar la
@code{outside-staff-priority} de l'objecte associat
@code{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.

@multitable @columnfractions .3 .3 .3
@headitem Objecte de presentació
  @tab Prioritat
  @tab Controla la posició de:
@item @code{RehearsalMark}
  @tab @code{1500}
  @tab Lletres d'assaig
@item @code{MetronomeMark}
  @tab @code{1000}
  @tab Indicacions metronòmiques
@item @code{VoltaBracketSpanner}
  @tab @code{600}
  @tab Caixetes de primer i segona vegada
@item @code{TextScript}
  @tab @code{450}
  @tab Text en elements de marcatge
@item @code{MultiMeasureRestText}
  @tab @code{450}
  @tab Text sobre silencis de compàs complet
@item @code{OttavaBracket}
  @tab @code{400}
  @tab Indicadors d'octava alta i baixa
@item @code{TextSpanner}
  @tab @code{350}
  @tab Objectes d'extensió de text
@item @code{DynamicLineSpanner}
  @tab @code{250}
  @tab Totes les indicacions dinàmiques
@item @code{VoltaBracketSpanner}
  @tab @code{100}
  @tab Números de compàs
@item @code{TrillSpanner}
  @tab @code{50}
  @tab Trins mantinguts
@end multitable

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

@cindex text, extensions de
@cindex octava alta y baixa, clau de

@funindex \startTextSpan
@funindex \stopTextSpan

@cindex TextSpanner, exemple de sobreescriptura
@cindex bound-details, propietat, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
% 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' |
@end lilypond

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@code{\startTextSpan}
fins l'ordre @code{\stopTextSpan}, i el format del text es
defineix per mitjà de l'ordre @code{\override TextSpanner}.  Per
veure més detalls, consulteu
@ruser{Extensions de text}.

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

@cindex ajustar la ubicació dels números de compàs
@cindex números de compàs, ajustar posició
@cindex ajustar la situació de marques metronòmiques
@cindex metrònom, situació de les indicacions de
@cindex ajustar la situació de les lletres d'assaig
@cindex assaig, lletres, ajustar la col·locació

Si els valors predeterminats de @code{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 @code{OttavaBracket} al RFI o en les
taules anteriors, i reduir-lo a un valor inferior al de
@code{TextSpanner}, recordant que @code{OttavaBracket} es crea
dins del context @code{Staff}:

@cindex TextSpanner, exemple de sobreescriptura
@cindex bound-details, propietat, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
% 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' |
@end lilypond

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 @code{Score}; així
doncs, us heu d'assegurar que utilitzeu el context adequat quan se
sobreescriuen les propietats.

@cindex lligadures i outside-staff-priority
@cindex lligadures i articulacions
@cindex articulacions i lligadures

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 @code{avoid-slur} de l'articulació es pot establir al valor
@code{'inside} (per dins) per portar-la a l'interior de la
lligadura, però la propietat @code{avoid-slur} és efectiva sols si
la prioritat @code{outside-staff-priority} està també establerta
al valor @code{#f}.  De forma alternativa, la prioritat
@code{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:

@lilypond[quote,verbatim]
\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 |
}
@end lilypond

Els canvis a @code{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 @qq{Text3} se situï per sobre de @qq{Text4} a l'exemple
sota l'epígraf Comportament Automàtic de més a dalt (vegeu
@ref{Comportament automàtic}).  Tot el que estem fer és localitzar
la prioritat de @code{TextScript} en el RFI o en les taules de
dalt, i augmentar la prioritat de @qq{Text3} fins un valor superior:

@cindex TextScript, exemple de sobreescriptura
@cindex outside-staff-priority, propietat, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
c''2^"Text1"
c''2^"Text2" |
\once \override TextScript.outside-staff-priority = #500
c''2^"Text3"
c''2^"Text4" |
@end lilypond

Això, certament, aixeca a @qq{Text3} per sobre de @qq{Text4}, però
també l'aixeca per sobre de @qq{Text2}, i @qq{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 @code{textLengthOn}.

@node L'ordre textLengthOn
@unnumberedsubsubsec L'ordre @code{\textLengthOn}
@translationof The textLengthOn command

@cindex notes, espaiar amb el text

@funindex \textLengthOn
@funindex \textLengthOff

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 @code{\textLengthOn} inverteix aquest
comportament, fent que les notes resultin tan espaiades com sigui
necessari per encabir el text:

@lilypond[quote,fragment,ragged-right,verbatim]
\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" |
@end lilypond

L'ordre per tornar al comportament predeterminat és
@code{\textLengthOff}.  De forma alternativa es pot usar
@code{\once} amb @code{\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 @code{\markLengthOn} y
@code{\markLengthOff}.

@cindex marcatge, text de, permetre les col·lisions en

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 @code{#f}.  Vet aquí un exemple
que mostra com el text de marcatge interactua amb aquestes notes.

@cindex TextScript, exemple de sobreescriptura
@cindex outside-staff-priority, propietat, exemple

@lilypond[quote,ragged-right,verbatim]
\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 |
}
@end lilypond

@node Posicionament dels matisos dinàmics
@unnumberedsubsubsec Posicionament dels matisos dinàmics
@translationof Dynamics placement

@cindex ajustament de la col·locació dels matisos
@cindex dinàmica, ajustament de la col·locació de les indicacions de
@cindex matisos, ajustament de la col·locació

Les indicacions de matís dinàmic normalment es col·locaran per
sota del pentagrama, però es poden posicionar per sobre amb
l'ordre @code{\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:

@lilypond[quote,ragged-right,verbatim]
\relative {
  \clef "bass"
  \key aes \major
  \time 9/8
  \dynamicUp
  bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
  ees,2.~\)\mf ees4 r8 |
}
@end lilypond

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:

@lilypond[quote,ragged-right,verbatim,fragment]
\dynamicUp
\relative { a'4\f b\mf a\mp b\p }
@end lilypond

@noindent
Si es presentés una situació semblant en música @q{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
@code{\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 @code{\override}.

@node Escalat d'un «Grob»
@unnumberedsubsubsec Escalat d'un «Grob»
@translationof Grob sizing

@cindex grob, canvi de mida d'un
@cindex escala dels grobs

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, @code{X-offset}, i una distancia vertical,
@code{Y-offset}, a partir del seu pare.  La dimensió horitzontal
de l'objecte ve donada per una parella de números,
@code{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,
@code{Y-extent}.  Aquestes són propietats de tots els grobs que
contemplen @code{grob-interface}.

@cindex @code{extra-spacing-width}

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 @code{extra-spacing-width} a @code{'(+inf.0 . -inf.0)}.  Així,
per assegurar que no se superposen en la direcció horitzontal hem
de sobreescriure aquest valor de @code{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:

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

@noindent
Vejam si funciona al nostre exemple anterior:

@cindex DynamicText, exemple de sobreescritura
@cindex extra-spacing-width, propietat, exemple

@lilypond[quote,ragged-right,verbatim,fragment]
\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 }
@end lilypond

@noindent
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 @code{staff-padding} (farciment de
pentagrama) que s'estudia a la secció dedicada a les col·lisions
(vegeu @ref{Col·lisions d'objectes}).

@node Espaiat vertical
@section Espaiat vertical
@translationof Vertical spacing

En general, l'espaiat vertical dels objectes musicals que fa el
LilyPond és força bo.  Vejam com es comporta amb una cançó
senzilla, amb dues veus i acompanyament de piano:

@lilypond[quote,fragment,ragged-right]
<<
  \new ChoirStaff
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>
@end lilypond

No hi ha cap problema amb l'espaiat vertical predeterminat.
Suposem tanmateix que estem treballant amb un editor que té certs
requisits específics per a l'espaiat vertical dels pentagrames i
la lletra: voleu que la lletra estigui més separada de les notes,
que l'acompanyament de piano estigui més separat de la línia vocal
i que els dos pentagrames de piano estiguin més junts entre sí.
Començarem amb la lletra.

La lletra es troba a l'interior d'un sistema, i per tant les
ordres per aplicar-li l'espaiat estaran en
@ruser{Espaiat vertical flexible dins dels sistemes}.
Aquí es diu que el text són línies del tipus @qq{no-pauta} i per
tant l'ordre per canviar el seu espaiat farà referència a la propietat
@code{nonstaff}.  Per separar-les del pentagrama al que pertanyen
(la pauta superior) usarem la propietat @code{relatedstaff}.  Per
separar-les de la línia inferior usarem la propietat
@code{unrelatedstaff}.  Les parts vocals pertanyen a un grup
vertical @code{unrelatedstaff}.  Les parts vocals pertanyen a un
grup vertical @code{VerticalAxisGroup}, per la qual cosa hem
d'ajustar les seves propietats.  Provem-lo i vejam si funciona.

@lilypond[quote,fragment,ragged-right,verbatim]
<<
  \new ChoirStaff
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #5
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #5
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>
@end lilypond

Bé: sí, funciona, però potser massa bé.  Quan establim el
@code{padding} (farciment) a 5, el LilyPond afegeix 5 espais de
pentagrama a l'espai entre els objectes, cosa que és excessiva per
a nosaltres en aquest cas.  Usarem un valor de 2.

A continuació, desplaçarem la música de piano per separar-la de
les parts vocals.  La música vocal és una @code{Choirstaff} (un
context de sistema coral), i per tant hem d'augmentar l'espaiat
entre aquest grup de pentagrama i el sistema de piano que es troba
a sota.  Ho farem canviant la@code{basic-distance} (distància
bàsica) del @code{StaffGrouper} del @code{staffgroup-staff-spacing}.

@lilypond[quote,fragment,ragged-right,verbatim]
<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>
@end lilypond

Molt bé.  Ara sols ens queda l'últim requisit de fer que els
pentagrames de piano estiguin més junts.  Per aconseguir-lo, un
altre cop alterem les propietats del @code{StaffGrouper}, però
aquest cop reduirem tant la @code{basic-distance} (distància
bàsica) com el @code{padding} (farciment).  Podem fer-lo com es
mostra a continuació.

@lilypond[quote,fragment,ragged-right,verbatim]
<<
  \new ChoirStaff \with {
    \override StaffGrouper.
      staffgroup-staff-spacing.basic-distance = #15
  }
  <<
    \new Staff {
      \new Voice = "music" {
        b'2 c' c' c'
      }
    }
    \new Lyrics \with {
      \override VerticalAxisGroup.
        nonstaff-relatedstaff-spacing.padding = #2
      \override VerticalAxisGroup.
        nonstaff-unrelatedstaff-spacing.padding = #2
    }
    \lyricsto "music" {
      Here are some lyrics
    }
    \new Staff {
      \clef bass e'2 f e c
    }
  >>
  \new PianoStaff \with {
    \override StaffGrouper.staff-staff-spacing = #'(
                            (basic-distance . 0)
                            (padding . 0))
  }
  <<
    \new Staff {
      g''2 c'' c'' a''
    }
    \new Staff {
      \clef bass e2 f c e
    }
  >>
>>
@end lilypond

Amb això els hem col·locat molt junts entre sí (però és el que
l'editor volia).  Es podrien haver separat més alterant el
farciment, @code{padding}, o la distància bàsica,
@code{basic-distance}, si volguéssim.

Hi ha moltes formes d'alterar l'espaiat vertical.  Un punt clau
que hem de recordar és que l'espaiat entre objectes dins d'un
@code{StaffGroup} (com els grups @code{GrandStaff} o
@code{PianoStaff}) es controla amb les variables d'espaiat del
@code{StaffGrouper}. L'espaiat dels pentagrames no agrupats (com
@code{Lyrics} i @code{Staff}) es controla amb les variables
del @code{VerticalAxisGroup}.  Per veure més detalls, consulteu
@ruser{Variables flexibles d'espaiat vertical de paper} i
@ruser{Espaiat vertical flexible dins dels sistemes}.


@node Col·lisions d'objectes
@section Col·lisions d'objectes
@translationof Col·lisions of objects

@menu
* Moviment d'objectes::
* Ajustament de la notació amb superposicions::
* Exemple real de música::
@end menu

@node Moviment d'objectes
@subsection Moviment d'objectes
@translationof Moving objects

@cindex moviment d'objectes superposats
@cindex moviments d'objectes superposats
@cindex moviments de grobs que col·lisionen
@cindex objectes que col·lisionen, moure
@cindex grobs que col·lisionen, moure

Tot i que us pugui sorprendre, el LilyPond no és perfecte.  Certs
elements de notació es poden superposar, cosa que és una llàstima,
però en realitat és força poc freqüent.  Normalment la necessitat
de moure objectes és fa per claredat o per raons estètiques:
l'aspecte és millor amb una mica més o una mica menys d'espai de
separació.

Hi ha tres enfocaments principals que porten a la resolució de
superposicions en la notació.  S'han de considerar a l'ordre següent:

@enumerate
@item
La @strong{direcció} d'un dels objectes que se superposen es pot
canviar usant les ordres predefinides que es relacionen a dalt per
als objectes dins-del-pentagrama (vegeu
@ref{Objectes interiors al pentagrama}).  Es poden recol·locar
fàcilment les pliques, lligadures d'expressió i d'unió, barres de
corxera, indicacions dinàmiques, text i grups de valoració
especial d'aquesta forma.  La limitació és que sols teniu la
possibilitat d'escollir entre dues posicions, i podria ser que cap
d'elles sigui l'adequada.

@item
Les @strong{propietats de l'objecte}, que el LilyPond fa servir
quan està col·locant els objectes de presentació, es poden
modificar usant l'ordre de sobreescriptura @code{\override}.  Els
avantatges de fer canvis a aquest tipus de propietat són: a) que
algun altre objecte es mourà automàticament si és necessari, per
deixar-li lloc, i b) una única sobreescriptura es pot aplicar a
totes les instàncies del mateix tipus d'objecte.  Entre aquestes
propietats es troben:

@itemize

@item
@code{direction} (direcció)

Ja s'ha estudiat amb cert detall: vegeu @ref{Objectes interiors al pentagrama}.

@item
@code{padding} (farciment),
@code{right-padding} (farciment per la dreta),
@code{staff-padding} (farciment de pentagrama)

@cindex farciment
@cindex padding, propietat
@cindex right-padding, propietat
@cindex staff-padding, propietat

Segons quin objecte s'està col·locant, el valor de la seva
propietat de farciment @code{padding} especifica l'espai intermedi
que s'ha de deixar entre l'objecte i el límit més pròxim de
l'objecte contra el qual s'esta col·locant.  Observeu que
és el valor de @code{padding} de l'objecte @strong{que s'està
col·locant} el que s'ignora.  Els espais intermedis especificats
mitjançant @code{padding} es poden aplicar a tots els objectes que
contemplen la interfície @code{side-position-interface}.

En comptes de fer-lo amb @code{padding}, la col·locació dels grups
d'alteracions es controla amb @code{right-padding}.  Aquest
propietat es troba a l'objecte @code{AccidentalPlacement} que,
observeu, viu dins el context de @strong{Staff}.  Durant el procés
tipogràfic, els caps de les notes es componen tipogràficament en
primer lloc, i després les alteracions, si hi ha, s'afegeixen a
l'esquerre dels caps utilitzant la propietat de farciment per la
dreta @code{right-padding} per determinar la separació entre
l'alteració i el cap, i de les alteracions entre sí.  Així doncs,
sols la propietat de farciment per la dreta @code{right-padding}
de l'objecte @code{AccidentalPlacement} té efecte sobre les
col·locacions de les alteracions.

La propietat @code{staff-padding} està estretament relacionada amb
la propietat @code{padding}: @code{padding} controla la separació
mínima entre qualsevol objecte que contempli la interfície
@code{side-position-interface} i l'objecte més proper (generalment
la nota o les línies del pentagrama); @code{staff-padding}
s'aplica sols als objecte que sempre se situen fora del
pentagrama: controla la separació mínima entre aquest objecte i el
pentagrama.  Observeu que @code{staff-padding} no té cap efecte
sobre objectes que se posicionen respecte a la nota en comptes de
fer-lo respecte al pentagrama, fins i tot malgrat pot ser
sobreescrit sense error per aquests objectes: simplement s'ignora.

Per descobrir quina propietat de farciment cal per a l'objecte que
es vol recol·locar, heu de tornar al manual de RFI i buscar les
propietats de l'objecte.  Aneu amb cura perquè les propietats de
farciment podrien no estar a l'objecte més obvi, així que busqueu
als objectes que puguin tenir alguna relació amb ell.

Tots els valors de farciment es mesuren en espais del pentagrama.
Per a la major part dels objectes el valor s'estableix de forma
predeterminada en aproximadament 1.0 o menys (varia amb cada
objecte).  Es pot sobreescriure si cal una separació intermèdia
més gran (o més petita).

@item
@code{self-alignment-X} (Auto-alineament a l'eix X)

@cindex self-alignment-X, propietat

Aquesta propietat es pot usar per alinear l'objecte a l'esquerra,
a l adreta, o centrar-lo amb respecte al punt de referència de
l'objecte «pare».  Es pot usar amb tot els objectes que respecten
la interfície @code{self-alignment-interface}.  En general són
objectes que contenen text.  Els valors són @code{LEFT},
@code{RIGHT} o @code{CENTER}.  De forma alternativa es pot
especificar un valor numèric entre @w{@code{-1}} i @code{+1}, no
@w{@code{-1}} s'alinea per l'esquerra, @code{+1} s'alinea per la
dreta, i els números intermedis mouen el text progressivament des
d'alineat per l'esquerra fins a alineat per la dreta.  Es poden
especificar valors numèrics majors de  @code{1} per moure el text
fins i tot més lluny cap a l'esquerra, o menys de
@w{@code{-1}} per allunyar-lo més cap a la dreta.  Un canvi a
@code{1} en el valor correspon a un moviment de la meitat de la
longitud total del propi text.

@item
@code{extra-spacing-width} (amplitud de separació addicional)

@cindex extra-spacing-width, propietat

Aquesta propietat està disponible per a tots els objectes que
respecten la interfície @code{item-interface}.  Agafa dos
números, el primer se suma al límit esquerre i el segon se suma al
limit dret.  Els números negatius desplacen el límit a l'esquerre
i els positius a la dreta, per la qual cosa per eixamplar un
objecte el primer número ha de ser negatiu i el segon positiu.
Observeu que no tots els objectes ostenten els dos números.  Per
exemple, l'objecte @code{Accidental} (alteració) sols té en compte
el primer número (la vora esquerra).

@item
@code{staff-position} (posició de pentagrama)

@cindex staff-position, propietat

@code{staff-position} és una propietat de la interfície
@code{staff-symbol-referencer-interface}, que respecten els
objectes que es col·loquen amb relació al pentagrama.  Especifica
la posició vertical de l'objecte amb relació a la tercera línia
del pentagrama en mitjos espais de pentagrama.  És útil a la
resolució de col·lisions entre objectes de presentació com
silencis multi-compàs, lligadures d'unió i notes a veus
diferents.

@item
@code{horizontal-shift}

@cindex horizontal-shift, propietat
@cindex nota, columna de
@cindex nota, col·lisions
@cindex col·lisions de notes
@cindex desplaçament, ordres de
@funindex \shiftOff
@funindex \shiftOn
@funindex \shiftOnn
@funindex \shiftOnnn

Dins d'una veu, totes les notes que es produeixen al mateix moment
s'agrupen a una columna de notes, i es crea un objecte
@code{NoteColumn} per controlar el posicionament horitzontal
d'aquest grup de notes (vegeu @qq{Columnes de nota} a @ref{Veus
explícites}).  Si @emph{i sols si} dos o més columnes de nota dins
d'un sol context de pauta, les dues amb pliques en la mateixa
direcció, apareixen al mateix moment musical, els valors de les
seves propietats @code{horizontal-shift} s'usen per assignar-los
una puntuació i les columnes amb puntuacions més altes es
desplacen progressivament per evitar les col·lisions entre els
caps de les notes.  Aquesta propietat s'estableix amb les ordres
@code{\voiceXXX} i es poden sobreescriure directament amb una
ordre @code{\override} o, de forma més comuna amb les ordres
@code{\shiftOn}.  Observeu que aquesta propietat s'usa per
@emph{qualificar} les columnes de nota o per aplicar
desplaçaments: no especifica la magnitud del desplaçament, que es
va incrementant progressivament en passos basant-se en l'amplitud
dels caps de nota per a cada puntuació.  Els passos són
normalment de la meitat de l'amplitud d'un cap de nota, però pot
ser l'amplitud completa del cap d'una nota quan està implicat un
grup de notes molt atapeït.

@item
@code{force-hshift} (forçar desplaçament horitzontal)

@cindex force-hshift, propietat

La propietat @code{force-hshift} és una propietat d'una
@code{NoteColumn} (realment ho és de la interfície
@code{note-column-interface}).  Modificar-lo permet moure una
columna de notes en situacions on les columnes de notes se
superposen.  Observeu que no té efecte sobre les columnes de nota
que no se superposen.  S'especifica en unitats adequades a una
columna de notes, per exemple l'amplitud del cap de la nota de la
primera veu.  S'ha d'usar en situacions complexes on les ordres
@code{\shiftOn} normals (véase @ref{Veus explícites}) no resolen
el conflicte entre les notes de forma satisfactòria.  És
preferible a la propietat @code{extra-offset} per a aquest
propòsit, perquè no cal esbrinar la distància en espais de
pentagrama, i moure les notes dins o fora d'una @code{NoteColumn}
afecta a d'altres accions, com ara a la fusió entre caps de nota.

@end itemize

@item
Finalment, quant tota la resta falla, els objectes es poden
tornar a posicionar manualment amb relació a la tercera línia del
pentagrama verticalment, o desplaçant-los una certa distància a
una nova posició.  Els desavantatges són que els valors correctes
per al nou posicionament s'han d'esbrinar, sovint per prova i
error, per a cada objecte individual i, atès que el moviment es fa
després que el LilyPond ha col·locat tota la resta d'objectes,
l'usuari és responsable d'evitar cap col·lisió que pogués
produir-se.  Però la dificultat principal podria haver de tornar a
calcular la posició si la música es modifica més tard.  Les
propietats que es poden suar per a aquest tipus de posicionament
manual són:

@table @code
@item extra-offset (desplaçament addicional)

@cindex extra-offset, propietat

Aquesta propietat s'aplica a qualsevol objecte de presentació que
respecti el @code{grob-interface}.  Agafa una parella de números
que especifiquen el desplaçament addicional a les direccions
horitzontal i vertical.  Els nombres negatius mouen l'objecte a
l'esquerra o cap avall.  Les unitats són espais de pentagrama.  El
desplaçament addicional es fa després que la composició
tipogràfica dels objectes ha acabat, així que un objecte pot ser
tornat a posicionar a qualsevol lloc sense afectar cap altra cosa.

@item positions (posicions)

@cindex positions, propietat

Aquesta propietat és de la major utilitat per ajustar manualment
la inclinació i l'alçada de les barres de corxera, lligadures
d'expressió i claus de grups de valoració especial.  Agafa
una parella de números que donen la posició dels extrems esquerre
i dret de la barra, lligadura, etc. amb relació a la tercera línia
del pentagrama.  Les unitats són espais de pentagrama.  Observeu,
però, que les lligadures d'expressió i de fraseig no es poden
tornar a posicionar en quantitats arbitràriament grans.  El
LilyPond en primer lloc genera una llista de posicions possibles
per a la lligadura i de forma predeterminada troba la lligadura
que té @qq{millor aspecte}.  Si la propietat @code{positions} s'ha
sobreescrit, la lligadura que està més a prop de les posicions que
s'han sol·licitat se selecciona de la llista.
@end table

@end enumerate

Un objecte en particular podria no tenir totes aquestes
propietats.  Cal anar al manual RFI per buscar quines propietats
estan disponibles per a l'objecte en qüestió.

Aquí presentem una llista dels objectes que és més probable que
estiguin implicats en col·lisions, amb el nom de l'objecte que
s'hauria de buscar al RFI per descobrir quines propietats s'han
d'usar per a moure'ls.

@multitable @columnfractions .5 .5
@headitem Tipus d'objecte       @tab Nom de l'objecte
@item Articulacions             @tab @code{Script}
@item Barres                    @tab @code{Beam}
@item Dinàmica (verticalment)  @tab @code{DynamicLineSpanner}
@item Dinàmica (horitzontalment)   @tab @code{DynamicText}
@item Digitacions                @tab @code{Fingering}
@item Marques d'assaig i textuals  @tab @code{RehearsalMark}
@item Lligadures de expressió    @tab @code{Slur}
@item Text, per exemple @code{^"text"}  @tab @code{TextScript}
@item Lligadures d'unió        @tab @code{Tie}
@item Grups de valoració especial @tab @code{TupletBracket}
@end multitable


@node Ajustament de la notació amb superposicions
@subsection Ajustament de la notació amb superposicions
@translationof Fixing overlapping notation

Vejam ara com poden ser d'ajuda les propietats que hem vist a la
secció anterior, per resoldre problemes de notació que se superposa.

@menu
* La propietat padding (farciment)::
* La propietat right-padding (farciment per la dreta)::
* La propietat staff-padding (farciment de pentagrama)::
* La propietat self-alignment-X (auto-alineació en X)::
* La propietat staff-position (posició al pentagrama)::
* La propietat extra-offset (desplaçament addicional)::
* La propietat positions (posicions)::
* La propietat force-hshift (forçar desplaçament horitzontal)::
@end menu

@node La propietat padding (farciment)
@unnumberedsubsubsec La propietat @code{padding} (farciment))
@translationof The padding property

@cindex farciment
@cindex ajustar notació que se superposa
@cindex superposada, notació

La propietat @code{padding} es pot ajustar per augmentar (o
disminuir) la distància entre símbols impresos a sobre o a sota de
les notes

@cindex Script, exemple de sobreescriptura
@cindex padding, propietat, exemple

@lilypond[quote,fragment,verbatim]
c'2\fermata
\override Script.padding = #3
b2\fermata
@end lilypond

@cindex MetronomeMark, exemple de sobreescriptura
@cindex padding, propietat, exemple

@lilypond[quote,fragment,verbatim]
% Això no funcionarà, mireu a sota
\override MetronomeMark.padding = #3
\tempo 4 = 120
c'1 |
% Això funciona
\override Score.MetronomeMark.padding = #3
\tempo 4 = 80
d'1 |
@end lilypond

Observeu al segon exemple la gran importància que té saber quin
context respecta un determinat objecte.  Atès que l'objecte
@code{MetronomeMark} respecta el context @code{Score}, els canvis
de propietats al context @code{Voice} passaran inadvertits. Per
veure més detalls consulteu
@ruser{Modificació de les propietats}.

Si la propietat de farciment @code{padding} d'un objecte
s'incrementa quan aquest objecte es troba a una pila d'objectes
que s'estan col·locant d'acord a la seva prioritat
@code{outside-staff-priority}, llavors aquest objecte es mourà, i
també tots els que estan per fora d'ell.

@node La propietat right-padding (farciment per la dreta)
@unnumberedsubsubsec La propietat @code{right-padding} (farciment per la dreta)
@translationof The right-padding property

@cindex right-padding, propietat

La propietat @code{right-padding} afecta l'espaiat entre la
alteració i la nota a la qual s'aplica.  Normalment no és
necessària, però l'espaiat predeterminat pot estar malament per
certes glifs d'alteracions o combinacions de glifs que s'usen a la
música microtonal.  Aquests glifs han d'introduir-se
sobreescrivint el segell de l'alteració amb un element de marcatge
que contingui els símbols desitjats, així:

@cindex Accidental, exemple de sobreescriptura
@cindex text, propietat, exemple
@cindex stencil, propietat, exemple
@cindex AccidentalPlacement, exemple de sobreescriptura
@cindex right-padding, propietat, exemple


@lilypond[quote,ragged-right,verbatim]
sesquisharp = \markup { \sesquisharp }
\relative {
  c''4
  % Això imprimeix un sesquisostingut però l'espaiat és massa petit
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4 c
  % Això millora l'espaiat
  \once \override Score.AccidentalPlacement.right-padding = #0.6
  \once \override Accidental.stencil = #ly:text-interface::print
  \once \override Accidental.text = #sesquisharp
  cis4 |
}
@end lilypond

@noindent
Aixo utilitza necessàriament una sobreescriptura per al segell de
l'alteració que s'estudiarà fin més endavant.  El tipus de segell
ha de ser un procediment, aquí modificat perquè imprimeixi el
contingut de la propietat @code{text} de l'objecte
@code{Accidental}, que al seu cop està establert com un signe de
sesquisostingut.  Aleshores el signe es pot separar de la cap de
la nota sobreescrivint @code{right-padding}.

@noindent

@node La propietat staff-padding (farciment de pentagrama)
@unnumberedsubsubsec La propietat @code{staff-padding} (farciment de pentagrama)
@translationof The staff-padding property

@cindex alineació d'objectes sobre la línia base
@cindex objectes, alineació sobre la línia base

@code{staff-padding} es pot usar per alinear objectes com matisos
dinàmics al llarg d'una línia de base a una distància fixa del
pentagrama, sempre que no existeixi cap altre element de notació
que forci una distància major al pentagrama.  No és una propietat
de @code{DynamicText} sinó de @code{DynamicLineSpanner}.
Això és així perquè la línia de base s'ha d'aplicar per igual a
@strong{totes} las dinàmiques, entre elles las que s'han creat
com objectes de extensió.  Així que aquesta és la forma d'alinear
les indicacions de matís a l'exemple de la secció anterior:

@cindex DynamicText, exemple de sobreescriptura
@cindex extra-spacing-width, propietat, exemple
@cindex DynamicLineSpanner, exemple de sobreescriptura
@cindex staff-padding, propietat, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
\override DynamicLineSpanner.staff-padding = #3
\relative { a'4\f b\mf a\p b\mp }
@end lilypond


@node La propietat self-alignment-X (auto-alineació en X)
@unnumberedsubsubsec La propietat @code{self-alignment-X} (auto-alineació en X)
@translationof The self-alignment-X property

L'exemple següent mostra com ajustar la posició d'un objecte de
digitació de corda en relació a la plica d'una nota mitjançant
l'alineament del límit dret amb el punt de referència de la nota
«pare»:

@cindex StringNumber, exemple de sobreescriptura
@cindex self-alignment-X, propietat, exemple

@lilypond[quote,fragment,ragged-right,verbatim]
\voiceOne
<a''\2>
\once \override StringNumber.self-alignment-X = #RIGHT
<a''\2>
@end lilypond

@node La propietat staff-position (posició al pentagrama)
@unnumberedsubsubsec La propietat @code{staff-position} (posició al pentagrama)
@translationof The staff-position property

@cindex objecte, col·lisió dins del pentagrama

Els silencis multi-compàs en una veu poden xocar amb les notes a
una altra veu.  Atès que aquests silencis es graven centrats entre
les barres de compàs, es necessitaria força esforç perquè el
LilyPond esbrinés quines altres notes podrien xocar amb ell, ja
que actualment tota la gestió de col·lisions entre notes i
silencis es fa sols per a notes i silencis que ocorren al mateix
temps.  Vet aquí un exemple de col·lisió d'aquest tipus:

@lilypond[quote,verbatim,ragged-right]
<< \relative { c'4 c c c } \\ { R1 } >>
@end lilypond

La millor solució aquí és moure el silenci multi-compàs cap avall,
ja que el silencia està a la veu dos.  L'ajust predeterminat per a
@code{\voiceTwo} (és a dir, a la segona veu d'una construcció
@code{<<@{@dots{}@} \\ @{@dots{}@}>>}) és que
@code{staff-position} tingui el valor -4 per MultiMeasureRest,
així que l'hem de baixar, diguem-ne, quatre semiespais de
pentagrama, al valor @w{@code{-8}}.

@cindex MultiMeasureRest, exemple de sobreescriptura
@cindex staff-position, propietat, exemple

@lilypond[quote,verbatim,ragged-right]
<<
  \relative { c'4 c c c }
  \\
  \override MultiMeasureRest.staff-position = #-8
  { R1 }
>>
@end lilypond

Això és millor que utilitzar, per exemple, @code{extra-offset},
perquè la línia addicional per sobre del silenci s'insereix
automàticament.

@node La propietat extra-offset (desplaçament addicional)
@unnumberedsubsubsec La propietat @code{extra-offset} (desplaçament addicional)
@translationof The extra-offset property

@cindex posicionar objectes
@cindex posicionar grobs
@cindex objectes, posicionar
@cindex grobs, posicionar

La propietat @code{extra-offset} dóna un complet control sobre el
posicionament d'un objecte tan vertical com horitzontalment.

A l'exemple següent, la segona digitació es desplaça lleugerament
a l'esquerra, i 1.8 espais de pentagrama cap avall:

@cindex fingering (digitació), exemple de sobreescriptura
@cindex extra-offset, propietat, exemple

@lilypond[quote,fragment,verbatim]
f'4-5
\once \override Fingering.extra-offset = #'(-0.3 . -1.8)
f'4-5
@end lilypond


@node La propietat positions (posicions)
@unnumberedsubsubsec La propietat @code{positions} (posicions)
@translationof The positions property

@cindex controlar manualment grups especials, lligadures i barres
@cindex manual, control, de grups especials, lligadures i barres
@cindex grups especials, barres de, control manual
@cindex lligadures d'expressió, control manual
@cindex lligadures de fraseig, control manual
@cindex barres de corxera, control manual

La propietat @code{positions} permet controlar manualment la
posició vertical i des d'aquí també la inclinació dels tresets,
lligadures d'expressió i de fraseig, i barres de corxera.

Vet aquí un exemple en el qual les lligadures de fraseig i
d'expressió xoquen entre sí:

@lilypond[quote,verbatim,ragged-right]
\relative { a'8 \( ( a'16 ) a \) }
@end lilypond

@cindex PhrasingSlur, exemple de sobreescriptura
@cindex positions, propietat, exemple

@noindent
Una possibilitat seria moure els dos extrems de la lligadura de
fraseig cap a dalt.  Podem intentar establir l'extrem esquerre a
2.5 espais de pentagrama per sobre de la tercera línia i l'extrem
dret a 4.5 també cap amunt, i el LilyPond seleccionaria la
lligadura de fraseig d'entre les candidates que ha trobat amb els
seus extrems més propers a ells:

@lilypond[quote,verbatim,fragment,ragged-right]
\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
a'8 \( ( a''16 ) a'' \)
@end lilypond

Això suposa una millora, però, perquè no baixar una mica l'extrem
dret de la lligadura d'expressió?  Si ho provem, veurem que no es
pot fer així.  Això és a causa que no existeixen lligadures
d'expressió candidates que estiguin més baixes que la que ja s'ha
seleccionat, i en aquest cas la propietat @code{positions} no té
cap efecte.  Malgrat això, les lligadures d'unió, expressió i
fraseig @emph{es poden} col·locar i ajustar de manera molt exacta
quan cal. Per aprendre la manera de fer-lo, consulteu
@ruser{Modificació de lligadures d'unió i d'expressió}.

Presentem un altre exemple.  Veiem que la barra xoca amb les lligadures:

@lilypond[quote,verbatim,ragged-right]
{
  \time 4/2
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
    }
  >>
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
    }
  >>
}
@end lilypond

@noindent
Això es pot resoldre manualment elevant els dos extrems de la
barra des de la seva posició a 1.81 espais de pentagrama sota la
línia central fins, diguem-ne, 1 espai:


@cindex Beam, exemple de sobreescriptura
@cindex positions, propietat, exemple

@lilypond[quote,verbatim,ragged-right]
{
  \time 4/2
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      \override Beam.positions = #'(-1 . -1)
      e''8 e e e
      e e e e
      f2 g
    }
  >>
  <<
    \relative { c'1~ 2. e8 f }
    \\
    \relative {
      e''8 e e e
      e e e e
      f2 g
      \revert Beam.positions
    }
  >>
}
@end lilypond

@noindent
Observeu que la sobreescriptura segueix aplicant-se a la segona
veu del segon compàs de corxeres, però no a cap de les barres de
la primera veu, ni tan sols a les que estan al segon compàs, que
és posterior.  Tan aviat com la sobreescriptura no pugui tenir cap
efecte, hauria de ser revertida com es mostra.

@node La propietat force-hshift (forçar desplaçament horitzontal)
@unnumberedsubsubsec La propietat @code{force-hshift} (forçar desplaçament horitzontal)
@translationof The force-hshift property

Ara podem veure com aplicar les correccions finals a l'exemple de
Chopin que vam present al final de @ref{Sento veus}, que deixem
amb aquest aspecte:

@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { <ees, c>2 des }
    \\
    \\
    { aes'2 f4 fes }
  >> |
  <c ees aes c>1 |
}
@end lilypond

@noindent
És necessari que la nota interior del primer acord (el La bemoll
de la quarta veu) no s'aparti de la columna vertical de la nota
aguda, per la qual cosa usem @code{\shiftOff}.

En el segon acord preferim que el Fa estigui alineat amb el La
bemoll i que la nota greu es col·loqui lleugerament a la dreta per
evitar una col·lisió de les pliques.  Ho aconseguim ajustant el
valor de @code{force-hshift} a la @code{NoteColumn} del Re bemoll
greu per moure'l a la dreta mig espai de pentagrama, i fixant
@code{force-hshift} per al Fa al valor zero.  Observeu que usem
@code{\once} per evitar que els ajustament es propaguin més enllà
del moment musical immediat, tot i que a aquest petit exemple es
podria ometre el @code{\once} y el segon @code{\override} de la
quarta veu.  Això no suposaria una bona pràctica.

Presentem a continuació el resultat final:

@cindex NoteColumn, exemple de sobreescriptura
@cindex force-hshift, propietat, exemple

@lilypond[quote,verbatim,fragment,ragged-right]
\new Staff \relative {
  \key aes \major
  <<
    { c''2 aes4. bes8 }
    \\
    { <ees, c>2 \once \override NoteColumn.force-hshift = 0.5 des }
    \\
    \\
    { \once \shiftOff aes'2 \once \shiftOff f4 fes }
  >> |
  <c ees aes c>1 |
}
@end lilypond


@node Exemple real de música
@subsection Exemple real de música
@translationof Real music example

Finalitzarem aquesta secció sobre els ajustaments mostrant els
passos que s'han de prendre per tractar amb un exemple complicat
al que li calen diversos ajustaments per produir el resultat
desitjat.  L'exemple s'ha escollit deliberadament per il·lustrar
l'ús de la Referència de la Notació per resoldre problemes de
notació poc comuns.  No és representatiu del procés de gravat més
usual, per la qual cosa, us recomanem que no deixeu que aquestes
dificultats us desanimin! Afortunadament, les dificultats com
aquestes no són massa comunes!

L'exemple està extret de la Primera Balada de Chopin, Op. 23,
compassos 6 al 9, la transició entre el Lent inicial i el
Moderato.  Presentem en primer lloc l'aspecte que volem que tingui
el resultat, però per evitar complicar massa l'exemple hem tret
les indicacions dinàmiques, les digitacions i el pedal.

@c The following should appear as music without code
@c This example should not be indexed
@c line-width ensures no break
@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    bes2.\tempo "Moderato" r8
    <<
      { c,8 d fis bes a }
      \new Voice {
        \voiceTwo
        c,8~
        % Reposition the c2 to the right of the merged note
        \once \override NoteColumn.force-hshift = #1.0
        % Move the c2 out of the main note column
        % so the merge will work
        \shiftOnn
        c2
      }
      \new Voice {
        \voiceThree
        s8
        % Stem on the d2 must be down to permit merging
        \stemDown
        % Stem on the d2 should be invisible
        \tweak Stem.transparent ##t
        d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

Observem en primer lloc que la part de la ma dreta del tercer
compàs requereix quatre veus.  Són les cinc corxeres unides per
una barra, la nota Do lligada, el Re blanca que es fusiona amb el
Re corxera, i el Fa sostingut negra amb puntet, que també està
fusionada amb la corxera de la seva mateixa alçada.  Tota la resta
està en una sola veu, així que el més fàcil és introduir aquestes
tres veus addicionals, en el moment que facin falta i de forma
temporal.  Si us heu oblidat de com fer-ho, llegiu les seccions
@ref{Sento veus} i @ref{Veus explícites}.  Aquí prenem la decisió
d'utilitzar veus instanciades explícitament per al passatge
polifònic, atès que el LilyPond és més probable que pugui evitar
les col·lisions si totes les veus s'instancien explícitament
d'aquesta manera.

Començarem introduint les notes com dues variables i disposant
l'estructura de pentagrames a un bloc Score, i veurem què produeix
el LilyPond de forma predeterminada:

@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4. g8 |
    bes1~ |
    \time 6/4
    bes2. r8
    % Inicia la secció polifònica de quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2 |
  <d g, d>1 |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

Totes les notes són correctes, però l'aspecte està lluny de ser
satisfactori.  La lligadura d'unió xoca amb el canvi de compàs,
certes notes no es fusionen correctament, i falten alguns elements
de notació.  En primer lloc tractarem amb el més senzill.  Podem
afegir fàcilment la lligadura d'expressió de la mà esquerra i la
lligadura de fraseig de la ma dreta, atès que tot això es va
estudiar al Tutorial.  En fer-ho així obtenim:

@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    bes1~ |
    \time 6/4
    bes2. r8
    % Inicia la secció polifònica de quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.\)  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1) |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

El primer compàs ara és correcte.  El segon compàs conté un
arpegi i acaba amb una barra doble.  Com es fan, ja que no han
estat mencionats en aquest Manual d'Aprenentatge?  Aquí és on hem
de tornar a la Referència de Notació.  Buscant la paraula
@q{arpegi} i @q{línia divisòria} a l'índex ens mostra ràpidament
que un arpegi es fa afegint @code{\arpeggio} a un acord, i la
doble barra es produeix per mitjà de la instrucció
@code{\bar "||"}.  Això ho podem fer fàcilment.  A continuació hem
de corregir la col·lisió entre la lligadura d'unió i la indicació
de compàs.  Això es fa millor movent la lligadura cap amunt.  Vam
estudiar com moure objectes anteriorment a @ref{Moviment d'objectes},
on diu que els objectes estan situats de forma relativa al
pentagrama es poden moure verticalment sobreescrivint la seva
propietat @code{staff-position}, que s'especifica en unitats de
mig espai de pentagrama respecte de la línia central del
pentagrama.  Així doncs, la sobreescriptura següent col·locada
just abans de la primera nota lligada pujarà la lligadura 3.5 mig
espais de pentagrama per sobre de la línia central:

@code{\once \override Tie.staff-position = #3.5}

Amb això és completa el compàs dos, donant com a resultat:

@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2. r8
    % Inicia la secció polifònica amb quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    g2.\)  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

Anem ara al tercer compàs i començament de la secció Moderato. El
tutorial ens va ensenyar com escriure una indicació de tempo
mitjançant l'ordre @code{\tempo}, por lo qual cosa afegir
@qq{Moderato} és fàcil. Pero ara, com fusionem notes estan a
diferents veus?  Aquí és on hem de tornar a buscar ajuda al manual
de Referència de la notació.  En cuscar la paraula @qq{merge}
(fusiona) a l'índex de la Referència de la notació arribem
ràpidament a les ordres per barrejar notes amb diferent cap i amb
o sense puntet, a
@ruser{Resolució de les col·lisions}.
Al nostre exemple hem de fusionar ambdós tipus de notes al
transcurs de la secció polifònica del compàs 3; per tant, gràcies
a la informació que apareix a la Referència de la Notació, escrivim

@example
\mergeDifferentlyHeadedOn
\mergeDifferentlyDottedOn
@end example

@noindent
al principi de la secció, i

@example
\mergeDifferentlyHeadedOff
\mergeDifferentlyDottedOff
@end example

@noindent
al final, obtenint com a resultat:

@c line-width ensures no break
@lilypond[quote,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.\tempo "Moderato" r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Inicia la secció polifònica de quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        c,8~ 2
      }
      \new Voice {
        \voiceThree
        s8 d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

Aquestes sobreescriptures han fusionat els dos Fa sostingut, però
no els dos Re.  Perquè no?  La resposta està a la mateixa secció
de la Referència de la Notació: les notes que es fusionen han de
tenir les pliques en direccions oposades i dues notes no es poden
fusionar bé si hi ha una tercera nota a la mateixa columna.  Aquí
els dos Re tenen les pliques cap amunt i hi ha una tercera nota:
el Do.  Sabem com canviar la direcció de la plica usant
@code{\stemDown}, i la Referència de la notació també explica com
moure el Do: aplicar un desplaçament usant una de les ordres
@code{\shift}.  Però, quin?  El Do està a la veu dos que té
desactivat el desplaçament, i els dos Re estan a les veus u i
tres, que tenen el desplaçament desactivat i activat,
respectivament.  Per això hem de desplaçar el Do un nivell més
encara, usant @code{\shiftOnn} per evitar que interfereixi amb els
dos Re.  En aplicar aquests canvis obtenim:

@cindex Tie, exemple de sobreescriptura
@cindex staff-position, propietat, exemple

@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.\tempo "Moderato" r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Inicia la secció polifònica de quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        % Mou el c2 fora de la columna de la nota principal
        % perquè la fusió funcioni
        c,8~ \shiftOnn c2
      }
      \new Voice {
        \voiceThree
        % La plica al d2 ha de ser cap avall per permetre la fusió
        s8 \stemDown d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond

Ja gairebé està.  Sols queden dos problemes: la plica cap avall
sobre el Re fusionat no hauria d'estar aquí, i el Do estaria
millor col·locat a la dreta dels Re.  Sabem com fer les dues coses
a partir d'ajustaments anteriors: fem la plica transparent, i
movem el Do amb la propietat @code{force-hshift}.  Aquí tenim el
resultat final:

@cindex NoteColumn, exemple de sobreescriptura
@cindex force-hshift, propietat, exemple
@cindex Stem, exemple de sobreescriptura
@cindex transparent, propietat, exemple

@c line-width ensures no break
@lilypond[quote,verbatim,ragged-right,line-width=6\in]
rhMusic = \relative {
  \new Voice {
    r2 c''4.\( g8 |
    \once \override Tie.staff-position = #3.5
    bes1~ |
    \bar "||"
    \time 6/4
    bes2.\tempo "Moderato" r8
    \mergeDifferentlyHeadedOn
    \mergeDifferentlyDottedOn
    % Inicia la secció polifònica de quatre veus
    <<
      { c,8 d fis bes a }  % continuació de la veu principal
      \new Voice {
        \voiceTwo
        c,8~
        % Torna a posicionar el C2 a la dreta de la nota fucionada
        \once \override NoteColumn.force-hshift = #1.0
        % Mou el c2 for de la columna de la nota principal
        % perquè funcioni la fusió
        \shiftOnn
        c2
      }
      \new Voice {
        \voiceThree
        s8
        % La plica sobre la d2 ha de ser cap avall per permetre la fusió
        \stemDown
        % La plica sobre la d2 ha de ser invisible
        \tweak Stem.transparent ##t
        d2
      }
      \new Voice {
        \voiceFour
        s4 fis4.
      }
    >> |
    \mergeDifferentlyHeadedOff
    \mergeDifferentlyDottedOff
    g2.\)  % continuació de la veu principal
  }
}

lhMusic = \relative {
  r2 <c' g ees>2( |
  <d g, d>1)\arpeggio |
  r2. d,,4 r4 r |
  r4
}

\score {
  \new PianoStaff <<
    \new Staff = "RH"  <<
      \key g \minor
      \rhMusic
    >>
    \new Staff = "LH" <<
      \key g \minor
      \clef "bass"
      \lhMusic
    >>
  >>
}
@end lilypond


@node Ajustaments addicionals
@section Ajustaments addicionals
@translationof Further tweaking

@menu
* Altres aplicacions dels ajustaments::
* Ús de variables per als ajustaments de disposició::
* Fulls d'estil::
* Altres fonts d'informació::
* Ajustaments avançats amb l'Scheme::
@end menu

@node Altres aplicacions dels ajustaments
@subsection Altres aplicacions dels ajustaments
@translationof Other uses for tweaks

@menu
* Unió de notes entre veus diferents::
* Simulació de un calderó al MIDI::
@end menu

@cindex eliminar objectes
@cindex objectes, eliminar

@node Unió de notes entre veus diferents
@unnumberedsubsubsec Unió de notes entre veus diferents
@translationof Tying notes across voices

@cindex lligar notes entre veus diferents

El següent exemple mostra com connectar notes que estan a
diferents veus utilitzant lligadures d'unió.  Normalment sols es
poden connectar mitjançant lligadures d'unió notes que estiguin a
la mateixa veu.  Usant dues veus, amb les notes lligades a una
d'elles:

@lilypond[quote]
<< { b'8~ 8\noBeam } \\ { b'8[ g'] } >>
@end lilypond

@noindent
i esborrant la primera barra (amb la seva plica) cap amunt a
aquesta veu, dóna la impressió que la lligadura es creua entres
les veus:

@funindex \omit
@cindex Stem, exemple de remoció
@cindex Flag, exemple de remoció
@cindex @code{\omit}, exemple
@cindex exemple de @code{\omit}

@lilypond[quote,verbatim]
<<
  {
    \once \omit Stem
    \once \omit Flag
    b'8~ 8\noBeam
  }
\\
  { b'8[ g'] }
>>
@end lilypond

@morerefs
Manual de aprenentatge:
@ref{El prefix once},
@ref{La propietat stencil (segell)}.


@node Simulació de un calderó al MIDI
@unnumberedsubsubsec Simulació de un calderó al MIDI
@translationof Simulating a fermata in MIDI

@cindex segell, ús de la propietat
@cindex fermata, realització a MIDI

Per als objectes fora-del-pentagrama, normalment és millor
sobreescriure la propietat @code{stencil} («segell») de l'objecte
que la seva propietat @code{transparent} quan vulgueu treure'ls de
la sortida impresa.  Mitjançant l'establiment de la propietat
@code{stencil} d'un objecte al valor @code{#f} podem treure
l'objecte per complet de la sortida impresa.  Això significa que
no té efecte sobre la col·locació d'altres objectes que poguessin
col·locar-se en relació a ell.

Per exemple, si volguéssim canviar la indicació metronòmica amb el
propòsit de simular un calderó a la sortida MIDI, segurament no
voldríem que la indicació metronòmica aparegués a la sortida
impresa, i no voldríem influir sobre la separació entre els dos
sistemes ni sobre la col·locació de les anotacions adjacents sobre
el pentagrama.  Per tant, establir la seva propietat
@code{stencil} al valor @code{#f} seria la millor manera.  Mostrem
aquí l'efecte dels dos mètodes:

@cindex MetronomeMark, exemple de sobreescriptura
@cindex transparent, propietat, exemple

@lilypond[quote,verbatim,ragged-right]
\score {
  \relative {
    % Visible tempo marking
    \tempo 4=120
    a'4 a a
    \once \hide Score.MetronomeMark
    % Tempo invisible que marca que s'allargui el fermata al MIDI
    \tempo 4=80
    a4\fermata |
    % Tempo nou per a la propera secció
    \tempo 4=100
    a4 a a a |
  }
  \layout { }
  \midi { }
}
@end lilypond

@cindex MetronomeMark, exemple de sobreescriptura
@cindex stencil, propietat, exemple

@lilypond[quote,verbatim,ragged-right]
\score {
  \relative {
    % Marcatge Visible del tempo
    \tempo 4=120
    a'4 a a
    \once \omit Score.MetronomeMark
    % Marcatge invisible del tempo per allargar el fermata al MIDI
    \tempo 4=80
    a4\fermata |
    % Tempo nou per a la propera secció
    \tempo 4=100
    a4 a a a |
  }
  \layout { }
  \midi { }
}
@end lilypond

@noindent
Els dos mètodes treuen de la sortida impresa la indicació
metronòmica que allarga el calderó, i els dos afecten al temps del
MIDI tal i com volíem, però la indicació metronòmica transparent
de la primera línia força una col·locació molt alta de la
indicació de tempo que segueix, mentre que la segona (amb el
segell suprimit) no ho fa.

@morerefs
Glossari musical:
@rglos{system}.

@node Ús de variables per als ajustaments de disposició
@subsection Ús de variables per als ajustaments de disposició
@translationof Using variables for layout adjustments

@cindex variables, usar per a sobreescriptures
@cindex sobreescriptures, usar variables per a
@cindex ajustaments, usar variables per a
@cindex ajustaments de disposició, usar variables per fer

Les ordres de sobreescriptura són sovint llargues i tedioses
d'escriure, i s'han d'escriure de forma absolutament correcta.  Si
les mateixes sobreescriptures s'han d'utilitzar molts cops, podria
valdre la pena definir variables per desar-les.

Suposem que volem realçar certes paraules de la lletra d'una cançó
imprimint-les en cursiva i negreta.  Les ordres  @code{\italic} i
@code{\bold} sols funcionen dins de la lletra de la cançó si estan
incloses, junt amb la paraula o paraules que es pretenen
modificar, dins d'un @code{\markup}, cosa que les fa tedioses
d'escriure.  La necessitat d'incloure les pròpies paraules
impedeix que es puguin usar a variables simples. Podríem, com a
alternativa, utilitzar les ordres @code{\override} y
@code{\revert}?

@example
\override Lyrics.LyricText.font-shape = #'italic
\override Lyrics.LyricText.font-series = #'bold

\revert Lyrics.LyricText.font-shape
\revert Lyrics.LyricText.font-series
@end example

Aquestes ordres també serien extremadament tedioses d'escriure si
hi haguessin moltes paraules que volguéssim subratllar.  Peró sí
@emph{podem} definir-les com dues variables i usar-les per
delimitar les paraules a destacar.  Un altre avantatge de la
utilització de variables per a aquestes sobreescriptures és que ja
no són necessaris els espais que rodegen el punt, atès que no
s'interpreten directament al mode @code{\lyricmode}.  Vet aquí un
exemple d'això, tot i que a la pràctica potser escolliríem uns
noms de variables més curts perquè fossin més ràpids de teclejar:

@cindex LyricText, exemple de sobreescriptura
@cindex font-shape, propietat, exemple
@cindex font-series, propietat, exemple

@lilypond[quote,verbatim]
emphasize = {
  \override Lyrics.LyricText.font-shape = #'italic
  \override Lyrics.LyricText.font-series = #'bold
}

normal = {
  \revert Lyrics.LyricText.font-shape
  \revert Lyrics.LyricText.font-series
}

global = { \key c \major \time 4/4 \partial 4 }

SopranoMusic = \relative { c'4 | e4. e8 g4 g    | a4   a   g  }
AltoMusic    = \relative { c'4 | c4. c8 e4 e    | f4   f   e  }
TenorMusic   = \relative  { e4 | g4. g8 c4.  b8 | a8 b c d e4 }
BassMusic    = \relative  { c4 | c4. c8 c4 c    | f8 g a b c4 }

VerseOne = \lyricmode {
  E -- | ter -- nal \emphasize Fa -- ther, | \normal strong to save,
}

VerseTwo = \lyricmode {
  O | \once \emphasize Christ, whose voice the | wa -- ters heard,
}

VerseThree = \lyricmode {
  O | \emphasize Ho -- ly Spi -- rit, | \normal who didst brood
}

VerseFour = \lyricmode {
  O | \emphasize Tri -- ni -- ty \normal of | love and pow'r
}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \clef "treble"
      \new Voice = "Soprano"  { \voiceOne \global \SopranoMusic }
      \new Voice = "Alto" { \voiceTwo \AltoMusic }
      \new Lyrics \lyricsto "Soprano" { \VerseOne }
      \new Lyrics \lyricsto "Soprano" { \VerseTwo }
      \new Lyrics \lyricsto "Soprano" { \VerseThree }
      \new Lyrics \lyricsto "Soprano" { \VerseFour }
    >>
    \new Staff <<
      \clef "bass"
      \new Voice = "Tenor" { \voiceOne \TenorMusic }
      \new Voice = "Baix"  { \voiceTwo \BassMusic }
    >>
  >>
}
@end lilypond


@node Fulls d'estil
@subsection Fulls d'estil
@translationof Style sheets

La sortida que produeix el LilyPond es pot modificar profundament;
consulteu @ref{Ajustament de la sortida} per llegir detalls sobre
aquest tema.  Però, que passa si teniu molts fitxers als quals
voleu aplicar els vostres propis ajustaments? O què passa si,
senzillament, voleu separar els ajustaments de la pròpia música?
Tot això és força fàcil d'aconseguir.

Vejam un exemple.  No us preocupeu si no enteneu les parts que
tenen tots els @code{#()}.  Això s'explicarà a
@ref{Ajustaments avançats amb l'Scheme}.

@lilypond[quote,verbatim,ragged-right]
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond

Fem alguna cosa respecte a les definicions @code{mpdolce} i
@code{inst}.  Aquestes definicions produeixen la sortida que
volem, però potser les voldríem utilitzar a una altra peça.
Podríem simplement copiar-les i enganxar-les al principi de cada
fitxer, però seria força molest.  També fa que es quedin les
definicions a la vista dins dels nostres fitxers de música, i jo
personalment trobo tots els @code{#()} molt pocs estètics.  Els
amagarem dins d'un altre fitxer:

@example
%%% desar això a un fitxer amb el nom «definicions.ily»
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})

inst =
#(define-music-function
     (string)
     (string?)
   #@{ <>^\markup \bold \box #string #@})
@end example

Farem referència a aquest fitxer utilitzant l'ordre
@code{\include} al principi del fitxer de música (l'extensió
@code{.ily} s'utilitza per distingir aquest fitxer d'inclusió
--que se suposa que no ha de ser processat de forma independent--
del fitxer principal).  Ara modificarem la música (desem aquest
fitxer com @file{musica.ly}).

@c  We have to do this awkward example/lilypond-non-verbatim
@c  because we can't do the \include stuff in the manual.

@example
\include "definicions.ily"

\relative @{
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinete"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
@}
@end example

@lilypond[quote,ragged-right]
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond

Això té millor aspecte, però farem alguns canvis més.  El
glissando és difícil de veure, així que el farem més gruixut i
l'aproparem als caps de les notes.  Posarem la indicació
metronòmica a sobre de la clau, en lloc d'anar a sobre de la
primera nota.  I per últim, el meu professor de composició odia
les indicacions de compàs @q{C}, així que la convertirem en @q{4/4}.

Malgrat això, no hem de canviar el fitxer @file{musica.ly}.  Anem
a substituir el nostre fitxer @file{definicions.ily} amb el següent:

@example
%%%  definicions.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})

inst =
#(define-music-function
     (string)
     (string?)
   #@{ <>^\markup \bold \box #string #@})

\layout@{
  \context @{
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  @}
  \context @{
    \Staff
    \override TimeSignature.style = #'numbered
  @}
  \context @{
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  @}
@}
@end example

@lilypond[quote,ragged-right]
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

\layout{
  \context {
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context {
    \Staff
    \override TimeSignature.style = #'numbered
  }
  \context {
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond

Això té un aspecte molt millor!  Ara suposeu que voleu publicar
aquesta peça.  Al meu professor de composició no li agraden les
indicacions de compàs, però jo els tinc un cert apreci.  Copiarem
el fitxer actual

¡Eso tiene un aspecto mucho mejor!  Ahora suponga que quiere
publicar esta pieza.  A mi profesor de composición no le gustan
las indicaciones de compás @q{C}, pero yo les tengo cierto cariño.
Copiaremos el archivo actual @file{definicions.ily} a
@file{publicar-web.ily} i modificarem aquest últim fitxer. Com el
propòsit d'aquesta música és produir un PDF que es mostrarà a la
pantalla, també augmentarem la mida general de la sortida.

@example
%%%  publicar-web.ily
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})

inst =
#(define-music-function
     (string)
     (string?)
   #@{ <>^\markup \bold \box #string #@})

#(set-global-staff-size 23)

\layout@{
  \context @{
    \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  @}
  \context @{
    \Staff
  @}
  \context @{
    \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  @}
@}
@end example

@lilypond[quote,ragged-right]
mpdolce =
  \tweak self-alignment-X #-0.6
  #(make-dynamic-script
    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})

inst =
#(define-music-function
     (string)
     (string?)
   #{ <>^\markup \bold \box #string #})

#(set-global-staff-size 23)

\layout{
  \context { \Score
    \override MetronomeMark.extra-offset = #'(-5 . 0)
    \override MetronomeMark.padding = #'3
  }
  \context { \Voice
    \override Glissando.thickness = #3
    \override Glissando.gap = #0.1
  }
}

\relative {
  \tempo 4=50
  a'4.\mpdolce d8 cis4--\glissando a |
  b4 bes a2 |
  \inst "Clarinet"
  cis4.\< d8 e4 fis |
  g8(\! fis)-. e( d)-. cis2 |
}
@end lilypond

Ara, a la música, simplement substitueixo
@code{\include "definicions.ily"} per @code{\include "publicar-web.ily"}.  Per
suposat, podríem fer això encara més pràctic.  Podríem fer un
fitxer @file{definiciones.ily} que contingués sols les definicions de
@code{mpdolce} i de @code{inst}, un fitxer
@file{publicar-web.ily} que contingués sols la secció
@code{\layout} que es va mostrar a l'exemple, i un fitxer
@file{universitat.ily} que contindria sols els ajustament per
introduir la sortida que agrada al meu professor.  El començament de
@file{musica.ly} tindria ara aquest aspecte:

@example
\include "definiciones.ily"

%%%  Treure el comentari d'una sola d'aquestes línies!
\include "publicar-web.ily"
%\include "universitat.ily"
@end example

Aquest enfocament pot ser útil fins i tot si aneu a produir sols
un conjunt de particel·les.  Jo utilitzo mitja dotzena de fitxers
de @q{fulls d'estil} per als meus projectes.   Començo tots els
fitxers de música amb un @code{\include "../global.ily"}, que conté

@example
%%%   global.ily
\version @w{"@version{}"}

#(ly:set-option 'point-and-click #f)

\include "../iniciar/iniciar-definicions.ily"
\include "../iniciar/iniciar-disposicio.ily"
\include "../iniciar/iniciar-capçaleres.ily"
\include "../iniciar/iniciar-paper.ily"
@end example


@node Altres fonts d'informació
@subsection Altres fonts d'informació
@translationof Other sources of information

La documentació del manual de Referència de Funcionament Intern
conté muntanyes d'informació sobre el LilyPond, però es pot
obtenir més informació encara llegint els fitxers interns del
LilyPond.  Per donar-los una ullada, en primer lloc heu de buscar
la carpeta corresponent al seu sistema.  La ubicació d'aquesta
carpeta depèn (a) de si heu aconseguit el programa LilyPond
descarregant un binari precompilat des del lloc web lilypond.org o
i l'heu instal·lat mitjançant un gestor de paquets (és a dir,
distribuït per GNU/Linux, o instal·lat sota fink o cygwin) o si va
ser compilat a partir de la font, i (b) de quin sistema operatiu
esteu utilitzant:

@subsubsubheading Descàrrega des de lilypond.org

@itemize @bullet
@item GNU/Linux

Dirigiu-vos a
@example
@file{@var{CARPETA_DE_INSTAL·LACIÓ}/lilypond/usr/@/share/lilypond/current/}
@end example

@item MacOS X

Diríjase a
@example
@file{@var{CARPETA_DE_INSTAL·LACIÓ}/LilyPond.app/Contents/@/Resources/share/lilypond/current/}
@end example

o bé fent @code{cd} cap a aquest directori des del terminal, o bé
mantenint polsada la tecla de Control i fent clic sobre
l'aplicació del LilyPond, i escollint aquí
@q{Mostrar el contingut del paquet}.

@item Windows

Mitjançant el Explorador del Windows, dirigiu-vos a
@example
@file{@var{CARPETA_DE_INSTAL·LACIÓ}/LilyPond/usr/@/share/lilypond/current/}
@end example

@end itemize

@subsubsubheading Instal·lant mitjançant un gestor de paquets o
compilat a partir de la font

Dirigiu-vos a @file{@var{PREFIX}/share/lilypond/@var{X.Y.Z}/}, on
@var{PREFIX} s'ha establert pel vostre administrador de paquets o
guió @code{configure}, i @var{X.Y.Z} es el número de la versió del
LilyPond.

@smallspace

Dins d'aquesta carpeta, les dues subcarpetes interessats són

@itemize
@item @file{ly/} - conté fitxers en format LilyPond
@item @file{scm/} - conté fitxers en format Scheme
@end itemize

Començarem observant alguns fitxers que estan a
@file{ly/}.  Obriu @file{ly/property-init.ly} amb un editor de
textos.  El mateix que usaria normalment per al fitxers
@file{.ly} servirà perfectament.  Aquest fitxer conté les
definicions de totes les instruccions estàndard predefinides del
LilyPond, com per exemple @code{\tieUp} i @code{\slurDotted}.
Podreu veure que no són res més que definicions de variables que
contenen una o diverses ordres @code{\override}.  Per exemple,
@code{\tieDotted} està definit de tal forma que el valor és:

@example
tieDotted = @{
  \override Tie.dash-period = #0.75
  \override Tie.dash-fraction = #0.1
@}
@end example

Si no us agraden els valors predeterminats, aquestes ordres
predefinides es poden redefinir amb facilitat com qualsevol altra
variable, al principi del seu fitxer de codi d'entrada.

Els següents són els fitxers més útils que es troben a
@file{ly/}:

@multitable @columnfractions .4 .6
@headitem Fitxer
  @tab Contingut
@item @file{ly/engraver-init.ly}
  @tab Definicions de Contextos de gravadors
@item @file{ly/paper-defaults-init.ly}
  @tab especificacions de valors predeterminats relacionats amb el document
@item @file{ly/performer-init.ly}
  @tab Definicions de Contextos de interpretació
@item @file{ly/property-init.ly}
  @tab Definicions de totes las instruccions predefinides que són comunes
@item @file{ly/spanner-init.ly}
  @tab Definicions de les ordres predefinides relacionades amb els objectes d'extensió
@end multitable

Altres ajustos (com les definicions de les ordres de marcatge)
s'emmagatzemen com fitxers @file{.scm} (de l'Scheme).  El
llenguatge de programació Scheme es fa servir per proporcoinar una
interfície programable en el funcionament intern del LilyPond.
Qualsevol explicació addicional sobre aquests fitxers es troba de
moment fora de l'àmbit d'aquest manual, perquè es requereixen
coneixements del llenguatge Scheme.  S'adverteix als usuaris que
cal una important quantitat de coneixements tècnics o de temps per
comprendre el llenguatge Scheme i aquests fitxers
(vegeu @rextendnamed{Scheme tutorial,Tutorial de l'Scheme}).

Si ja teniu aquests coneixements, els fitxers de l'Scheme que
poden interessar-vos són:

@multitable @columnfractions .4 .6
@headitem Fitxer
  @tab Contingut
@item @file{scm/auto-beam.scm}
  @tab Valors predeterminats de sub-barrat
@item @file{scm/define-grobs.scm}
  @tab valors predeterminats de les propietats de grobs
@item @file{scm/define-markup-commands.scm}
  @tab Especificar totes les ordres de marcatge
@item @file{scm/midi.scm}
  @tab Ajustaments predeterminats per a la sortida MIDI
@item @file{scm/output-lib.scm}
  @tab Ajustaments que afecten l'aspecte dels trastos, colors, alteracions, línies divisòries, etc.
@item @file{scm/parser-clef.scm}
  @tab Definicions de les claus contemplades
@item @file{scm/script.scm}
  @tab Ajustaments predeterminats per a les articulacions
@end multitable


@node Ajustaments avançats amb l'Scheme
@subsection Ajustaments avançats amb l'Scheme
@translationof Advanced tweaks with Scheme

Tot i que és possible fer moltes coses amb les ordres
@code{\override} i @code{\tweak} , tenim una forma encara més
poderosa de modificar el funcionament del LilyPond, mitjançant una
interfície programable cap a les operacions internes del
LilyPond.  Es pot incorporar codi escrit en el llenguatge de
programació Scheme, directament en el mecanisme de funcionament
del LilyPond.  Per descomptat, per fer això calen almenys uns
coneixements bàsics de programació de l'Scheme, i proveïm una
introducció al @rextendnamed{Scheme tutorial,Tutorial de l'Scheme}.

Com exemple que il·lustra una de les moltes possibilitats, en lloc
de donar a una propietat un valor constant, es pot establir al
resultat d'una procediment de l'Scheme que s'invoca cada cop que
el LilyPond accedeix a aquesta propietat.  La propietat es pot
establir dinàmicament a un valor determinat pel procediment al
moment que s'invoca.  En aquest exemple donem als caps de les
notes un color que depèn de la seva posició dins del pentagrama.

@cindex x11-color, funció, exemple de utilització
@cindex NoteHead, exemple de sobreescriptura
@cindex color, propietat, establir a procediment de l'Scheme

@lilypond[quote,verbatim,ragged-right]
#(define (color-notehead grob)
   "Pinta el cap de la nota d'acord amb la seva posició a la partitura."
   (let ((mod-position (modulo (ly:grob-property grob 'staff-position)
                               7)))
     (case mod-position
       ;;   Retorna els colors de l'arc de Sant Martí
       ((1) (x11-color 'red    ))  ; for C
       ((2) (x11-color 'orange ))  ; for D
       ((3) (x11-color 'yellow ))  ; for E
       ((4) (x11-color 'green  ))  ; for F
       ((5) (x11-color 'blue   ))  ; for G
       ((6) (x11-color 'purple ))  ; for A
       ((0) (x11-color 'violet ))  ; for B
       )))

\relative {
  % Disposa per obtenir el color del procediment color-notehead
  \override NoteHead.color = #color-notehead
  a2 b | c2 d | e2 f | g2 a |
}
@end lilypond

Es poden trobar exemples addicionals que mostren la utilització
d'aquestes interfícies programables, a
@rextendnamed{Callback functions,Funcions de callback}.
