[ << Contexts and engravers ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Top ] | [ > ] |
Tweaks and overrides
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < Tweaks and overrides ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Afegir una indicació d’octava alta a una sola veu
Si teniu més d’una veu al mateix pentagrama, el canvi d’octavació d’una veu transportarà la posició de les notes en totes les veus mentre duri la clau de l’octava. Si l’octavació es vol aplicar sols a una veu, s’han d’ajustar explícitament la middleCPosition i la clau d’octava. En aquest fragment de codi el valor de middleCPosition per a la clau de Fa és normalment 6, sis posicions per sobre de la línia del Do central, de manera que en la porció de 8va el valor de middleCPosition és encara 7 posicions (una octava) més alta.
\layout { \context { \Staff \remove Ottava_spanner_engraver } \context { \Voice \consists Ottava_spanner_engraver } } { \clef bass << { <g d'>1~ q2 <c' e'> } \\ { r2. \ottava -1 <b,,, b,,>4 ~ | q2 \ottava 0 <c e>2 } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Afegir enllaços als objectes
Per afegir un enllaç al segell d’un objecte gràfic, podem usar
add-link
tal i com es defineix aquí. Funciona amb
\override
i amb \tweak
. Inconvenient:
point-and-click
(apuntar i clicar) quedarà obstaculitzat
pels objectes gràfics enllaçats.
Limitació: funciona sols per a PDF.
Els objectes enllaçats s’acoloreixen amb una ordre a part.
#(define (add-link url-strg) (lambda (grob) (let* ((stil (ly:grob-property grob 'stencil))) (if (ly:stencil? stil) (let* ((x-ext (ly:stencil-extent stil X)) (y-ext (ly:stencil-extent stil Y)) (url-expr `(url-link ,url-strg ,x-ext ,y-ext)) (new-stil (ly:stencil-add (ly:make-stencil url-expr x-ext y-ext) stil))) (ly:grob-set-property! grob 'stencil new-stil)))))) %%%% test %% For easier maintenance of this snippet the URL is formatted to use the %% actually used LilyPond version. %% Of course a literal URL would work as well. #(define major.minor-version (string-join (take (string-split (lilypond-version) #\.) 2) ".")) urlI = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/writing-pitches" major.minor-version) urlII = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/rhythms" major.minor-version) urlIII = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/note-heads" major.minor-version) urlIV = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/beams" major.minor-version) urlV = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/note-head-styles" major.minor-version) urlVI = #(format #f "http://lilypond.org/doc/v~a/Documentation/notation/writing-pitches" major.minor-version) \relative c' { \key cis \minor \once \override Staff.Clef.color = #green \once \override Staff.Clef.after-line-breaking = #(add-link urlI) \once \override Staff.TimeSignature.color = #green \once \override Staff.TimeSignature.after-line-breaking = #(add-link urlII) \once \override NoteHead.color = #green \once \override NoteHead.after-line-breaking = #(add-link urlIII) cis'1 \once \override Beam.color = #green \once \override Beam.after-line-breaking = #(add-link urlIV) cis8 dis e fis gis2 <gis, \tweak Accidental.color #green \tweak Accidental.after-line-breaking #(add-link urlVI) \tweak color #green \tweak after-line-breaking #(add-link urlV) \tweak style #'harmonic bis dis fis >1 <cis, cis' e> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Adding markups in a tablature
By default markups does not show in a tablature.
To make them appear, simply use the command
\revert TabStaff.TextScript.stencil
%% http://lsr.di.unimi.it/LSR/Item?id=919 % by P.P.Schneider on June 2014 high = { r4 r8 <g c'> q r8 r4 } low = { c4 r4 c8 r8 g,8 b, } pulse = { s8^"1" s^"&" s^"2" s^"&" s^"3" s^"&" s^"4" s^"&" } \score { \new TabStaff { \repeat unfold 2 << \high \\ \low \\ \pulse >> } \layout { \context { \TabStaff \clef moderntab \revert TextScript.stencil \override TextScript.font-series = #'bold \override TextScript.font-size = #-2 \override TextScript.color = #red } \context { \Score proportionalNotationDuration = #(ly:make-moment 1/8) } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Afegir marques de temps a glissandos llargs
Els temps que se salten a glissandos molt llargs s’indiquen a vegades mitjançant marques de temps, que sovint consisteixen en figures sense cap. Aquestes pliques es poden usar també per allotjar indicacions expressives intermèdies.
Si les pliques no queden ben alineades amb el glissando, podria caldre recol·locar-les lleugerament.
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } glissandoSkipOff = { \revert NoteColumn.glissando-skip \undo \hide NoteHead \revert NoteHead.no-ledgers } \relative c'' { r8 f8\glissando \glissandoSkipOn f4 g a a8\noBeam \glissandoSkipOff a8 r8 f8\glissando \glissandoSkipOn g4 a8 \glissandoSkipOff a8 | r4 f\glissando \< \glissandoSkipOn a4\f \> \glissandoSkipOff b8\! r | }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ajustament d’espaiat de les notes d’adorn
Es poden ajustar la separació entre les notes d’adorn utilitzant
la propietat spacing-increment
de Score.GraceSpacing
.
graceNotes = { \grace { c4 c8 c16 c32 } c8 } \relative c'' { c8 \graceNotes \override Score.GraceSpacing.spacing-increment = #2.0 \graceNotes \revert Score.GraceSpacing.spacing-increment \graceNotes }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ajustament de l’espaiat vertical de la lletra
Aquest fragment de codi mostra com situar la línia de base de la lletra més a prop del pentagrama.
% Default layout: << \new Staff \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } \new Lyrics \lyricsto melody { aa aa aa aa aa aa aa aa aa } \new Staff { \new Voice = melody \relative c' { c4 d e f g4 f e d c1 } } % Reducing the minimum space below the staff and above the lyrics: \new Lyrics \with { \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #'((basic-distance . 1)) } \lyricsto melody { aa aa aa aa aa aa aa aa aa } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Alterar la longitud de les pliques unides per una barra
Es pot variar la longitud de les pliques de les figures unides per
una barra mitjançant la sobreescriptura de la propietat
beamed-lengths
dels detalls (details
) de l’objecte
Stem
. Si s’utilitza un sol valor com argument, la longitud
s’aplica a totes les pliques. Si s’usen diversos arguments, el
primer s’aplica a les corxeres, el segon a les semicorxeres, i
així successivament. L’últim argument també s’aplica a totes les
figures que són més curtes que la longitud de la figura de l’últim
argument. També es poden usar arguments no enters.
\relative c'' { \override Stem.details.beamed-lengths = #'(2) a8[ a] a16[ a] a32[ a] \override Stem.details.beamed-lengths = #'(8 10 12) a8[ a] a16[ a] a32[ a] r8 \override Stem.details.beamed-lengths = #'(8) a8[ a] \override Stem.details.beamed-lengths = #'(8.5) a8[ a] \revert Stem.details.beamed-lengths a8[ a] a16[ a] a32[ a] r16 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Numeració de compassos alternativa
Es poden seleccionar dos mètodes alternatius per a la numeració de compassos, especials quan hi ha repeticions.
\relative c'{ \set Score.alternativeNumberingStyle = #'numbers \repeat volta 3 { c4 d e f | } \alternative { { c4 d e f | c2 d \break } { f4 g a b | f4 g a b | f2 a | \break } { c4 d e f | c2 d } } c1 \break \set Score.alternativeNumberingStyle = #'numbers-with-letters \repeat volta 3 { c,4 d e f | } \alternative { { c4 d e f | c2 d \break } { f4 g a b | f4 g a b | f2 a | \break } { c4 d e f | c2 d } } c1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Claus d’anàlisis a sobre del pentagrama
De forma predeterminada s’afegeixen claus d’anàlisis senzills a sota del pentagrama. L’exemple següent mostra una manera de col·locar-los a sobre.
\layout { \context { \Voice \consists "Horizontal_bracket_engraver" } } \relative c'' { \once \override HorizontalBracket.direction = #UP c2\startGroup d2\stopGroup }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Analysis brackets with labels
Text markup may be added to analysis brackets through the text
property of the HorizontalBracketText
grob. Adding different
texts to brackets beginning at the same time requires the
\tweak
command.
Bracket text will be parenthesized after a line break.
\paper { tagline = ##f } \layout { \context { \Voice \consists "Horizontal_bracket_engraver" \override HorizontalBracket.direction = #UP } } { \once\override HorizontalBracketText.text = "a" c''\startGroup d''\stopGroup \once\override HorizontalBracketText.text = "a'" e''\startGroup d''\stopGroup | c''-\tweak HorizontalBracketText.text \markup \bold \huge "b" \startGroup -\tweak HorizontalBracketText.text "a" \startGroup d''\stopGroup e''-\tweak HorizontalBracketText.text "a'" \startGroup d''\stopGroup\stopGroup | c''-\tweak HorizontalBracketText.text foo \startGroup d'' e'' f'' | \break g'' a'' b'' c'''\stopGroup }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Lligadures asimètriques
Es pot fer que una lligradura d’expressió sigui asimètrica per adaptar-se millor un patró asimètric de notes.
slurNotes = { d,8( a' d f a f' d, a) } \relative c' { \stemDown \slurUp \slurNotes \once \override Slur.eccentricity = #3.0 \slurNotes }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Cesura tipus "vies del tren" amb calderó
En ocasions es denota una «cesura» mitjançant una doble marca de respiració semblant a les vies d’un tren, amb un calderó a sobre. Aquest fragment de codi presenta una combinació visualment satisfactòria d’aquestes dues marques.
\relative c'' { c2. % construct the symbol \override BreathingSign.text = \markup { \override #'(direction . 1) \override #'(baseline-skip . 1.8) \dir-column { \translate #'(0.155 . 0) \center-align \musicglyph "scripts.caesura.curved" \center-align \musicglyph "scripts.ufermata" } } \breathe c4 % set the breathe mark back to normal \revert BreathingSign.text c2. \breathe c4 \bar "|." }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modificar la mida d’una nota solta d’una acord
Es poden modificar notes individuals d’un acord amb l’ordre
\tweak
, alterant la propietat font-size
.
Dins d’un acord (entre angles simples < >
), abans de la nota
que volem alterar, situem l’ordre \tweak
seguida per
#'font-size
i definim la mida adequada com #-2
(un cap petit).
\relative c' { <\tweak font-size #+2 c e g c \tweak font-size #-2 e>1 ^\markup { A tiny e }_\markup { A big c } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Changing beam thickness and spacing
To make beams thicker or thinner alter the Beam.beam-thickness
property. To adjust the spacing between beams alter the
Beam.length-fraction
property.
\relative f' { \time 1/8 \override Beam.beam-thickness = #0.4 \override Beam.length-fraction = #0.8 c32 c c c \revert Beam.beam-thickness % 0.48 is default thickness \revert Beam.length-fraction % 1.0 is default spacing c32 c c c \override Beam.beam-thickness = #0.6 \override Beam.length-fraction = #1.3 c32 c c c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Canviar la forma dels silencis multicompàs
Si hi ha deu compassos de silenci o menys, s’imprimeix en el
pentagrama una sèrie de silencis de breu i longa (coneguts en alemany
com “Kirchenpausen”, «silencis eclesiàstics»); en cas contrari es
mostra una barra normal. Aquest nombre predeterminat de deu es pot
canviar sobreescrivint la propietat expand-limit
:
\relative c'' { \compressMMRests { R1*2 | R1*5 | R1*9 \override MultiMeasureRest.expand-limit = #3 R1*2 | R1*5 | R1*9 } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modificació de propietats per a objetes gràfics individuals
L’ordre \applyOutput
fa possible l’ajustament fi de
qualsevol objecte de presentació, en qualsevol context. Requereix
una funció de l’Scheme amb tres arguments
#(define (mc-squared grob grob-origin context) (let ((sp (ly:grob-property grob 'staff-position))) (ly:grob-set-property! grob 'stencil (grob-interpret-markup grob #{ \markup \lower #0.5 #(case sp ((-5) "m") ((-3) "c ") ((-2) #{ \markup \teeny \bold 2 #}) (else "bla")) #})))) \relative c' { <d f g b>2 \applyOutput Voice.NoteHead #mc-squared <d f g b>2 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Canviar el text i els estils d’objecte d’extensió per a les indicacions dinàmiques textuals
Es pot modificar el text empleat per als crescendos i decrescendos
modificant les propietats de context crescendoText
i
decrescendoText
.
L’estil de la línia d’extensió es pot canviar modificant la propietat
'style
de DynamicTextSpanner
. El valor predeterminat és
'dashed-line
(línia discontínua), i entre d’altres valors
possibles es troben 'line
(línia), 'dotted-line
(línia
de punts) i 'none
(res):
\relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text \override DynamicTextSpanner.style = #'dotted-line a2\< a a2 a a2 a a2 a\mf }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Canviar la família de tipus de lletra predeterminada per al text
Les famílies de tipus de lletra per al text es poden sobreescriure amb
make-pango-font-tree
.
%{ You may have to install additional fonts. Red Hat Fedora dejavu-fonts-all Debian GNU/Linux, Ubuntu fonts-dejavu-core fonts-dejavu-extra %} \paper { % change for other default global staff size. myStaffSize = #20 %{ run lilypond -dshow-available-fonts to show all fonts available in the process log. %} #(define fonts (make-pango-font-tree "DejaVu Serif" "DejaVu Sans" "DejaVu Sans Mono" (/ myStaffSize 20))) } { g'''4^\markup { DejaVu Serif: \bold bold \italic italic \italic \bold { bold italic } } g4_\markup { \override #'(font-family . sans) { DejaVu Sans: \bold bold \italic italic \italic \bold { bold italic } } } g''2^\markup { \override #'(font-family . typewriter) { DejaVu Sans Mono: \bold bold \italic italic \italic \bold { bold italic } } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modificar la mida de la pauta
Tot i que la manera més senzilla de redimensionar els pentagrames és
usar #(set-global-staff-size xx)
, la mida d’una pauta
individual es pot canviar escalant les propietats de
'staff-space
i de fontSize
.
<< \new Staff { \relative c'' { \dynamicDown c8\ff c c c c c c c } } \new Staff \with { fontSize = #-3 \override StaffSymbol.staff-space = #(magstep -3) } { \clef bass c8 c c c c\f c c c } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Canviar el tempo sense indicació metronòmica
Per canviar el tempo a la sortida MIDI sense imprimir res, fem invisible la indicació metronòmica:
\score { \new Staff \relative c' { \tempo 4 = 160 c4 e g b c4 b d c \set Score.tempoHideNote = ##t \tempo 4 = 96 d,4 fis a cis d4 cis e d } \layout { } \midi { } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modificar el text de las indicacions de pedal
Es pot usar Staff.pedalSustainStrings
per fixar el text de les
indicacions de pisar pedal i aixecar pedal. Observeu que les úniques
cadenes vàlides són les que estan a la llista de glifs de pedal: els
valors que apareixen en aquest fragment de codi són una relació
exhaustiva.
sustainNotes = { c4\sustainOn d e\sustainOff\sustainOn f\sustainOff } \relative c' { \sustainNotes \set Staff.pedalSustainStrings = #'("P" "P-" "-") \sustainNotes \set Staff.pedalSustainStrings = #'("d" "de" "e") \sustainNotes \set Staff.pedalSustainStrings = #'("M" "M-" "-") \sustainNotes \set Staff.pedalSustainStrings = #'("Ped" "*Ped" "*") \sustainNotes }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Controlar la visibilitat dels objectes d’extensió després d’un salt de línia
La visibilitat dels objectes d’extensió que acaben a la primera
nota després d’un salt de línia està controlada per la funció de
crida de after-line-breaking
ly:spanner::kill-zero-spanned-time
.
Per als objectes com els glissandos i els reguladors, el comportament predeterminat és ocultar l’objecte d’extensió després del salt; la inhabilitació de la funció de callblack fa que l’object d’extensió trencat per l’esquerra pot mostrar-se.
De forma inversa, els objectes d’extensió que són visibles normalment, com els objectes d’extensió de text, es poden ocultar habilitant la funció de callback.
\paper { ragged-right = ##t } \relative c'' { \override Hairpin.to-barline = ##f \override Glissando.breakable = ##t % show hairpin \override Hairpin.after-line-breaking = ##t % hide text span \override TextSpanner.after-line-breaking = #ly:spanner::kill-zero-spanned-time e2\<\startTextSpan % show glissando \override Glissando.after-line-breaking = ##t f2\glissando \break f,1\!\stopTextSpan }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Controlar l’ordenació vertical de les inscripcions
L’orden vertical que ocupen les inscripcions gràfiques està
controlat amb la propietat 'script-priority
. Quant més baix
és aquest número, més a prop de la nota es col·locarà. En aquest
exemple, el TextScript
(el sostingut) té primer la
prioritat més baixa, per la qual cosa se situa en la posició més
baixa al primer exemple. En el segon, el semitrí (el
Script
) és el que la té més baixa, per la qual cosa se
situa en la part interior. Quan dos objectes tenen la mateixa
prioritat, l’ordre en el qual s’introdueixen determina quin serà
el que apareix en primer lloc.
\relative c''' { \once \override TextScript.script-priority = #-100 a2^\prall^\markup { \sharp } \once \override Script.script-priority = #-100 a2^\prall^\markup { \sharp } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Control de la visibilitat dels corxets de grup especial
El comportament predeterminat de la visibilitat dels corxets de
grup de valoració especial és imprimir el corxet a no ser que hi
hagi una barra de la mateixa longitud que el grup especial. Per
controlas la visibilitat dels corxets de grup, establiu la propietat
'bracket-visibility
a #t
(sempre imprimir el corxet).
#f
(no imprimir-lo mai) o #'if-no-beam
(imprimir el
corxet sols si no hi ha barra).
music = \relative c'' { \tuplet 3/2 { c16[ d e } f8] \tuplet 3/2 { c8 d e } \tuplet 3/2 { c4 d e } } \new Voice { \relative c' { \override Score.TextMark.non-musical = ##f \textMark "default" \music \override TupletBracket.bracket-visibility = #'if-no-beam \textMark \markup \typewriter "'if-no-beam" \music \override TupletBracket.bracket-visibility = ##t \textMark \markup \typewriter "#t" \music \override TupletBracket.bracket-visibility = ##f \textMark \markup \typewriter "#f" \music \omit TupletBracket \textMark \markup \typewriter "omit" \music } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Crear un grupet d’anticipació
La creació d’un grupet circular d’anticipació entre dues notes, on
la nota inferior del grupet utilitza una alteració, requereix
diverses sobreescriptures de propietats. La propietat
outside-staff-priority
es pot establir al valor #f
,
atès que en aquest cas tindria prioritat sobre la propietat
avoid-slur property
. Canviant les fraccions 2/3
i
1/3
pot ajustar-se la posició horitzontal.
\relative c'' { \after 2*2/3 \turn c2( d4) r | \after 4 \turn c4.( d8) \after 4 { \once \set suggestAccidentals = ##t \once \override AccidentalSuggestion.outside-staff-priority = ##f \once \override AccidentalSuggestion.avoid-slur = #'inside \once \override AccidentalSuggestion.font-size = -3 \once \override AccidentalSuggestion.script-priority = -1 \once \hideNotes cis8\turn \noBeam } d4.( e8) }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Creació d’armadures personalitzades
El LilyPond accepta armadures personalitzades. En aquest exemple, es mostra l’armadura de re menor amb una rang estès de bemolls.
\new Staff \with { \override StaffSymbol.line-count = #8 \override KeySignature.flat-positions = #'((-7 . 6)) \override KeyCancellation.flat-positions = #'((-7 . 6)) % presumably sharps are also printed in both octaves \override KeySignature.sharp-positions = #'((-6 . 7)) \override KeyCancellation.sharp-positions = #'((-6 . 7)) \override Clef.stencil = # (lambda (grob)(grob-interpret-markup grob #{ \markup\combine \musicglyph "clefs.C" \translate #'(-3 . -2) \musicglyph "clefs.F" #})) clefPosition = #3 middleCPosition = #3 middleCClefPosition = #3 } { \key d\minor f bes, f bes, }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Crear digitacions de dues xifres
És possible crear digitacions amb el nombre més gran de 5.
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Crear elements de extensió textuals
Les ordres \startTextSpan
i \stopTextSpan
permeten la creació d’elements d’extensió textuals tan
fàcilment com indicacions de pedal o octavacions. Sobreescrivim
certes propietats de l’object TextSpanner
per modificar
la seva sortida.
\paper { ragged-right = ##f } \relative c'' { \override TextSpanner.bound-details.left.text = #"bla" \override TextSpanner.bound-details.right.text = #"blu" a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'line \once \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'dashed-line \override TextSpanner.bound-details.left.text = \markup { \draw-line #'(0 . 1) } \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -2) } \once \override TextSpanner.bound-details.right.padding = #-2 a4 \startTextSpan b4 c a4 \stopTextSpan \set Staff.middleCPosition = #-13 \override TextSpanner.dash-period = #10 \override TextSpanner.dash-fraction = #0.5 \override TextSpanner.thickness = #10 a4 \startTextSpan b4 c a4 \stopTextSpan }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Cross-staff chords - beaming problems workaround
Sometimes it is better to use stems from the upper staff for creating
cross-staff chords, because no problems with automatic beam collision
avoidance then arise. If the stems from the lower staff were used in
the following example, it would be necessary to change the automatic
beam collision avoidance settings so that it doesn’t detect collisions
between staves using
\override Staff.Beam.collision-voice-only = ##t
\new PianoStaff << \new Staff = up \relative c' { << { r4 \override Stem.cross-staff = ##t \override Stem.length = #19 % this is in half-spaces, % so it makes stems 9.5 staffspaces long \override Stem.Y-offset = #-6 % stems are normally lengthened % upwards, so here we must lower the stem by the amount % equal to the lengthening - in this case (19 - 7) / 2 % (7 is default stem length) e e e } { s4 \change Staff = "bottom" \override NoteColumn.ignore-collision = ##t c, c c } >> } \new Staff = bottom \relative c' { \clef bass \voiceOne g8 a g a g a g a } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Pliques de pentagrama creuat
Aquest fragment de codi mostra l’ús del gravador
Span_stem_engraver
i de \crossStaff
per connectar
automàticament pliques d’un pentagrama a un altre. No cal
especificar la longitud de la plica perquè la distància variable
entre els caps de les notes i els pentagrames es calcula automàticament.
\layout { \context { \PianoStaff \consists "Span_stem_engraver" } } { \new PianoStaff << \new Staff { <b d'>4 r d'16\> e'8. g8 r\! e'8 f' g'4 e'2 } \new Staff { \clef bass \voiceOne \autoBeamOff \crossStaff { <e g>4 e, g16 a8. c8} d \autoBeamOn g8 f g4 c2 } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Custos
Es poden gravar «custos» en diferents estils.
\layout { ragged-right = ##t } \new Staff \with { \consists "Custos_engraver" } \relative c' { \override Staff.Custos.neutral-position = #4 \override Staff.Custos.style = #'hufnagel c1^"hufnagel" \break <d a' f'>1 \override Staff.Custos.style = #'medicaea c1^"medicaea" \break <d a' f'>1 \override Staff.Custos.style = #'vaticana c1^"vaticana" \break <d a' f'>1 \override Staff.Custos.style = #'mensural c1^"mensural" \break <d a' f'>1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Personalitzar els diagrames de posicions
Es poden establir les propietats dels diagrames de posicions
d’acords per mitjà de 'fret-diagram-details
. Per als
diagrames de posicions de FretBoard, s’apliquen els
overrides (sobreescriptures) a l’objecte
FretBoards.FretBoard
. Com Voice
, FretBoards
és un context del nivell inferior, i per tant es pot ometre el seu
nom a la sobreescriptura de propietats.
\include "predefined-guitar-fretboards.ly" \storePredefinedDiagram #default-fret-table \chordmode { c' } #guitar-tuning #"x;1-1-(;3-2;3-3;3-4;1-1-);" % shorthand oo = #(define-music-function (grob-path value) (list? scheme?) #{ \once \override $grob-path = #value #}) << \new ChordNames { \chordmode { c1 | c | c | d } } \new FretBoards { % Set global properties of fret diagram \override FretBoards.FretBoard.size = #'1.2 \override FretBoard.fret-diagram-details.finger-code = #'in-dot \override FretBoard.fret-diagram-details.dot-color = #'white \chordmode { c \oo FretBoard.size #'1.0 \oo FretBoard.fret-diagram-details.barre-type #'straight \oo FretBoard.fret-diagram-details.dot-color #'black \oo FretBoard.fret-diagram-details.finger-code #'below-string c' \oo FretBoard.fret-diagram-details.barre-type #'none \oo FretBoard.fret-diagram-details.number-type #'arabic \oo FretBoard.fret-diagram-details.orientation #'landscape \oo FretBoard.fret-diagram-details.mute-string #"M" \oo FretBoard.fret-diagram-details.label-dir #LEFT \oo FretBoard.fret-diagram-details.dot-color #'black c' \oo FretBoard.fret-diagram-details.finger-code #'below-string \oo FretBoard.fret-diagram-details.dot-radius #0.35 \oo FretBoard.fret-diagram-details.dot-position #0.5 \oo FretBoard.fret-diagram-details.fret-count #3 d } } \new Voice { c'1 | c' | c' | d' } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Personalitzar diagrames de posicions de marcatge
Es poden establir les propietats dels diagrames de posicions a
través de 'fret-diagram-details
. Per als diagrames de
posicions de marcatge, es poden aplicar overrides
(sobreescriptures) a l’objecte Voice.TextScript
o
directament a l’element de marcatge.
<< \chords { c1 | c | c | d } \new Voice = "mel" { \textLengthOn % Set global properties of fret diagram \override TextScript.size = #'1.2 \override TextScript.fret-diagram-details.finger-code = #'in-dot \override TextScript.fret-diagram-details.dot-color = #'white %% C major for guitar, no barre, using defaults % terse style c'1^\markup { \fret-diagram-terse "x;3-3;2-2;o;1-1;o;" } %% C major for guitar, barred on third fret % verbose style % size 1.0 % roman fret label, finger labels below string, straight barre c'1^\markup { % standard size \override #'(size . 1.0) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . in-dot) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret % verbose style % landscape orientation, arabic numbers, M for mute string % no barre, fret label down or left, small mute label font c'1^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (number-type . arabic) (label-dir . -1) (mute-string . "M") (orientation . landscape) (barre-type . none) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } %% simple D chord % terse style % larger dots, centered dots, fewer frets % label below string d'1^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Mostrar claudàtor o clau en grups d’un sol pentagrama
Si hi ha un sols pentagrama en un dels tipus de sistema
ChoirStaff
o StaffGroup
, el comportament
predeterminat és que no s’imprimeixi el claudàtor a la barra inicial. Això
es pot canviar sobreescrivint collapse-height
per fixar el seu
valor de manera que sigui menor que el nombre de línies a la pauta.
Observeu que en contextos com PianoStaff
i
GrandStaff
en els quals els sistemes comencen amb una clau en
comptes d’un claudàtor, s’ha d’establir el valor d’una propietat
diferent, com es veu al segon sistema de l’exemple.
\score { \new StaffGroup << % Must be lower than the actual number of staff lines \override StaffGroup.SystemStartBracket.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> } \score { \new PianoStaff << \override PianoStaff.SystemStartBrace.collapse-height = #4 \override Score.SystemStartBar.collapse-height = #4 \new Staff { c'1 } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Imprimir l’arbre genealògic d’un grob
En treballar amb les crides d’un grob, pot ser de molta utilitat entendre l’arbre genealògic d’un grob. La major part dels grobs tenen pares que influeixen en el posicionament del grob. Els pares X i Y influeixen en les posisions horitzontal i vertical del grob, respectivament. A més, cada pare pot tenir al seu cop pares.
Desafortunadament, hi ha diversos aspectes de la geneaologia d’un grob que pot portar a confusió:
* Els tipus de pare que té un grob poden dependre del context.
* Per a certs grobs, els pares X i Y són el mateix.
* Un "ancestre" concret pot estar relacionat amb un grob de més d’una manera.
* El concepte de "generacions" és enganyós.
Por exemple, el grob System
pot ser tant un pare (sobre la
vorfa Y) com un avi (dues vegades a la vora X) d’un grob
VerticalAlignment
.
Aquest macro imprimeix, en la consola, una representació textual de la genealogia d’un grob.
Quan es crida d’aquesta forma:
{ \once \override NoteHead.before-line-breaking =
#display-ancestry c }
Es general la sortida següent:
NoteHead X,Y: NoteColumn
X: PaperColumn
X,Y: System
Y: VerticalAxisGroup
X: NonMusicalPaperColumn
X,Y: System
Y: VerticalAlignment
X: NonMusicalPaperColumn
X,Y: System
Y: System
%% http://lsr.di.unimi.it/LSR/Item?id=622 %% see also http://www.lilypond.org/doc/v2.18/Documentation/snippets/tweaks-and-overrides#tweaks-and-overrides-displaying-grob-ancestry %% Remark: %% grob::name is in the source since 2.19.x could be deleted during next LSR-upgrade #(define (grob::name grob) (assq-ref (ly:grob-property grob 'meta) 'name)) #(define (get-ancestry grob) (if (not (null? (ly:grob-parent grob X))) (list (grob::name grob) (get-ancestry (ly:grob-parent grob X)) (get-ancestry (ly:grob-parent grob Y))) (grob::name grob))) #(define (format-ancestry lst padding) (string-append (symbol->string (car lst)) "\n" (let ((X-ancestry (if (list? (cadr lst)) (format-ancestry (cadr lst) (+ padding 3)) (symbol->string (cadr lst)))) (Y-ancestry (if (list? (caddr lst)) (format-ancestry (caddr lst) (+ padding 3)) (symbol->string (caddr lst))))) (if (equal? X-ancestry Y-ancestry) (string-append (format #f "~&") (make-string padding #\space) "X,Y: " (if (list? (cadr lst)) (format-ancestry (cadr lst) (+ padding 5)) (symbol->string (cadr lst)))) (string-append (format #f "~&") (make-string padding #\space) "X: " X-ancestry "\n" (make-string padding #\space) "Y: " Y-ancestry (format #f "~&")))) (format #f "~&"))) #(define (display-ancestry grob) (format (current-error-port) "~3&~a~2%~a~&" (make-string 36 #\-) (if (ly:grob? grob) (format-ancestry (get-ancestry grob) 0) (format #f "~a is not a grob" grob)))) \relative c' { \once \override NoteHead.before-line-breaking = #display-ancestry f4 \once \override Accidental.before-line-breaking = #display-ancestry \once \override Arpeggio.before-line-breaking = #display-ancestry <f as c>4\arpeggio }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Harmònics amb puntet
Els harmònics artificials que usen l’ordre \harmonic
no tenen
puntet. Per sobreescriure aquest comportament, fixeu la propietat de
context harmonicDots
.
\relative c''' { \time 3/4 \key f \major \set harmonicDots = ##t <bes f'\harmonic>2. ~ <bes f'\harmonic>4. <a e'\harmonic>8( <gis dis'\harmonic> <g d'\harmonic>) <fis cis'\harmonic>2. <bes f'\harmonic>2. }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Rodejar els objectes gràfics amb rectangles
Es pot sobreescriure la funció print-function
per traçar un
rectangle al voltant d’un objecte gràfic arbitrari.
\relative c'' { \override TextScript.stencil = #(make-stencil-boxer 0.1 0.3 ly:text-interface::print) c'4^"foo" \override Stem.stencil = #(make-stencil-boxer 0.05 0.25 ly:stem::print) \override Score.RehearsalMark.stencil = #(make-stencil-boxer 0.15 0.3 ly:text-interface::print) b8 \revert Stem.stencil \revert Flag.stencil c4. c4 \mark \default c1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Rodejar diversos objectes amb una circumferència
L’ordre de marcatge \circle
traça circumferències al
voltant de diversos objectes, per exemple les indicacions de
digitació. Per a d’altres objectes es poden requerir ajustament
específics: aquest exemple mostra dues estratègies per a
lletres d’assaig i els números de compàs.
\relative c' { c1 \set Score.rehearsalMarkFormatter = #(lambda (mark context) (make-circle-markup (format-mark-numbers mark context))) \mark \default c2 d^\markup { \override #'(thickness . 3) { \circle \finger 2 } } \override Score.BarNumber.break-visibility = #all-visible \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Objecte personalitzat d’extensió de text de matisos dinàmics, postfix
Funcions postfix per a la creació d’objectes d’extensió de text personalitzats. Els objectes d’extensió han de començar en la primera nota del compàs. Cal utilitzar -\mycresc, en cas contrari el començament de l’objecte d’extensió s’assignarà a la nota següent.
% Two functions for (de)crescendo spanners where you can explicitly % give the spanner text. mycresc = #(define-music-function (mymarkup) (markup?) (make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) mydecresc = #(define-music-function (mymarkup) (markup?) (make-music 'DecrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) \relative c' { c4-\mycresc "custom cresc" c4 c4 c4 | c4 c4 c4 c4 | c4-\mydecresc "custom decresc" c4 c4 c4 | c4 c4\! c4 c4 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Objectes extensors de text postfix per a dinàmica
Els objectes d’extensió \cresc, \dim i \decresc ara es poden redefinir com a operadors postfix i produir un sols objecte d’extensió de text. La definició d’extensores personalitzats també és fàcil. Es poden barrejar amb facilitat els crescendi textuals i en forma de reguladors. \< i \> produeixen reguladors gràfics de forma predeterminada, \cresc etc. produeixen elements extensors de text de forma predeterminada.
% Some sample text dynamic spanners, to be used as postfix operators crpoco = #(make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text "cresc. poco a poco") \relative c' { c4\cresc d4 e4 f4 | g4 a4\! b4\crpoco c4 | c4 d4 e4 f4 | g4 a4\! b4\< c4 | g4\dim a4 b4\decresc c4\! }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Extending a TrillSpanner
For TrillSpanner
, the minimum-length
property becomes
effective only if the set-spacing-rods
procedure is called
explicitly.
To do this, the springs-and-rods
property should be set to
ly:spanner::set-spacing-rods
.
\relative c' { \key c\minor \time 2/4 c16( as') c,-. des-. \once\override TrillSpanner.minimum-length = #15 \once\override TrillSpanner.springs-and-rods = #ly:spanner::set-spacing-rods \afterGrace es4 \startTrillSpan { d16[( \stopTrillSpan es)] } c( c' g es c g' es d \hideNotes c8) }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Estendre glissandos sobre repeticions
Es pot simular un glissando que s’estén fins a l’interior de diversos
blocs \alternative
de primera i segona vegada mitjançant
l’addició d’una nota d’adorn oculta amb un glissando al començament de
cada bloc \alternative
. La nota d’adorn ha d’estar a la
mateixa alçada que la nota que dona inici al primer glissando., Això
s’implementa aquí amb una funció musical que agafa com a argument
l’altura de la nota d’adorn.
Observeu que a la música polifònica la nota d’adorn ha de coincidir amb les notes d’adorn corresponents en totes les altres veus.
repeatGliss = #(define-music-function (grace) (ly:pitch?) #{ % the next two lines ensure the glissando is long enough % to be visible \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods \once \override Glissando.minimum-length = #3.5 \once \hideNotes \grace $grace \glissando #}) \score { \relative c'' { \repeat volta 3 { c4 d e f\glissando } \alternative { { g2 d } { \repeatGliss f g2 e } { \repeatGliss f e2 d } } } } music = \relative c' { \voiceOne \repeat volta 2 { g a b c\glissando } \alternative { { d1 } { \repeatGliss c \once \omit StringNumber e1\2 } } } \score { \new StaffGroup << \new Staff << \new Voice { \clef "G_8" \music } >> \new TabStaff << \new TabVoice { \clef "moderntab" \music } >> >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ajustament fi de les línies de pedal
Es pot alterar l’aspecte de les línies de pedal de diverses formes.
\paper { ragged-right = ##f } \relative c'' { c2\sostenutoOn c c2\sostenutoOff c \once \override Staff.PianoPedalBracket.shorten-pair = #'(-7 . -2) c2\sostenutoOn c c2\sostenutoOff c \once \override Staff.PianoPedalBracket.edge-height = #'(0 . 3) c2\sostenutoOn c c2\sostenutoOff c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Flat Ties
The function takes the default Tie.stencil
as an argument,
calculating the result relying on the extents of this default.
Further tweaking is possible by overriding
Tie.details.height-limit
or with \shape
. It’s also
possible to change the custom-definition on the fly.
%% http://lsr.di.unimi.it/LSR/Item?id=1031 #(define ((flared-tie coords) grob) (define (pair-to-list pair) (list (car pair) (cdr pair))) (define (normalize-coords goods x y dir) (map (lambda (coord) ;(coord-scale coord (cons x (* y dir))) (cons (* x (car coord)) (* y dir (cdr coord)))) goods)) (define (my-c-p-s points thick) (make-connected-path-stencil points thick 1.0 1.0 #f #f)) ;; outer let to trigger suicide (let ((sten (ly:tie::print grob))) (if (grob::is-live? grob) (let* ((layout (ly:grob-layout grob)) (line-thickness (ly:output-def-lookup layout 'line-thickness)) (thickness (ly:grob-property grob 'thickness 0.1)) (used-thick (* line-thickness thickness)) (dir (ly:grob-property grob 'direction)) (xex (ly:stencil-extent sten X)) (yex (ly:stencil-extent sten Y)) (lenx (interval-length xex)) (leny (interval-length yex)) (xtrans (car xex)) (ytrans (if (> dir 0)(car yex) (cdr yex))) (uplist (map pair-to-list (normalize-coords coords lenx (* leny 2) dir)))) (ly:stencil-translate (my-c-p-s uplist used-thick) (cons xtrans ytrans))) '()))) #(define flare-tie (flared-tie '((0 . 0)(0.1 . 0.2) (0.9 . 0.2) (1.0 . 0.0)))) \layout { \context { \Voice \override Tie.stencil = #flare-tie } } \paper { ragged-right = ##f } \relative c' { a4~a \override Tie.height-limit = 4 a'4~a a'4~a <a,, c e a c e a c e>~ q \break a'4~a \once \override Tie.details.height-limit = 14 a4~a \break a4~a \once \override Tie.details.height-limit = 0.5 a4~a \break a4~a \shape #'((0 . 0) (0 . 0.4) (0 . 0.4) (0 . 0)) Tie a4~a \break a4~a \once \override Tie.stencil = #(flared-tie '((0 . 0)(0.1 . 0.4) (0.9 . 0.4) (1.0 . 0.0))) a4~a a4~a \once \override Tie.stencil = #(flared-tie '((0 . 0)(0.06 . 0.1) (0.94 . 0.1) (1.0 . 0.0))) a4~a }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Force a cancellation natural before accidentals
The following example shows how to force a natural sign before an accidental.
\relative c' { \key es \major bes c des \tweak Accidental.restore-first ##t eis }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Forçar el desplaçament horitzontal de les notes
Quan el motor de gravat no és capaç de tot, es pot usar la sintaxi següent per sobreescriure les decisions de tipografia. Les unitats de mesura que s’usen aquí són espais de pentagrama.
\relative c' << { <d g>2 <d g> } \\ { <b f'>2 \once \override NoteColumn.force-hshift = #1.7 <b f'>2 } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Diagrames de posicions d’acord, explicats i desenvolupats
Aquest fragment de codi presenta moltes possibilitat per obtenir diagrames de posicions d’acord i com ajustar-los.
<< \chords { a2 a \repeat unfold 3 { c c c d d } } \new Voice = "mel" { \textLengthOn % Set global properties of fret diagram \override TextScript.size = #1.2 \override TextScript.fret-diagram-details.finger-code = #'below-string \override TextScript.fret-diagram-details.dot-color = #'black %% A chord for ukulele a'2^\markup { \override #'(fret-diagram-details . ( (string-count . 4) (dot-color . white) (finger-code . in-dot))) { \fret-diagram "4-2-2;3-1-1;2-o;1-o;" } } %% A chord for ukulele, with formatting defined in definition string % 1.2 * size, 4 strings, 4 frets, fingerings below string % dot radius .35 of fret spacing, dot position 0.55 of fret spacing a'2^\markup { \override #'(fret-diagram-details . ( (dot-color . white) (open-string . "o"))) { \fret-diagram "s:1.2;w:4;h:3;f:2;d:0.35;p:0.55;4-2-2;3-1-1;2-o;1-o;" } } %% These chords will be in normal orientation %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (string-thickness-factor . 0.3) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } % These chords will be in landscape orientation \override TextScript.fret-diagram-details.orientation = #'landscape %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } % These chords will be in opposing-landscape orientation \override TextScript.fret-diagram-details.orientation = #'opposing-landscape %% C major for guitar, barred on third fret % verbose style % roman fret label, finger labels below string, straight barre c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-lower) (finger-code . below-string) (barre-type . straight))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 5 1 3)) } } } %% C major for guitar, barred on third fret %% Double barre used to test barre function % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . arabic) (dot-label-font-mag . 0.9) (finger-code . in-dot) (fret-label-font-mag . 0.6) (fret-label-vertical-offset . 0) (label-dir . -1) (mute-string . "M") (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (place-fret 5 3 1) (place-fret 4 5 2) (place-fret 3 5 3) (place-fret 2 5 4) (place-fret 1 3 1) (barre 4 2 5) (barre 5 1 3)) } } } %% C major for guitar, with capo on third fret % verbose style c'2^\markup { % 110% of default size \override #'(size . 1.1) { \override #'(fret-diagram-details . ( (number-type . roman-upper) (dot-label-font-mag . 0.9) (finger-code . none) (fret-label-vertical-offset . 0.5) (xo-font-magnification . 0.4) (xo-padding . 0.3))) { \fret-diagram-verbose #'((mute 6) (capo 3) (open 5) (place-fret 4 5 1) (place-fret 3 5 2) (place-fret 2 5 3) (open 1)) } } } %% simple D chord d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } %% simple D chord, large top fret thickness d'2^\markup { \override #'(fret-diagram-details . ( (finger-code . below-string) (dot-radius . 0.35) (dot-position . 0.5) (top-fret-thickness . 7) (fret-count . 3))) { \fret-diagram-terse "x;x;o;2-1;3-2;2-3;" } } } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Generar claudàtors personalitzats
La propietat stencil
del grob Flag
(l’objecte gràfic
claudàtor) es pot fixar a un funció de l’Scheme personalitzat que
genera el glif del claudàtor.
#(define-public (weight-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (log (- (ly:grob-property stem-grob 'duration-log) 2)) (is-up? (eqv? (ly:grob-property stem-grob 'direction) UP)) (yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) (stroke-style (ly:grob-property grob 'stroke-style)) (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil))) (ly:stencil-add flag-stencil stroke-stencil))) % Create a flag stencil by looking up the glyph from the font #(define (inverted-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) (flag (retrieve-glyph-flag "" dir "" grob)) (line-thickness (ly:staff-symbol-line-thickness grob)) (stem-thickness (ly:grob-property stem-grob 'thickness)) (stem-width (* line-thickness stem-thickness)) (stroke-style (ly:grob-property grob 'stroke-style)) (stencil (if (null? stroke-style) flag (add-stroke-glyph flag stem-grob dir stroke-style ""))) (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0))) (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0)))) snippetexamplenotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 } { \time 1/4 \textMark "Normal flags" \snippetexamplenotes \textMark "Custom flag: inverted" \override Flag.stencil = #inverted-flag \snippetexamplenotes \textMark "Custom flag: weight" \override Flag.stencil = #weight-flag \snippetexamplenotes \textMark "Revert to normal" \revert Flag.stencil \snippetexamplenotes }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Glissando per sota d’una objecte gràfic
Els objectes gràfics de columna de nota (els grobs NoteColumn
)
poder ser sobrepassats pels glissandos.
\relative c' { a2 \glissando \once \override NoteColumn.glissando-skip = ##t f''4 d, }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Reguladors amb diferents estils de línia
Els reguladors poden imprimir-se en qualsevol dels estils de
line-interface
: discontinu, puntejat, línia, tri o zig-zag.
\relative c' { c2\< c\! \override Hairpin.style = #'dashed-line c2\< c\! \override Hairpin.style = #'dotted-line c2\< c\! \override Hairpin.style = #'line c2\< c\! \override Hairpin.style = #'trill c2\< c\! \override Hairpin.style = #'zigzag c2\< c\! \revert Hairpin.style c2\< c\! }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Alinear horitzontalment indicacions dinàmiques personalitzades (per exemple "sempre pp""piu f""subito p")
Algunes expressions de matís dinàmic porten text addicional, com "sempre pp". Considerant que els matisos solen anar centrats sota la nota, el \p s’imprimiria molt després de la nota a la qual s’aplica el matís.
Per alinear correctament el "sempre pp" en sentit horitzontal, de manera que s’alineï com si estigués solament el \pp, hi h a diversos enfocaments:
* Senzillament usar \once\override DynamicText.X-offset =
#-9.2
abans de la nota que porta el matís, per desplaçar-lo
manualment a la posició correcta. Inconvenient: cal fer-ho
manualment cada cop que usem aquesta indicació dinàmica.
* Afegir una mica de farciment (#:hspace 7.1
) dins de la
definició de la nostra indicació dinàmica personalitzada, de forma
que després que el LilyPond l’hagi centrat, ja estigui alineada
correctament. Inconvenient: el farciment realment ocupa aquest
espai i no permet que es gravi cap altre element de marcatge o
matís dinàmic en aquesta posició.
* Desplaçar la inscripció dinàmica \once\override ... .X-offset = ..
.
Inconvenient: ¡cal \once\override
per a cada una de les invocacions!
* Fixar les dimensions del text addicional a zero (usant
#:with-dimensions '(0 . 0) '(0 . 0)
). Inconvenient: per al
LilyPond "sempre" no té dimensions, per la qual cosa podria
gravar altres elements en el seu mateix lloc i produir col·lisions
(que no serien advertides pel mecanisme de detecció de
col·lisions). Així mateix, aparentment hi ha algun espai, i per
tant no és exactament la mateixa alineació que sense el text addicional.
* Afegir un desplaçament explicit directament dins de la funció de l’Scheme que produeix l’element dynamic-script.
* Fixar una alineació explícita dins del dynamic-script. De forma
predeterminada, això no tindria cap efecte, a no ser que fixéssim
un valor per a X-offset. Inconvenient: hem de donar un valor a
DynamicText.X-offset
que s’aplicaria a tots els textos de
dinàmica. A més a més, s’alinea amb l’extrem dret del text
addicional, no amb el centre del pp.
\paper { ragged-right = ##f indent = 2.5\cm } % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown % etc. will have no effect semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } % Solution 2: Using a dynamic script & shifting with % \once \override ...X-offset = .. % Drawback: \once \override needed for every invocation semppK = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 3: Padding the dynamic script so the center-alignment % puts it at the correct position % Drawback: the padding really reserves the space, nothing else can be there semppT = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp" #:hspace 7.1))) % Solution 4: Dynamic, setting the dimensions of the additional text to 0 % Drawback: To lilypond "sempre" has no extent, so it might put % other stuff there => collisions % Drawback: Also, there seems to be some spacing, so it's not exactly the % same alignment as without the additional text semppM = #(make-dynamic-script (markup #:line (#:with-dimensions '(0 . 0) '(0 . 0) #:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 5: Dynamic with explicit shifting inside the scheme function semppG = #(make-dynamic-script (markup #:hspace 0 #:translate '(-18.85 . 0) #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 6: Dynamic with explicit alignment. This has only effect % if one sets X-offset! % Drawback: One needs to set DynamicText.X-offset! % Drawback: Aligned at the right edge of the additional text, % not at the center of pp semppMII = #(make-dynamic-script (markup #:line (#:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) \new StaffGroup << \new Staff = "s" \with { instrumentName = \markup \column { Normal } } << \relative c'' { \key es \major c4\pp c\p c c | c\ff c c\pp c } >> \new Staff = "sMarkup" \with { instrumentName = \markup \column { Normal markup } } << \relative c'' { \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> \new Staff = "sK" \with { instrumentName = \markup \column { Explicit shifting } } << \relative c'' { \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c c4\ff c \once \override DynamicText.X-offset = #-9.2 c4\semppK c } >> \new Staff = "sT" \with { instrumentName = \markup \column { Right padding } } << \relative c'' { \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> \new Staff = "sM" \with { instrumentName = \markup \column { Set dimension "to zero" } } << \relative c'' { \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> \new Staff = "sG" \with { instrumentName = \markup \column { Shift inside dynamics} } << \relative c'' { \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> \new Staff = "sMII" \with { instrumentName = \markup \column { Alignment inside dynamics } } << \relative c'' { \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 c4\semppMII c\p c c | c\ff c c\semppMII c } >> >> \layout { \override Staff.InstrumentName.self-alignment-X = #LEFT }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Com canviar la posició d’un diagrama de posicions
Si volem moure un diagrama de posicions d’acord, per exemple, per evitar una col·lisió, o situar-lo entre dues notes, tenim diverses possibilitats:
1) modificar els valors de farciment #’padding o del desplaçament addicional #’extra-offset (como es mostra en el primer exemple)
2) podem afegir una veu invisible i adjuntar els diagrames de posicions a les notes invisibles d’aquesta veu (com es veu en el segon exemple).
Si hem de moure el diagrama segons una posició rítmica dins del compàs (a l’exemple, la tercera part del compàs) és millor el segon exemple, perquè el diagrama s’alinea amb la tercera pulsació per si sol
harmonies = \chordmode { a8:13 % THE FOLLOWING IS THE COMMAND TO MOVE THE CHORD NAME \once \override ChordNames.ChordName.extra-offset = #'(10 . 0) b8:13 s2. % THIS LINE IS THE SECOND METHOD s4 s4 b4:13 } \score { << \new ChordNames \harmonies \new Staff {a8^\markup { \fret-diagram "6-x;5-0;4-2;3-0;2-0;1-2;" } % THE FOLLOWING IS THE COMMAND TO MOVE THE FRET DIAGRAM \once \override TextScript.extra-offset = #'(10 . 0) b4.~^\markup { \fret-diagram "6-x;5-2;4-4;3-2;2-2;1-4;" } b4. a8\break % HERE IS THE SECOND METHOD << { a8 b4.~ b4. a8} { s4 s4 s4^\markup { \fret-diagram "6-x;5-2;4-4;3-2;2-2;1-4;" } } >> } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Inserir una cesura
Les marques de cesura es poden crear sobreescrivint la propietat
'text
de l’objecte BreathingSign
. També està
disponible una marca de cesura corba.
\relative c'' { \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.straight" } c8 e4. \breathe g8. e16 c4 \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } g8 e'4. \breathe g8. e16 c4 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Mantenir la mida del símbol en els canvis de clau
Quan es produeix un canvi de clau, el símbol de clau s’imprimeix a
una mida més petita que la clau inicial. Això es pot ajustar amb
full-size-change
.
\relative c' { \clef "treble" c1 \clef "bass" c1 \clef "treble" c1 \override Staff.Clef.full-size-change = ##t \clef "bass" c1 \clef "treble" c1 \revert Staff.Clef.full-size-change \clef "bass" c1 \clef "treble" c1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Puntes de fletxa per a les línies
Es poden aplicar puntes de fletxa als elements d’extensió de text i de línia (com el Glissando).
\relative c'' { \override TextSpanner.bound-padding = #1.0 \override TextSpanner.style = #'line \override TextSpanner.bound-details.right.arrow = ##t \override TextSpanner.bound-details.left.text = #"fof" \override TextSpanner.bound-details.right.text = #"gag" \override TextSpanner.bound-details.right.padding = #0.6 \override TextSpanner.bound-details.right.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override Glissando.bound-details.right.arrow = ##t \override Glissando.arrow-length = #0.5 \override Glissando.arrow-width = #0.25 a8\startTextSpan gis a4 b\glissando b, g'4 c\stopTextSpan c2 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Fer invisible un objecte amb la propietat ’transparent
Si s’ajusta la propietat transparent
d’un objecte,
s’imprimeix en “tinta invisible”: l’objecte no s’imprimeix però
es retenen tots els seus altres comportaments. L’objecte encara
ocupa espai, participa en les col·lisions i se li poden afegir
lligadures d’expressió, lligadures d’unió i barres de corxera.
Aquest fragment de codi mostra com connectar diferents veus usant lligadures d’únió. Normalment les lligadures d’unió sols connecten dues notes que estiguin a la mateixa veu. Mitjançant la introducció d’una lligadura en una veu diferent i pintant de color blanc la primera plica cap a amunt dins d’aquesta veu, la lligadura sembla creuar d’una veu a l’altra.
\relative { \time 2/4 << { \once \hide Stem \once \override Stem.length = #8 b'8 ~ 8\noBeam \once \hide Stem \once \override Stem.length = #8 g8 ~ 8\noBeam } \\ { b8 g g e } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Making glissandi breakable
Si s’ajusta la propietat breakable
al valor #t
en
combinació amb after-line-breaking
, podem fer que un
glissando es divideixi en el salt de línia:
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } \relative c'' { \override Glissando.breakable = ##t \override Glissando.after-line-breaking = ##t f1\glissando | \break a4 r2. | f1\glissando \once \glissandoSkipOn \break a2 a4 r4 | }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Control manual de les posicions de les barres
Es poden controlar manualment les posicions de les barres de
corxera sobreescrivint el valor del paràmetre positions
de
l’objecte gràfic Beam
.
\relative c' { \time 2/4 % from upper staff-line (position 2) to center (position 0) \override Beam.positions = #'(2 . 0) c8 c % from center to one above center (position 1) \override Beam.positions = #'(0 . 1) c8 c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Measure-centered bar numbers
For film scores, a common convention is to center bar
numbers within their measure. This is achieved through setting
the centerBarNumbers
context property to true. When this
is used, the type of the bar number grobs is CenteredBarNumber
rather than BarNumber
.
This example demonstrates a number of settings: the centered bar numbers are boxed and placed below the staves.
\layout { \context { \Score centerBarNumbers = ##t barNumberVisibility = #all-bar-numbers-visible \override CenteredBarNumber.stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print) \override CenteredBarNumberLineSpanner.direction = #DOWN } } \new StaffGroup << \new Staff \relative c' { d4-. f8( e d4) bes'-> | d,-. f8( e d4) cis'-> | g-. f8( d e4) g-> | a,1-> | } \new Staff \relative c { \clef bass d4 f8 e d2~ | 4 f8 e d2~ | 4 4 2 | a1 | } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Disposició Mensurstriche (línies divisòries entre pentagrames)
La disposició «mensurstriche» en els quals les línies divisòries
no estan dibuixades sobre els pentagrames, sinó entre ells, es pot
aconseguir amb un StaffGroup
en comptes d’un ChoirStaff
.
La línia divisòria sobre els pentagrames s’esborra usant \hide
.
\layout { \context { \Staff measureBarType = "-span|" } } music = \fixed c'' { c1 d2 \section e2 f1 \fine } \new StaffGroup << \new Staff \music \new Staff \music >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modifying the Ottava spanner slope
It is possible to change the slope of the Ottava spanner.
\relative c'' { \override Staff.OttavaBracket.stencil = #ly:line-spanner::print \override Staff.OttavaBracket.bound-details = #`((left . ((Y . 0) (attach-dir . ,LEFT) (padding . 0) (stencil-align-dir-y . ,CENTER))) (right . ((Y . 5.0) ; Change the number here (padding . 0) (attach-dir . ,RIGHT) (text . ,(make-draw-dashed-line-markup (cons 0 -1.2)))))) \override Staff.OttavaBracket.left-bound-info = #ly:horizontal-line-spanner::calc-left-bound-info-and-text \override Staff.OttavaBracket.right-bound-info = #ly:horizontal-line-spanner::calc-right-bound-info \ottava #1 c1 c'''1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Desplaçament de les notes amb puntet en polifonia
Quan una nota amb puntet a la veu superior es mou per evitar la
col·lisió amb una nota de una altra veu, el comportament
predeterminat és desplaçar la nota superior a la dreta. Es pot
canviar usant la propietat prefer-dotted-right
de
NoteCollision
.
\new Staff \relative c' << { f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##f f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##t f2. f4 } \\ { e4 e e e e e e e e e e e } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Desplaçament de les lligadures d’expressió verticalment
Es pot ajustar la posició vertical d’una lligadura d’expressió
utilitzant la propietat positions
de l’objecte
Slur
. La propietat de dos paràmetres, on el primer es
refereix a l’extrem esquerre de la lligadura i el segon al dret.
Els valors dels paràmetres no s’utilitzen per part del LilyPond
per produir un desplaçament exacte de la lligadura: més bé
selecciona la col·locació que té un aspecte millor, tenint en
compte els valors dels paràmetres. Els valors positius desplacen
la lligadura cap amunt, i són adequats a notes que tenen les
pliques cap avall. Els valors negatius desplacen les lligadures
baixes encara més cap avall.
\relative c' { \stemDown e4( a) \override Slur.positions = #'(1 . 1) e4( a) \override Slur.positions = #'(2 . 2) e4( a) \override Slur.positions = #'(3 . 3) e4( a) \override Slur.positions = #'(4 . 4) e4( a) \override Slur.positions = #'(5 . 5) e4( a) \override Slur.positions = #'(0 . 5) e4( a) \override Slur.positions = #'(5 . 0) e4( a) \stemUp \override Slur.positions = #'(-5 . -5) e4( a) \stemDown \revert Slur.positions e4( a) }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Niuat de grups de pentagrames
Es pot utilitzar la propietat
systemStartDelimiterHierarchy
per crear grups de
pentagrames niuats de forma més complexa. L’ordre
\set StaffGroup.systemStartDelimiterHierarchy
pren una
llista alfabètic del nombre de pentagrames produïts. Es pot
proporcionar abans de cada pentagrama un delimitador de
començament del sistema. Es pot envoltar entre corxets i admetre
tants pentagrames com envoltin els corxets. Es poden ometre els
elements de la llista, però el primer corxet sempre abasta tots
els pentagrames. Les possibilitat són SystemStartBar
,
SystemStartBracket
, SystemStartBrace
SystemStartSquare
.
\new StaffGroup \relative c'' << \override StaffGroup.SystemStartSquare.collapse-height = #4 \set StaffGroup.systemStartDelimiterHierarchy = #'(SystemStartSquare (SystemStartBrace (SystemStartBracket a (SystemStartSquare b) ) c ) d) \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } \new Staff { c1 } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Modificació d’articulacions de diversos tipus
A vegades volem modificar un sol temps d’articulació. Tot i que
sempre és possible usar l’ordre \tweak
, podria fer-se tediós
fer-lo per a tots i cada un dels símbols d’una partitura completa.
L’exemple mostra com ajustar articulacions amb una llista
d’ajustaments personalitzats. Un cas seria la creació d’un full d’estils.
Amb 2.16.2 és possible introduir la funció proposada,
\customScripts
, en un bloc \layout
.
% Code by David Nalesnik and Thomas Morley #(define (custom-script-tweaks ls) (lambda (grob) (let* ((type (ly:event-property (ly:grob-property grob 'cause) 'articulation-type)) (tweaks (assoc-ref ls type))) (if tweaks (for-each (lambda (x) (ly:grob-set-property! grob (car x) (cdr x))) tweaks))))) customScripts = #(define-music-function (settings) (list?) #{ \override Script.before-line-breaking = #(custom-script-tweaks settings) #}) revertCustomScripts = \revert Script.before-line-breaking %%%%%%%%%%%%% % Example: %%%%%%%%%%%%% % Predefine a list of desired tweaks. #(define my-settings-1 '( (staccato . ((color . (1 0 0)) (padding . 0.5))) (accent . ((font-size . 0) (color . (1 0 0)))) (tenuto . ((rotation . (45 0 0)) (padding . 2) (font-size . 10))) (staccatissimo . ((padding . 1) (color . (1 0 0)))) (segno . ((font-size . 0) (color . (1 0 0)))) )) #(define my-settings-2 '( (staccato . ((color . (0 1 0)))) (accent . ((font-size . 4) (color . (0 1 0)) (padding . 1.5))) (tenuto . ((font-size . 10))) (staccatissimo . ((padding . 2) (color . (0 1 0)))) (coda . ((color . (0 1 0)) (padding . 1))) )) one = \relative c'' { f1-- \customScripts #my-settings-1 f-. f-! f-> f-- f-!\segno \revertCustomScripts f-> f-. } two = \relative c' { f1-- \customScripts #my-settings-2 f-. f-! f-> f---> f-! f-> f-.\coda } \new Staff << \new Voice { \voiceOne \one } \new Voice { \voiceTwo \two } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Overriding articulations of distinct type
Sometimes you may want to affect a single articulation type. Although
it is always possible to use \tweak
, it might become tedious to
do so for every single sign of a whole score. The following shows how
to tweak articulations with a list of custom settings. One use case
might be to create a style sheet.
With 2.16.2 it is possible to put the proposed function,
\customScripts
, into a \layout
block.
% Code by David Nalesnik and Thomas Morley #(define (custom-script-tweaks ls) (lambda (grob) (let* ((type (ly:prob-property (ly:grob-property grob 'cause) 'articulation-type)) (tweaks (assoc-ref ls type))) (if tweaks (for-each (lambda (x) (ly:grob-set-property! grob (car x) (cdr x))) tweaks))))) customScripts = #(define-music-function (settings)(list?) #{ \override Script.before-line-breaking = #(custom-script-tweaks settings) #}) revertCustomScripts = { \revert Script.before-line-breaking } %%%%%%%%%%%%% % Example: %%%%%%%%%%%%% % Predefine a list of desired tweaks. #(define my-settings-1 '( ("staccato" . ((color . (1 0 0))(padding . 0.5))) ("accent" . ((font-size . 0)(color . (1 0 0)))) ("tenuto" . ((rotation . (45 0 0)) (padding . 2)(font-size . 10))) ("staccatissimo" . ((padding . 1) (color . (1 0 0)))) ("segno" . ((font-size . 0)(color . (1 0 0)))) )) #(define my-settings-2 '( ("staccato" . ((color . (0 1 0)))) ("accent" . ((font-size . 4)(color . (0 1 0))(padding . 1.5))) ("tenuto" . ((font-size . 10))) ("staccatissimo" . ((padding . 2) (color . (0 1 0)))) ("coda" . ((color . (0 1 0)) (padding . 1))) )) one = \relative c'' { f1-- \customScripts #my-settings-1 f-. f-! f-> f-- f-!\segno \revertCustomScripts f-> f-. } two = \relative c' { f1-- \customScripts #my-settings-2 f-. f-! f-> f---> f-! f-> f-.\coda } \new Staff << \new Voice { \voiceOne \one } \new Voice { \voiceTwo \two } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Visibilitat del comptador de repeticions de tipus percentatge
Es poden mostrar els comptadors de les repeticions del tipus
percentatge a intervals regulars mitjançant l’establiment de la
propietat de context repeatCountVisibility
.
\relative c'' { \set countPercentRepeats = ##t \set repeatCountVisibility = #(every-nth-repeat-count-visible 5) \repeat percent 10 { c1 } \break \set repeatCountVisibility = #(every-nth-repeat-count-visible 2) \repeat percent 6 { c1 d1 } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Posicionar símbols d’arpegi
Si cal fer més llargs o més curts un símbol d’arpegi, es pot modificar independentment els extrems superior i inferior.
\relative c' { <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 0) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(0 . 5) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 5) <c e g b>1\arpeggio }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Posicionar els silencis multicompàs
A diferència dels silencis normals, no existeix una ordre predefinida per modificar la posició predeterminada d’un símbol de silenci multicompàs sobre el pentagrama, adjuntant-lo a una nota, independentment de quin sigui la seva forma. No obstant, en la música polifònica els silencis multicompàs de les veus de numeració parell i imparell estan separats verticalment. La col·locació dels silencis multicompàs es pot controlar com es ve a continuació:
\relative c'' { % Multi-measure rests by default are set under the fourth line R1 % They can be moved using an override \override MultiMeasureRest.staff-position = #-2 R1 \override MultiMeasureRest.staff-position = #0 R1 \override MultiMeasureRest.staff-position = #2 R1 \override MultiMeasureRest.staff-position = #3 R1 \override MultiMeasureRest.staff-position = #6 R1 \revert MultiMeasureRest.staff-position \break % In two Voices, odd-numbered voices are under the top line << { R1 } \\ { a1 } >> % Even-numbered voices are under the bottom line << { a1 } \\ { R1 } >> % Multi-measure rests in both voices remain separate << { R1 } \\ { R1 } >> % Separating multi-measure rests in more than two voices % requires an override << { R1 } \\ { R1 } \\ \once \override MultiMeasureRest.staff-position = #0 { R1 } >> % Using compressed bars in multiple voices requires another override % in all voices to avoid multiple instances being printed \compressMMRests << \revert MultiMeasureRest.direction { R1*3 } \\ \revert MultiMeasureRest.direction { R1*3 } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Situar els elements de marcatge de text por dins de les lligadures
Els elements de marcatge de text han de tenir la propietat
outside-staff-priority
establerta al valor fals perquè
s’imprimeixin per dins de les lligadures d’expressió.
\relative c'' { \override TextScript.avoid-slur = #'inside \override TextScript.outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Impressió de nombre de compàs dins de rectangles o circumferències
Els nombres de compàs també es poden imprimir dins de rectangles o de circumferències.
\relative c' { % Prevent bar numbers at the end of a line and permit them elsewhere \override Score.BarNumber.break-visibility = #end-of-line-invisible \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4) % Increase the size of the bar number by 2 \override Score.BarNumber.font-size = #2 % Draw a box round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print) \repeat unfold 5 { c1 } % Draw a circle round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) \repeat unfold 4 { c1 } \bar "|." }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Impressió d’indicacions de metrònom i lletres d’assaig a sota del pentagrama
De forma predeterminada, les indicacions de metrònom i les lletres
d’assaig s’imprimeixen a sobre del pentagrama. Per col·locar-les a
sota del pentagrama, simplement ajustem adequadament la propietat
direction
de MetronomeMark
o de RehearsalMark
.
\layout { indent = 0 ragged-right = ##f } { % Metronome marks below the staff \override Score.MetronomeMark.direction = #DOWN \tempo 8. = 120 c''1 % Rehearsal marks below the staff \override Score.RehearsalMark.direction = #DOWN \mark \default c''1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Impressió dels noms de les notes amb o sense indicació de l’octava
Es pot usar el context NoteNames
per imprimir el valor textual
de les notes. La propietat printOctaveNames
activa o desactiva
la representació de l’octava de les notes.
scale = \relative c' { a4 b c d e4 f g a } \new Staff { << \scale \context NoteNames { \set printOctaveNames = ##f \scale } >> R1 << \scale \context NoteNames { \set printOctaveNames = ##t \scale } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Printing tuplet brackets on the note head side
Whichever option you choose for controlling the tuplet bracket
visibility, it will show or hide the tuplet bracket irrespectively
of tuplet bracket placement (stem side or note head side).
However, when placing the tuplet bracket on the note head side some
authors recommend always printing the tuplet bracket. The option
visible-over-note-heads
can be used to achieve this.
music = \relative c'' { \tupletNeutral \tuplet 3/2 { c16[ d e } f8] \tupletUp \tuplet 3/2 { c8 d e } } \new Voice { \relative c' { \time 2/4 \override TupletBracket.visible-over-note-heads = ##t \override Score.TextMark.non-musical = ##f { \textMark \markup "default" \music } \override TupletBracket.bracket-visibility = #'if-no-beam { \textMark \markup \typewriter "'if-no-beam" \music } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Espaiat de les notes estrictament proporcional
Si s’ha establert strict-note-spacing
, l’espaiat de les notes
no es veu influït pels compassos o claus que pugui haver-hi dins d’un
sistema. En comptes d’això, es col·loquen just abans de la nota que
té lloc en el mateix moment temporal. Això pot produir col·lisions.
\relative c'' << \override Score.SpacingSpanner.strict-note-spacing = ##t \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) \new Staff { c8[ c \clef alto c c \grace { d16 } c8 c] c4 c2 \grace { c16[ c16] } c2 } \new Staff { c2 \tuplet 3/2 { c8 \clef bass cis,, c } c4 c1 } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Removing brace on first line of piano score
This snippet removes the first brace from a PianoStaff
or a
GrandStaff
.
It may be useful when cutting and pasting the engraved image into existing music.
It uses \alterBroken
.
someMusic = { \once \override Staff.Clef.stencil = ##f \once \override Staff.TimeSignature.stencil = ##f \repeat unfold 3 c1 \break \repeat unfold 5 c1 \break \repeat unfold 5 c1 } \score { \new PianoStaff << \new Staff = "right" \relative c'' \someMusic \new Staff = "left" \relative c' { \clef F \someMusic } >> \layout { indent=75 \context { \PianoStaff \alterBroken transparent #'(#t) SystemStartBrace } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Treure les barres de compàs entre els pentagrames d’un StaffGroup PianoStaff o GrandStaff
De forma predeterminada, les línies divisòries als grups StaffGroup, PianoStaff o GrandStaff es connecten entre els pentagrames. Es pot alterar aquest comportament pentagrama a pentagrama.
\relative c' { \new StaffGroup << \new Staff { e1 | e \once \override Staff.BarLine.allow-span-bar = ##f e1 | e | e } \new Staff { c1 | c | c \once \override Staff.BarLine.allow-span-bar = ##f c1 | c } \new Staff { a1 | a | a | a | a } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Supressió de la primera línia buida
El primer pentagrama buit també es pot suprimir de la partitura
establint la propietat remove-first
de
VerticalAxisGroup
. Això es pot fer globalment dins del bloc
\layout
, o localment dins del pentagrama concret que es vol
suprimir. En aquest últim cas, hem d’especificar el contex
(Staff
s’aplica sols al pentagrama actual) davant de la
propietat.
El pentagrama inferior del segon grup no s’elimina, perquè l’ajustament sols s’aplica al pentagraa concret dins del que s’escriu.
\layout { \context { \Staff \RemoveEmptyStaves % To use the setting globally, uncomment the following line: % \override VerticalAxisGroup.remove-first = ##t } } \new StaffGroup << \new Staff \relative c' { e4 f g a \break c1 } \new Staff { % To use the setting globally, comment this line, % uncomment the line in the \layout block above \override Staff.VerticalAxisGroup.remove-first = ##t R1 \break R } >> \new StaffGroup << \new Staff \relative c' { e4 f g a \break c1 } \new Staff { R1 \break R } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Estils de silencis
Els silencis es poden imprimir en diferents estils.
\new Staff \relative c { \omit Score.TimeSignature \cadenzaOn \override Staff.Rest.style = #'mensural r\maxima^\markup \typewriter { mensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'neomensural r\maxima^\markup \typewriter { neomensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'classical r\maxima^\markup \typewriter { classical } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'z r\maxima^\markup \typewriter { z-style } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'default r\maxima^\markup \typewriter { default } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Barres rítmiques
Als fulls guia d’acords o fulls guia “senzilles”, a vegades no
s’imprimeix realment cap nota, i en el seu lloc es fa una notació
que té sols “patrons rítmics” i acords a sobre dels compassos,
donant l’estructura de la cançó. Aquesta funcionalitat és útil, per
exemple, en crear o transcriure l’estructura d’una cançó i també
si es volen compartir els fulls guia amb guitarristes o músics de
jazz. La forma estàndard en la qual hi ha suport per a aquesta
modalitat usant \repeat percent
no és adequada aquí perquè
el primer compàs hauria de ser una nota o silenci normals. Aquest
exemple mostra dues solucions al problema, redefinint els silencis
normals perquè s’imprimeixin com a barres inclinades (si la duració
de cada pols no és una negra, substituirem el r4
que apareix
a les definicions amb un silenci de la duració adequada).
% Macro to print single slash rs = { \once \override Rest.stencil = #ly:percent-repeat-interface::beat-slash \once \override Rest.thickness = #0.48 \once \override Rest.slope = #1.7 r4 } % Function to print a specified number of slashes comp = #(define-music-function (count) (integer?) #{ \override Rest.stencil = #ly:percent-repeat-interface::beat-slash \override Rest.thickness = #0.48 \override Rest.slope = #1.7 \repeat unfold $count { r4 } \revert Rest.stencil #} ) \score { \relative c' { c4 d e f | \rs \rs \rs \rs | \comp #4 | } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Separar les cancel·lacions de tonalitat dels canvis d’armadura
De forma predeterminada, les alteracions accidentals que s’usen
per a les cancel·lacions a les armadures es col·loquen adjacents
a les que s’usen per als canvis de tonalitat. Aquest comportament
es pot canviar sobreescrivint la propietat 'break-align-orders
de l’objecte gràfic BreakAlignment
.
El valor de 'break-align-orders
és un vector de longitud 3, amb
llistes entre cometes els elements de les quals són objectes que
es poden dividir en un salt. Aquest exemple sols modifica la
segona llista, movent key-cancellation
abans de staff-bar
;
modificant la segona llista, el comportament d’alineació dels
salts canvia en la meitat d’un sistema, no al principi ni al final.
\new Staff { \override Score.BreakAlignment.break-align-orders = ##((left-edge ambitus breathing-sign clef staff-bar key-cancellation key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation staff-bar key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos)) \key des \major c'1 \bar "||" \key bes \major c'1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Establir el comportament dels reguladors a les barres de compàs
Si la nota que acaba un regulador cau sobre la primera part d’un
compàs, el regulador s’atura en la línia divisòria immediatament
precedent. Es pot controlar aquest comportament sobreescrivint la
propietat 'to-barline
.
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Fixació d’un separador entre els sistemes
Es poden inserir separadors de sistema entre els sistemes d’una pàgina.
Es pot usar qualsevol element de marcatge, però hi ha
\slashSeparator
com una elecció predeterminada adequada.
\paper { system-separator-markup = \slashSeparator line-width = 120 } notes = \relative c' { c1 | c \break c1 | c \break c1 | c } \book { \score { \new GrandStaff << \new Staff \notes \new Staff \notes >> } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Impressió de la mateixa articulació a sobre i a sota de la mateixa nota o acord
De forma predeterminada, el LilyPond no permet posar la mateixa
articulació (per exemple un accent, un calderó, un cercle d’harmònic,
etc.) a sobre i a sota de la nota. Per exemple, c4_\fermata^\fermata
imprimeix sols el calderó inferior. El calderó superior senzillament
s’ignora. No obstant, es poden adjuntar inscripcions (de igual forma
que les digitacions) dins d’un acord, soca que significa que és
possible tenir tantes articulacions com es vulgui. Aquest enfocament
té l’avantatge que ignora la plica i posiciona l’articulació de
forma relativa al cap de la nota. Pot veure’s això en el cas dels
flageolets (indicacions d’harmònic)) que apareixen en el fragment
de codi. Per recrear el comportament de les inscripcions fora de
l’acord, es requereix ’add-stem-support. D’aquesta manera la
solució consisteix en escriure la nota com un acord i afegir les
articulacions dins dels parèntesis en angle <...>. La direcció
sempre serà cap a dalt, però podem retocar això per mitjà d’una
ordre \tweak: <c-\tweak direcció #DOWN-\fermata^\fermata>
\relative c' { <>^"Wrong" c2_\fermata^\fermata % The second fermata is ignored! <e d'>2^\flageolet_\flageolet \stopStaff s1 \startStaff <>^"Works if written inside a chord" <e_\flageolet d'^\flageolet>2 <e_\flageolet d'^\flageolet>2 <e_\flageolet^\flageolet>2 <e_\fermata^\fermata>2 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Línies d’extensió per a nombre de corda
Fem una línia extensora per a les indicacions de nombre de corda, mostrant que una sèrie de notes s’han de tocar sobre la mateixa corda.
stringNumberSpanner = #(define-music-function (StringNumber) (string?) #{ \override TextSpanner.style = #'solid \override TextSpanner.font-size = #-5 \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.text = \markup { \circle \number $StringNumber } #}) \relative c { \clef "treble_8" \stringNumberSpanner "5" \textSpannerDown a8\startTextSpan b c d e f\stopTextSpan \stringNumberSpanner "4" g\startTextSpan a bes4 a g2\stopTextSpan }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Evitar els advertiments sobre columnes de notes que xoquen
Si es col·loquen sobre la mateixa posició notes de dues veus diferents
amb les pliques en la mateixa direcció, i cap de les veus té un
desplaçament o ambdues tenen el mateix desplaçament, apareix el
missatge d’error ‘advertiment: massa columnes de notes en
col·lisió, s'ignora’ en compilar el fitxer del LilyPond. Aquest
missatge es pot evitar fixant la propietat 'ignore-collision
de l’objecte NoteColumn
al valor #t
. Observeu que
això no elimina sols els advertiments, sinó que fa que el LilyPond
deixi d’intentar resoldre les col·lisions en absolut, per la qual
cosa poden obtenir-se resultats diferents dels esperats si no
s’usa amb prudència.
ignore = \override NoteColumn.ignore-collision = ##t \relative c' { \new Staff << \new Voice { \ignore \stemDown f2 g } \new Voice { c2 \stemDown c, } >> }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Compàs entre parèntesis
La indicació de compàs pot envoltar-se entre parèntesi.
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1)) \time 2/4 a4 b8 c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Indicació de compàs entre parèntesis: mètode número 3
Una altra forma de posar la indicació de comàs entre parèntesis.
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (parenthesize-stencil (ly:time-signature::print grob) 0.1 0.4 0.4 0.1 )) \time 2/4 a4 b8 c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Indicació de compàs imprimint sols el numerador (en lloc de la fracció)
A vegades, la indicació de compàs no ha d’imprimir la fracció
completa (per exemple 7/4), sinó sols el numerador (7 en aquest
cas). Això es pot fer fàcilment utilitzant \override
Staff.TimeSignature.style = #'single-digit
per canviar l’estil
permanentment. Usant \revert Staff.TimeSignature.style
,
es pot revertir el canvi. Per aplicar l’estil d’un dígit únic a
una sola indicació de compàs, utilitzeu l’ordre \override
i anteposeu l’ordre \once
.
\relative c'' { \time 3/4 c4 c c % Change the style permanently \override Staff.TimeSignature.style = #'single-digit \time 2/4 c4 c \time 3/4 c4 c c % Revert to default style: \revert Staff.TimeSignature.style \time 2/4 c4 c % single-digit style only for the next time signature \once \override Staff.TimeSignature.style = #'single-digit \time 5/4 c4 c c c c \time 2/4 c4 c }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Tuplet bracket and change staff
This snippet shows how to set a tuplet starting in a lower staff and finishing in the upper one.
aigues = \relative c' { \time 6/8 s4. \stemDown c16[ bes' e] \stemUp g c e \stemDown g8 } basses = \relative c { \time 3/4 \clef F \tweak positions #'(4.5 . 9.5) \tweak edge-height #'(1 . -1) \tuplet 7/6 { c16[ bes' e] \change Staff = md \stemUp g[ c e g] } s4.s8 } \new PianoStaff \with { \omit TimeSignature } << \new Staff = md \aigues \new Staff = mg \basses >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ajustament de les propietats de clau
La modificació del glif de la clau, la seva posició o octava, no
canvien ’per se’ la posició de les notes següents del
pentagrama. Per aconseguir armadures adequades de tonalitat sobre
les línies del pentagrama, s’ha d’especificar també
middleCClefPosition
, amb valor positius o negatius que
moguin Do central
cap amunt o cap avall, respectivament, en
relació amb la línia central del pentagrama (usualment la
tercera).
Per exemple, l’ordre \clef "treble_8"
equival a un
ajustament de clefGlyph
, clefPosition
(que controla
la posició vertical de la clau sobre el pentagrama),
middleCPosition
i clefTransposition
. Se imprimeix
la clau cada cop que es modifica qualsevol de les propietats
excepte middleCPosition
.
Els exemple següents mostren les possibilitats quan s’ajusten aquestes propietats manualment. En la primera línia, els canvis manuals preserven la posició relativa estàndard de les clau i les notes, però no ho fan a la segona línia.
{ % The default treble clef \key f \major c'1 % The standard bass clef \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 \set Staff.middleCPosition = #6 \set Staff.middleCClefPosition = #6 \key g \major c'1 % The baritone clef \set Staff.clefGlyph = #"clefs.C" \set Staff.clefPosition = #4 \set Staff.middleCPosition = #4 \set Staff.middleCClefPosition = #4 \key f \major c'1 % The standard choral tenor clef \set Staff.clefGlyph = #"clefs.G" \set Staff.clefPosition = #-2 \set Staff.clefTransposition = #-7 \set Staff.middleCPosition = #1 \set Staff.middleCClefPosition = #1 \key f \major c'1 % A non-standard clef \set Staff.clefPosition = #0 \set Staff.clefTransposition = #0 \set Staff.middleCPosition = #-4 \set Staff.middleCClefPosition = #-4 \key g \major c'1 \break % The following clef changes do not preserve % the normal relationship between notes, key signatures % and clefs: \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 c'1 \set Staff.clefGlyph = #"clefs.G" c'1 \set Staff.clefGlyph = #"clefs.C" c'1 \set Staff.clefTransposition = #7 c'1 \set Staff.clefTransposition = #0 \set Staff.clefPosition = #0 c'1 % Return to the normal clef: \set Staff.middleCPosition = #0 c'1 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ajustament de la disposició de les notes d’adorn dins de la música
La disposició de les expressions d’adorn es pot canviar al llarg
de tota la música usant les funcions add-grace-property
i
remove-grace-property
. L’exemple següent esborra la
definició de la direcció de la plica per a aquest nota d’adorn, de
manera que les pliques no sempre apunten cap a dalt, i canvia la
forma predeterminada dels caps a aspes.
\relative c'' { \new Staff { $(remove-grace-property 'Voice 'Stem 'direction) $(add-grace-property 'Voice 'NoteHead 'style 'cross) \new Voice { \acciaccatura { f16 } g4 \grace { d16 e } f4 \appoggiatura { f,32 g a } e2 } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ús d’estils alternatius per als corxets
Es poden imprimir estils alternatius del corxet o ganxo de les
corxeres i figures menors, mitjançant la sobreescriptura de la
propietat stencil
de l’objecte Flag
. Són valors
vàlids modern-straight-flag
, old-straight-flag
i
flat-flag
.
testnotes = { \autoBeamOff c8 d16 c32 d64 \acciaccatura { c8 } d64 r4 } \score { \relative c' { \time 2/4 \testnotes \override Flag.stencil = #modern-straight-flag \testnotes \override Flag.stencil = #old-straight-flag \testnotes \override Flag.stencil = #flat-flag \testnotes \revert Flag.stencil \testnotes } \layout { indent = 0 \context { \Score \override NonMusicalPaperColumn.line-break-permission = ##f } } }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Utilitzar ly:grob-object per accedir als grobs amb \tweak
Es pot accedir "lateralment" a alguns grobs des de dins de la funció de callbak d’un altre grob. Aquests es troben relacionats normalment com "layout objects" (objectes de presentació) en la secció "Internal properties" (propietats internes) d’una interfície de grob. S’usa la funció ly:grob-object per a accedir a aquests grobs.
Es presenten més avall com a exemple algunes formes d’accedir a
grobs des de dins d’una funció de callblack de NoteHead, però la
tècnica no es limita als caps de nota. No obstant, la funció de
callblack de NoteHead és especialment important, perquè és la
funció de callback implícita que utilitza l’ordre \tweak
.
La funció d’exemple que es defineix sota ("display-grobs") no és probablement tan útil, però mostra que s’està accedint efectivament als grobs.
Sortida d’exemple de la consola:
-------------------- #-Grob Accidental - #-Grob Arpeggio - #-Grob Stem -
#(define (notehead-get-accidental notehead) ;; notehead is grob (ly:grob-object notehead 'accidental-grob)) #(define (notehead-get-arpeggio notehead) ;; notehead is grob (let ((notecolumn (notehead-get-notecolumn notehead))) (ly:grob-object notecolumn 'arpeggio))) #(define (notehead-get-notecolumn notehead) ;; notehead is grob (ly:grob-parent notehead X)) #(define (notehead-get-stem notehead) ;; notehead is grob (let ((notecolumn (notehead-get-notecolumn notehead))) (ly:grob-object notecolumn 'stem))) #(define (display-grobs notehead) ;; notehead is grob (let ((accidental (notehead-get-accidental notehead)) (arpeggio (notehead-get-arpeggio notehead)) (stem (notehead-get-stem notehead))) (format (current-error-port) "~2&~a\n" (make-string 20 #\-)) (for-each (lambda (x) (format (current-error-port) "~a\n" x)) (list accidental arpeggio stem)))) \relative c' { %% display grobs for each note head: %\override NoteHead.before-line-breaking = #display-grobs <c %% or just for one: \tweak before-line-breaking #display-grobs es g>1\arpeggio }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ús del llenguatge PostSript per generar caps de nota de formes especials
Quan el cap d’una nota amb una forma especial no es pot generar fàcilment mitjançant elements de marcatge gràfic, es pot usar codi de Postscript per generar la forma. Aquest exemple mostra com es genera un cap en forma de paral·lelogram.
parallelogram = #(ly:make-stencil (list 'embedded-ps "gsave currentpoint translate newpath 0 0.25 moveto 1.3125 0.75 lineto 1.3125 -0.25 lineto 0 -0.75 lineto closepath fill grestore" ) (cons 0 1.3125) (cons -.75 .75)) myNoteHeads = \override NoteHead.stencil = \parallelogram normalNoteHeads = \revert NoteHead.stencil \relative c'' { \myNoteHeads g4 d' \normalNoteHeads <f, \tweak stencil \parallelogram b e>4 d }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Ús de l’ordre \tweak per retocar objectes gràfics individuals
Amb l’ordre d’ajustament \tweak
tots els objectes gràfics
es poden retocar directament. Aquí presentem exemples dels tipus
de retocament disponibles.
\relative c' { \time 2/4 \set fingeringOrientations = #'(right) < \tweak font-size #3 c \tweak color #red d-\tweak font-size #8 -4 \tweak style #'cross g \tweak duration-log #2 a >2 }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Indicacions dinàmiques i textuals alineades verticalment
Tots els objectes DynamicLineSpanner
(reguladors i
indicacions dinàmiques de text) se situen amb la seva línia de
referència a una distància d’almenys 'staff-padding
del
pentagrama, a no ser que d’altres elements de notació els forci a
col·locar-se a més distància. Si s’ajusta 'staff-padding
a un valor suficientment gran, les indicacions dinàmiques quedaran
alineades.
S’usa una idea semblant junt a \textLengthOn per alinear les inscripcions de text al llarg de la seva línia de base.
music = \relative c' { a'2\p b\f e4\p f\f\> g, b\p c2^\markup { \huge gorgeous } c^\markup { \huge fantastic } } { \music \break \override DynamicLineSpanner.staff-padding = #3 \textLengthOn \override TextScript.staff-padding = #1 \music }
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ > ] |
Alineació vertical de la lletra i els compassos d’ossia
Aquest fragment de codi mostra l’ús de les propietats de context
alignBelowContext
i alignAboveContext
per a
controlar la posició de la lletra i els compassos d’ossia.
\paper { ragged-right = ##t } \relative c' << \new Staff = "1" { c4 c s2 } \new Staff = "2" { c4 c s2 } \new Staff = "3" { c4 c s2 } { \skip 2 << \lyrics { \set alignBelowContext = #"1" lyrics4 below } \new Staff \with { alignAboveContext = #"3" fontSize = #-2 \override StaffSymbol.staff-space = #(magstep -2) \remove "Time_signature_engraver" } { \tuplet 6/4 { \override TextScript.padding = #3 c8[^"ossia above" d e d e f] } } >> } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ Paper and layout > ] |
Centrat vertical de les línies de baix xifrat emparellades
Al lloc on s’utilitzin línies extensores per al baix xifrat mitjançant
l’establiment de useBassFigureExtenders
al valor vertader, les
parelles de línies extensores congruents se centren verticalment
si el valor de figuredBassCenterContinuations
té el valor
vertader.
<< \relative c' { c8 c b b a a c16 c b b c8 c b b a a c16 c b b c8 c b b a a c c b b } \figures { \set useBassFigureExtenders = ##t <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>16 r \set figuredBassCenterContinuations = ##t <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>16 r \set figuredBassCenterContinuations = ##f <6+ 4 3>4 <6 4 3>8 r <6+ 4 3>4 <6 4 3>8 <4 3+>8 } >>
[ << Tweaks and overrides ] | [Part superior][Continguts] | [ Paper and layout >> ] |
[ < ] | [ Amunt : Tweaks and overrides ] | [ Paper and layout > ] |