LilyPond — Fragments

Aquest document mostra un conjunt seleccionat de fragments del Lilypond del LilyPond Snippet Repository (LSR). Està en el domini públic.

Voldríem donar moltes gràcies a Sebastiano Vigna per mantenir la pàgina web i la base de dades LSR, i a la Universitat de Milà per allotjar LSR.

Si us plau noteu que aquest document no és un subconjunt exacte del LSR: alguns fragments provenen del directory de codi Lilypond ‘input/new’, i els fragments del LSR es converteixen mitjançant convert-ly, atès que el LSR es basa en una versió estable del LilyPond, i aquest document és per a la versió 2.24.4.

Els fragments estan agrupats per etiquetes; les etiquetes llistades a la taula de continguts concorden amb una secció del manual de notació del LilyPond. Els fragments poden tenir moltes etiquetes, i no totes les etiquetes del LSR poden aparèixer en aquest document.

A la versió HTML d’aquest document podeu clicar sobre el nom del fitxer o figura per a cada exemple per veure el fitxer d’entrada corresponent.

Para mayor información sobre la forma en que este manual se relaciona con el resto de la documentación, o para leer este manual en otros formatos, consulte Manuales.

Si le falta algún manual, encontrará toda la documentación en https://lilypond.org/.


Pitches

Pitches


Afegir un àmbit per veu

Es pot afegir un àmbit per cada veu. En aquest cas, l’àmbit s’ha de desplaçar manualment per evitar col·lisions.

\new Staff <<
  \new Voice \with {
    \consists "Ambitus_engraver"
  } \relative c'' {
    \override Ambitus.X-offset = #2.0
    \voiceOne
    c4 a d e
    f1
  }
  \new Voice \with {
    \consists "Ambitus_engraver"
  } \relative c' {
    \voiceTwo
    es4 f g as
    b1
  }
>>

[image of music]


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
    }
  >>
}

[image of music]


Aiken head thin variant noteheads

Aiken head white notes get harder to read at smaller staff sizes, especially with ledger lines. Losing interior white space makes them appear as quarter notes.

\score {
  {
    \aikenHeads
    c''2 a' c' a

    % Switch to thin-variant noteheads
    \set shapeNoteStyles = ##(doThin reThin miThin
                              faThin sol laThin tiThin)
    c'' a' c' a
  }
}

[image of music]


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
}

[image of music]


Indicacions de tessitura

Les indicacions d’àmbit o tessitura indiquen rangs d’altures per a les veus.

Les alteracions accidentals sols es mostren si no formen part de l’armadura de tonalitat. Els objectes gràfics AmbitusNoteHead també tenen línies addicionals.

\layout {
  \context {
    \Voice
    \consists "Ambitus_engraver"
  }
}

<<
  \new Staff {
    \relative c' {
      \time 2/4
      c4 f'
    }
  }
  \new Staff {
    \relative c' {
      \time  2/4
      \key d \major
      cis4 as'
    }
  }
>>

[image of music]


Ambitus after key signature

By default, ambitus are positioned at the left of the clef. The \ambitusAfter function allows for changing this placement. Syntax is \ambitusAfter grob-interface (see Graphical Object Interfaces for a list of possible values for grob-interface.)

A common use case is printing the ambitus between key signature and time signature.

\new Staff \with {
  \consists Ambitus_engraver
} \relative {
  \ambitusAfter key-signature
  \key d \major
  es'8 g bes cis d2
}

[image of music]


Àmbits amb diverses veus

L’addició del gravador Ambitus_engraver al context de Staff crea un sol àmbit per pentagrama, fins i tot en el cas de pentagrames amb diverses veus.

\new Staff \with {
  \consists "Ambitus_engraver"
  }
<<
  \new Voice \relative c'' {
    \voiceOne
    c4 a d e
    f1
  }
  \new Voice \relative c' {
    \voiceTwo
    es4 f g as
    b1
  }
>>

[image of music]


Aplicar estils de cap segons la nota de l’escala

La propietat shapeNoteStyles es pot usar per definir diversos estils de caps de nota per a cada grau de l’escala (segons estigui establert per l’armadura o per la propietat tonic). Aquesta propietat requereix un conjunt de símbols, que poden ser purament arbitraris (es permeten expressions geomètriques com triangle, triangle, cross, aspes, i xcircle, cercle amb aspes) o basats en una antiga tradició americana de gravat (també es permeten certs noms de nota llatins).

Dit això, per imitar antics cançoners americans, hi ha diversos estils predefinits de caps de nota disponibles mitjançant ordres d’abreviatura com \aikenHeads o \sacredHarpHeads.

Aquest exemple mostra diferents formes d’obtenir caps de nota amb forma i mostra la capacitat de transportar una melodia sense perdre la correspondència entre les funcions harmòniques i els estils de caps de nota.

fragment = {
  \key c \major
  c2 d
  e2 f
  g2 a
  b2 c
}

\new Staff {
  \transpose c d
  \relative c' {
    \set shapeNoteStyles = ##(do re mi fa
                               #f la ti)
    \fragment
  }

  \break

  \relative c' {
    \set shapeNoteStyles = ##(cross triangle fa #f
                               mensural xcircle diamond)
    \fragment
  }
}

[image of music]


Canviar la direcció de la plica de les notes de tercera línia automàticament, basat en la melodia

El LilyPond pot alterar la direcció de la plica de les notes que van en la tercera línia d’un pentagrama de forma que segueixi la melodia, mitjançant l’addició del gravador Melody_engraver al context Voice i sobreescrivint el valor de neutral-direction per a l’objecte Stem (plica).

\relative c'' {
  \time 3/4
  a8 b g f b g |
  \set suspendMelodyDecisions = ##t
  a  b g f b g |
  \unset suspendMelodyDecisions
  c  b d c b c |
}

\layout {
  \context {
    \Voice
    \consists "Melody_engraver"
    \autoBeamOff
  }
}

[image of music]


Changing ottava text

Internally, \ottava sets the properties ottavation (for example, to 8va or 8vb) and middleCPosition. To override the text of the bracket, set ottavation after invoking \ottava.

Short text is especially useful when a brief ottava is used.

{
  c'2
  \ottava #1
  \set Staff.ottavation = #"8"
  c''2
  \ottava #0
  c'1
  \ottava #1
  \set Staff.ottavation = #"Text"
  c''1
}

[image of music]


Modificació de la separació en les indicacions de tessitura

És possible ajustar la separació predeterminada entre les notes de la indicació de tessitura i la línia que les uneix.

\layout {
  \context {
    \Voice
    \consists "Ambitus_engraver"
  }
}

\new Staff {
  \time 2/4
  % Default setting
  c'4 g''
}

\new Staff {
  \time 2/4
  \override AmbitusLine.gap = #0
  c'4 g''
}

\new Staff {
  \time 2/4
  \override AmbitusLine.gap = #1
  c'4 g''
}

\new Staff {
  \time 2/4
  \override AmbitusLine.gap = #1.5
  c'4 g''
}

[image of music]


Canviar l’interval de les línies de la pauta

S’usa staffLineLayoutFunction per canviar la posició de les notes. Aquest fragment de codi mostra com ajustar el seu valor al de ly:pitch-semitones per produir una escala cromàtica amb la distància entre cada espai i línia del pentagrama igual a un semitò.

scale = \relative c' {
  a4 ais b c
  cis4 d dis e
  f4 fis g gis
  a1
}

\new Staff \with {
  \remove "Accidental_engraver"
  staffLineLayoutFunction = #ly:pitch-semitones
}
{
  <<
    \scale
    \context NoteNames {
      \set printOctaveNames = ##f
      \scale
    }
  >>
}

[image of music]


Les claus es poden transposar en intervals arbitraris

Es poden transposar les claus en intervals arbitraris, no sols octaves.

\relative c' {
  \clef treble
  c4 c c c
  \clef "treble_8"
  c4 c c c
  \clef "treble_5"
  c4 c c c
  \clef "treble^3"
  c4 c c c
}

[image of music]


Acolorir les notes segons la seva alçada

És possible acolorir el cap de les notes depenent de la seva alçada i/o del seu nom: la funció que s’usa en aquest exemple fa possible fins i tot distingir els harmònics.

%Association list of pitches to colors.
#(define color-mapping
   (list
    (cons (ly:make-pitch 0 0 NATURAL) (x11-color 'red))
    (cons (ly:make-pitch 0 0 SHARP) (x11-color 'green))
    (cons (ly:make-pitch 0 1 FLAT) (x11-color 'green))
    (cons (ly:make-pitch 0 2 NATURAL) (x11-color 'red))
    (cons (ly:make-pitch 0 2 SHARP) (x11-color 'green))
    (cons (ly:make-pitch 0 3 FLAT) (x11-color 'red))
    (cons (ly:make-pitch 0 3 NATURAL) (x11-color 'green))
    (cons (ly:make-pitch 0 4 SHARP) (x11-color 'red))
    (cons (ly:make-pitch 0 5 NATURAL) (x11-color 'green))
    (cons (ly:make-pitch 0 5 FLAT) (x11-color 'red))
    (cons (ly:make-pitch 0 6 SHARP) (x11-color 'red))
    (cons (ly:make-pitch 0 1 NATURAL) (x11-color 'blue))
    (cons (ly:make-pitch 0 3 SHARP) (x11-color 'blue))
    (cons (ly:make-pitch 0 4 FLAT) (x11-color 'blue))
    (cons (ly:make-pitch 0 5 SHARP) (x11-color 'blue))
    (cons (ly:make-pitch 0 6 FLAT) (x11-color 'blue))))

%Compare pitch and alteration (not octave).
#(define (pitch-equals? p1 p2)
   (and
    (= (ly:pitch-alteration p1) (ly:pitch-alteration p2))
    (= (ly:pitch-notename p1) (ly:pitch-notename p2))))

#(define (pitch-to-color pitch)
   (let ((color (assoc pitch color-mapping pitch-equals?)))
     (if color
         (cdr color))))

#(define (color-notehead grob)
   (pitch-to-color
    (ly:event-property (event-cause grob) 'pitch)))

\score {
  \new Staff \relative c' {
    \override NoteHead.color = #color-notehead
    c8 b d dis ees f g aes
  }
}

[image of music]


Crear una seqüència de notes a diferents alçades

En una música que tingui moltes aparicions de la mateixa seqüència de notes a diferents altures, podria ser d’utilitat la següent funció musical. Admet una nota, de la qual sols s’utilitza la seva alçada. Les funcions de suport a l’Scheme s’han agafat prestades del document de "Consells i ajustament" de la versió 2.10 del manual. Aquest exemple crea les duracions rítmiques que s’usen a tot el llarg de «Mart», de «Els Planetes» de Gustav Holst.

rhythm =
#(define-music-function (p) (ly:pitch?)
   "Make the rhythm in Mars (the Planets) at the given pitch"
  #{ \tuplet 3/2 { $p 8 8 8 } 4 4 8 8 4 #})

\new Staff {
  \time 5/4
  \rhythm c'
  \rhythm c''
  \rhythm g
}

[image of music]


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,
}

[image of music]


Direction of merged ’fa’ shape note heads

Using property NoteCollision.fa-merge-direction, the direction of ‘fa’ shape note heads (‘fa’, ‘faThin’, etc.) can be controlled independently of the stem direction if two voices with the same pitch and different stem directions are merged. If this property is not set, the ‘down’ glyph variant is used.

{
  \clef bass

  << { \aikenHeads
       f2
       \override Staff.NoteCollision.fa-merge-direction = #UP
       f2 }
  \\ { \aikenHeads
       f2
       f2 }
  >>
}

[image of music]


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
}

[image of music]


Forçar la impressió de la clau

Quan ja s’ha imprimit la clau i encara no s’ha canviat a una diferent, el LilyPond ignorarà la repetició de l’ordre \clef, ja que no constitueix un canvi de clau. És possible forçar la reimpressió de la clau usant l’ordre \set Staff.forceClef = ##t.

\relative c' {
  \clef treble
  c1
  \clef treble
  c1
  \set Staff.forceClef = ##t
  c1
  \clef treble
  c1
}

[image of music]


Generació de notes aleatòries

Aquest fragment de codi basat en l’Scheme genera 24 notes aleatòries (o tantes com calguin), basant-se en l’hora actual (o en qualsevol nombre pseudo-aleatori que s’especifiqui en el seu lloc, per obtenir les mateixes notes aleatòries cada cop): és a dir, per obtenir diferents patrons de notes, sols ha de modificar aquest número.

\score {
  {
    $(let ((random-state (seed->random-state (current-time))))
       (make-sequential-music
         (map (lambda (x)
                (let ((idx (random 12 random-state)))
                  (make-event-chord
                   (list
                    (make-music 'NoteEvent
                                'duration (ly:make-duration 2 0 1/1)
                                'pitch (ly:make-pitch
                                        (quotient idx 7)
                                        (remainder idx 7)
                                        0))))))
              (make-list 24))))
  }
}

[image of music]


Ocultar les alteracions sobre notes lligades al principi d’un sistema nou

Aquí es mostra la manera d’ocultar les alteracions de les notes lligades al començament d’uns sistema nou.

\relative c'' {
  \override Accidental.hide-tied-accidental-after-break = ##t
  cis1~ cis~
  \break
  cis
}

[image of music]


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
}

[image of music]


Exemple de «Makam»

El «Makam» és un tipus de melodia de Turquia que utilitza alteracions microtonals de 1/9 de to. Consulteu el fitxer d’inici ‘makam.ly’ (vegeu el «Manual d’aprenentatge 2.24.4, 4.6.3 Altres forms d’informació» per esbrinar la situació d’aquest fitxer) per veure detalls dels noms de les notes i les alteracions.

% Initialize makam settings
\include "makam.ly"

\relative c' {
  \set Staff.keyAlterations = #`((6 . ,(- KOMA)) (3 . ,BAKIYE))
  c4 cc db fk
  gbm4 gfc gfb efk
  fk4 db cc c
}

[image of music]


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
}

[image of music]


Armadures de tonalitat no tradicional

La molt utilitzada ordre \key estableix la propietat keyAlterations, dins del context Staff.

Per crear armadures de tonalitat no estàndard, ajusteu aquesta propietat directament. El format d’aquesta ordre és una llista:

\set Staff.keyAlterations = #`(((octava . pas) . alteració) on, per cada element dins de la llista octava especifica l’octava (sent zero l’octava des del Do central fins al Si per sobre), pas especifica la nota dins de l’octava (zero significa Do i 6 significa Si), i alteració és ,SHARP ,FLAT ,DOUBLE-SHARP etc. (observeu la coma precedent).

De forma alternativa, per a cada element de la llista l’ús del format més concís (pas. alteració) especifica que la mateixa alteració ha d’estar en totes les octaves.

Vet aquí un exemple d’una possible armadura per generar una escala exàtona:

\include "arabic.ly"
\relative do' {
  \set Staff.keyAlterations = #`((0 . ,SEMI-FLAT)
                                 (1 . ,SEMI-FLAT)
                                 (2 . ,FLAT)
                                 (5 . ,FLAT)
                                 (6 . ,SEMI-FLAT))
%\set Staff.extraNatural = ##f
  re reb \dwn reb resd
  dod dob dosd \dwn dob |
  dobsb dodsd do do |
}

[image of music]


Nombres com notes de notació fàcil

Els caps de nota de notació fàcil utilitzen la propietat note-names de l’objecte NoteHead per determinar el que apareix dins del cap. Mitjançant la sobreescriptura d’aquesta propietat, és possible imprimir nombres que representen el grau de l’escala.

Es pot crear un gravador simple que faci això per al cap de cada nota que ve.

#(define Ez_numbers_engraver
   (make-engraver
    (acknowledgers
     ((note-head-interface engraver grob source-engraver)
      (let* ((context (ly:translator-context engraver))
	     (tonic-pitch (ly:context-property context 'tonic))
	     (tonic-name (ly:pitch-notename tonic-pitch))
	     (grob-pitch
	      (ly:event-property (event-cause grob) 'pitch))
	     (grob-name (ly:pitch-notename grob-pitch))
	     (delta (modulo (- grob-name tonic-name) 7))
	     (note-names
	      (make-vector 7 (number->string (1+ delta)))))
	(ly:grob-set-property! grob 'note-names note-names))))))

#(set-global-staff-size 26)

\layout {
  ragged-right = ##t
  \context {
    \Voice
    \consists \Ez_numbers_engraver
  }
}

\relative c' {
  \easyHeadsOn
  c4 d e f
  g4 a b c \break

  \key a \major
  a,4 b cis d
  e4 fis gis a \break

  \key d \dorian
  d,4 e f g
  a4 b c d
}

[image of music]


Plantilla d’orquestra amb cor i piano

Aquesta plantilla mostra l’ús de contextos StaffGroup i GrandStaff niuats per sub-agrupar instruments del mateix tipus, i una forma d’usar \transpose de manera que unes variables continguin la música per a instruments transpositors en afinació de concert.

#(set-global-staff-size 17)
\paper {
  indent = 3.0\cm  % add space for instrumentName
  short-indent = 1.5\cm  % add less space for shortInstrumentName
}

fluteMusic = \relative c' { \key g \major g'1 b }

% Pitches as written on a manuscript for Clarinet in A
% are transposed to concert pitch.

clarinetMusic = \transpose c' a
  \relative c'' { \key bes \major bes1 d }

trumpetMusic = \relative c { \key g \major g''1 b }

% Key signature is often omitted for horns

hornMusic = \transpose c' f
  \relative c { d'1 fis }

percussionMusic = \relative c { \key g \major g1 b }

sopranoMusic = \relative c'' { \key g \major g'1 b }

sopranoLyrics = \lyricmode { Lyr -- ics }

altoIMusic = \relative c' { \key g \major g'1 b }

altoIIMusic = \relative c' { \key g \major g'1 b }

altoILyrics =  \sopranoLyrics

altoIILyrics = \lyricmode { Ah -- ah }

tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b }

tenorLyrics = \sopranoLyrics

pianoRHMusic = \relative c { \key g \major g''1 b }

pianoLHMusic = \relative c { \clef bass \key g \major g1 b }

violinIMusic = \relative c' { \key g \major g'1 b }

violinIIMusic = \relative c' { \key g \major g'1 b }

violaMusic = \relative c { \clef alto \key g \major g'1 b }

celloMusic = \relative c { \clef bass \key g \major g1 b }

bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b }

\score {
  <<
    \new StaffGroup = "StaffGroup_woodwinds" <<
      \new Staff = "Staff_flute" \with { instrumentName = "Flute" }
      \fluteMusic

      \new Staff = "Staff_clarinet" \with {
        instrumentName = \markup { \concat { "Clarinet in B" \flat } }
      }

      % Declare that written Middle C in the music
      % to follow sounds a concert B flat, for
      % output using sounded pitches such as MIDI.
      %\transposition bes

      % Print music for a B-flat clarinet
      \transpose bes c' \clarinetMusic
    >>

    \new StaffGroup = "StaffGroup_brass" <<
      \new Staff = "Staff_hornI" \with { instrumentName = "Horn in F" }
       % \transposition f
        \transpose f c' \hornMusic

      \new Staff = "Staff_trumpet" \with { instrumentName = "Trumpet in  C" }
      \trumpetMusic

    >>
    \new RhythmicStaff = "RhythmicStaff_percussion"
    \with { instrumentName = "Percussion" }
    <<
      \percussionMusic
    >>
    \new PianoStaff \with { instrumentName = "Piano" }
    <<
      \new Staff { \pianoRHMusic }
      \new Staff { \pianoLHMusic }
    >>
    \new ChoirStaff = "ChoirStaff_choir" <<
      \new Staff = "Staff_soprano" \with { instrumentName = "Soprano" }
      \new Voice = "soprano"
      \sopranoMusic

      \new Lyrics \lyricsto "soprano" { \sopranoLyrics }
      \new GrandStaff = "GrandStaff_altos"
      \with { \accepts Lyrics } <<
        \new Staff = "Staff_altoI"  \with { instrumentName = "Alto I" }
        \new Voice = "altoI"
        \altoIMusic

        \new Lyrics \lyricsto "altoI" { \altoILyrics }
        \new Staff = "Staff_altoII" \with { instrumentName = "Alto II" }
        \new Voice = "altoII"
        \altoIIMusic

        \new Lyrics \lyricsto "altoII" { \altoIILyrics }
      >>

      \new Staff = "Staff_tenor" \with { instrumentName = "Tenor" }
        \new Voice = "tenor"
        \tenorMusic

      \new Lyrics \lyricsto "tenor" { \tenorLyrics }
    >>
    \new StaffGroup = "StaffGroup_strings" <<
      \new GrandStaff = "GrandStaff_violins" <<
        \new Staff = "Staff_violinI" \with { instrumentName = "Violin I" }
        \violinIMusic

        \new Staff = "Staff_violinII" \with { instrumentName = "Violin II" }
        \violinIIMusic
      >>

      \new Staff = "Staff_viola" \with { instrumentName = "Viola" }
      \violaMusic

      \new Staff = "Staff_cello" \with { instrumentName = "Cello" }
      \celloMusic

      \new Staff = "Staff_bass" \with { instrumentName = "Double Bass" }
      \bassMusic
    >>
  >>
  \layout { }
}

[image of music]


Evitar que s’afegeixen becaires addicionals automàticament

Segons les regles tradicionals de composició tipogràfica, s’imprimeix un becaire abans d’un sostingut o un bemoll quan s’ha de cancel·lar un doble sostingut o un doble bemoll anterior en la mateixa nota. Per modificar aquest comportament a la pràctica actual establiu el valor de la propietat extraNatural a ##f (fals) dins del context de Staff.

\relative c'' {
  aeses4 aes ais a
  \set Staff.extraNatural = ##f
  aeses4 aes ais a
}

[image of music]


Evitar que se impriman becuadros cuando cambia la armadura

Quan es canvia l’armadura de la tonalitat, s’imprimeixen becaires automàticament per cancel·lar les alteracions de les armadures anteriors. Això es pot evitar establint al valor “falso” la propietat printKeyCancellation del context Staff.

\relative c' {
  \key d \major
  a4 b cis d
  \key g \minor
  a4 bes c d
  \set Staff.printKeyCancellation = ##f
  \key d \major
  a4 b cis d
  \key g \minor
  a4 bes c d
}

[image of music]


Citació d’una altra veu amb transposició

Els passatges citats tenen en compte la trasnposició de la font tant com la del destí. En aquest exemple, tots els instruments interpreten una nota amb el so de Do central; el destí d’un instrument transpositor en Fa. La part de destí es pot transportar utilitzant \transpose. En aquest cas les notes citades romanen sense canvis.

\addQuote clarinet {
  \transposition bes
  \repeat unfold 8 { d'16 d' d'8 }
}

\addQuote sax {
  \transposition es'
  \repeat unfold 16 { a8 }
}

quoteTest = {
  % french horn
  \transposition f
  g'4
  << \quoteDuring "clarinet" { \skip 4 } s4^"clar." >>
  << \quoteDuring "sax" { \skip 4 } s4^"sax." >>
  g'4
}

{
  \new Staff \with {
    instrumentName = \markup { \column { Horn "in F" } }
  }
  \quoteTest
  \transpose c' d' << \quoteTest s4_"up a tone" >>
}

[image of music]


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
}

[image of music]


Transposició de la música amb el menor nombre d’alteracions

Aquest exemple utilitza codi de l’Scheme per forçar les modificacions enharmòniques de les notes, i així tenir el menor nombre d’alteracions accidentals. En aquest cas s’apliquen les regles següents:

D’aquesta forma se selecciona el major nombre de notes enharmòniques naturals.

#(define (naturalize-pitch p)
   (let ((o (ly:pitch-octave p))
         (a (* 4 (ly:pitch-alteration p)))
         ;; alteration, a, in quarter tone steps,
         ;; for historical reasons
         (n (ly:pitch-notename p)))
     (cond
      ((and (> a 1) (or (eqv? n 6) (eqv? n 2)))
       (set! a (- a 2))
       (set! n (+ n 1)))
      ((and (< a -1) (or (eqv? n 0) (eqv? n 3)))
       (set! a (+ a 2))
       (set! n (- n 1))))
     (cond
      ((> a 2) (set! a (- a 4)) (set! n (+ n 1)))
      ((< a -2) (set! a (+ a 4)) (set! n (- n 1))))
     (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
     (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
     (ly:make-pitch o n (/ a 4))))

#(define (naturalize music)
   (let ((es (ly:music-property music 'elements))
         (e (ly:music-property music 'element))
         (p (ly:music-property music 'pitch)))
     (if (pair? es)
         (ly:music-set-property!
          music 'elements
          (map naturalize es)))
     (if (ly:music? e)
         (ly:music-set-property!
          music 'element
          (naturalize e)))
     (if (ly:pitch? p)
         (begin
           (set! p (naturalize-pitch p))
           (ly:music-set-property! music 'pitch p)))
     music))

naturalizeMusic =
#(define-music-function (m)
   (ly:music?)
   (naturalize m))

music = \relative c' { c4 d e g }

\score {
  \new Staff {
    \transpose c ais { \music }
    \naturalizeMusic \transpose c ais { \music }
    \transpose c deses { \music }
    \naturalizeMusic \transpose c deses { \music }
  }
  \layout { }
}

[image of music]


Turkish Makam example

This template uses the start of a well-known Turkish Saz Semai that is familiar in the repertoire in order to illustrate some of the elements of Turkish music notation.

\paper { tagline = ##f }

% Initialize makam settings
\include "turkish-makam.ly"

\header {
    title = "Hüseyni Saz Semaisi"
    composer = "Lavtacı Andon"
}

\relative {
  \set Staff.extraNatural = ##f
  \set Staff.autoBeaming = ##f

  \key a \huseyni
  \time 10/8

  a'4 g'16 [fb] e8. [d16] d [c d e] c [d c8] bfc |
  a16 [bfc a8] bfc c16 [d c8] d16 [e d8] e4 fb8 |
  d4 a'8 a16 [g fb e] fb8 [g] a8. [b16] a16 [g] |
  g4 g16 [fb] fb8. [e16] e [g fb e] e4 r8 |
}

[image of music]


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
}

[image of music]


Usar canvi automàtic de pentagrama amb més d’una veu

Utilització de autochange amb més d’una veu.

\score
{
  \new PianoStaff
  <<
    \new Staff = "up" {
      <<
        \set Timing.beamExceptions = #'()
        \set Timing.beatStructure = #'(4)
        \new Voice {
          \voiceOne
          \autoChange
          \relative c' {
            g8 a b c d e f g
            g,8 a b c d e f g
          }
        }

        \new Voice {
          \voiceTwo
          \autoChange
          \relative c' {
            g8 a b c d e f g
            g,,8 a b c d e f g
          }
        }
      >>
    }

    \new Staff = "down" {
      \clef bass
    }
  >>
}

[image of music]


Rhythms

Rhythms


Afegir barres, lligadures d’expressió i d’unió, etc., quan s’usen ritmes amb i sense grups de valoració especial.

La sintaxi del LilyPond pot implicar moltes col·locacions poc comunes per als parèntesis, claus, etc., que a vegades s’han d’intercalar. Per exemple, en introduir una barra manual, la clau esquerra d’apertura s’ha d’escriure després de la nota inicial i de la seva duració, no abans. De forma semblant, la clau dreta de tancament ha de seguir immediatament a la nota que es vol ubicar al final del barrat, fins i tot si aquesta nota resulta estar dins d’un grup de valoració especial. Aquest fragment de codi mostra com combinar el barrat manual, les lligadures d’expressió i d’unió i les lligadures de fraseig, amb seccions de valoració especial (tancades entre claus).

{
  r16[ g16 \tuplet 3/2 { r16 e'8] }
  g16( a \tuplet 3/2 { b d e') }
  g8[( a \tuplet 3/2 { b d') e'] ~ }
  \time 2/4
  \tuplet 5/4 { e'32\( a b d' e' } a'4.\)
}

[image of music]


Escriptura de parts de percussió

Mitjançant la utilització de les potents eines preconfigurades com la funció \drummode i el context DrumStaff, la introducció de parts per a percussió és molt fàcil: les percussions se situen en les seves pròpies posicions de pentagrama (amb una clau especial) i tenen els caps corresponents a l’instrument. És possible afegir un símbol addicional a la percussió o reduir el nombre de línies.

drh = \drummode {
        cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh
        hhc4 r4 r2
      }
drl = \drummode {
        bd4 sn8 bd bd4 << bd ss >>
        bd8 tommh tommh bd toml toml bd tomfh16 tomfh
      }
timb = \drummode {
         timh4 ssh timl8 ssh r timh r4
         ssh8 timl r4 cb8 cb
       }

\score {
  <<
    \new DrumStaff \with {
      instrumentName = "timbales"
      drumStyleTable = #timbales-style
      \override StaffSymbol.line-count = #2
      \override BarLine.bar-extent = #'(-1 . 1)
    }
    <<
      \timb
    >>
    \new DrumStaff \with { instrumentName = "drums" }
    <<
      \new DrumVoice { \stemUp \drh }
      \new DrumVoice { \stemDown \drl }
    >>
  >>
  \layout { }
  \midi { \tempo 4 = 120 }
}

[image of music]


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
}

[image of music]


Alineació dels números de compàs

Els números de compàs s’alineen de forma predeterminada per la dreta amb el seu objecte pare. Aquest objecte és pel general la vora esquerra, d’una línia o, si els números s’imprimeixen dins de la línia, la vora esquerra d’una línia divisòria. Els números també es poden situar directament sobre la barra de compàs o alineats per l’esquerra amb ella.

\relative c' {
  \set Score.currentBarNumber = #111
  \override Score.BarNumber.break-visibility = #all-visible
  % Increase the size of the bar number by 2
  \override Score.BarNumber.font-size = #2
  % Print a bar number every second measure
  \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
  c1 | c1
  % Center-align bar numbers
  \override Score.BarNumber.self-alignment-X = #CENTER
  c1 | c1
  % Left-align bar numbers
  \override Score.BarNumber.self-alignment-X = #LEFT
  c1 | c1
}

[image of music]


Formes alternatives de la figura breu

Les figures de breu també estan disponibles amb dues línies verticals a les vores del cap en lloc d’una sola línia i la forma en estil barroc.

\relative c'' {
  \time 4/2
  c\breve |
  \override Staff.NoteHead.style = #'altdefault
  b\breve
  \override Staff.NoteHead.style = #'baroque
  b\breve
  \revert Staff.NoteHead.style
  a\breve
}

[image of music]


Appoggiatura or grace note before a bar line

By default, appoggiaturas and grace notes that occur on the first beat of a measure are printed after the bar line. They can however be printed before, simply by adding an invisible BarLine and then the visible one, as demonstrated here.

{
  R1
  %% default
  \appoggiatura d''8 c''4 r2.
  %% cheated
  \appoggiatura { \bar "" d''8 \bar "|" } c''4 r2.
}

[image of music]


Subdivisions de barra automàtiques

Es poden subdividir les barres automàticament. Establint la propietat subdivideBeams, les barres se subdivideixen en posiciones de pols (tal i com s’especifica a beatLength).

\new Staff {
  \relative c'' {
    <<
      {
        \voiceOne
        \set subdivideBeams = ##t
        b32[ a g f c' b a g
        b32^"subdivide beams" a g f c' b a g]
      }
      \new Voice {
        \voiceTwo
        b32_"default"[ a g f c' b a g
        b32 a g f c' b a g]
      }
    >>
    \oneVoice
    \set baseMoment = #(ly:make-moment 1/8)
    \set beatStructure = 2,2,2,2
    b32^"baseMoment 1 8"[ a g f c' b a g]
    \set baseMoment = #(ly:make-moment 1/16)
    \set beatStructure = 4,4,4,4
    b32^"baseMoment 1 16"[ a g f c' b a g]
  }
}

[image of music]


Modificar duracions automàticament

Es pot usar shiftDurations per canviar la longitud de les notes d’una peça musical. Agafa dos arguments: El factor d’escalat com una potència de dos, i el nombre de puntets a afegir com un enter positiu.

\paper { indent = 0 }

music = \relative c'' { a1 b2 c4 d8 r }

\score {
  \new Voice {
    \time 4/2
    \music
    \time 4/4
    \shiftDurations #1 #0 { \music }
    \time 2/4
    \shiftDurations #2 #0 { \music }
    \time 4/1
    \shiftDurations #-1 #0 { \music }
    \time 8/1
    \shiftDurations #-2 #0 { \music }
    \time 6/2
    \shiftDurations #0 #1 { \music }
    \time 7/2
    \shiftDurations #0 #2 { \music }
  }
}

[image of music]


Finals de barra en el context Score

Les regles de final de barra especificades en el context Score s’apliquen a tots els pentagrames, però es poden modificar tant en els nivells de Staff como de Voice:

\relative c'' {
  \time 5/4
  % Set default beaming for all staves
  \set Score.baseMoment = #(ly:make-moment 1/8)
  \set Score.beatStructure = 3,4,3
  <<
    \new Staff {
      c8 c c c c c c c c c
    }
    \new Staff {
      % Modify beaming for just this staff
      \set Staff.beatStructure = 6,4
      c8 c c c c c c c c c
    }
    \new Staff {
      % Inherit beaming from Score context
      <<
        {
          \voiceOne
          c8 c c c c c c c c c
        }
        % Modify beaming for this voice only
        \new Voice {
          \voiceTwo
          \set Voice.beatStructure = 6,4
          a8 a a a a a a a a a
        }
      >>
    }
  >>
}

[image of music]


Barres que travessen salts de línia

Normalment estan prohibits els salts de línia si les barres travessen les línies divisòries. Es pot canviar aquest comportament com es mostra aquí:

\relative c'' {
  \override Beam.breakable = ##t
  c8 c[ c] c[ c] c[ c] c[ \break
  c8] c[ c] c[ c] c[ c] c
}

[image of music]


Canviar el salt de les barres en angle

S’insereixen automàticament barres en angle quan es detecta un interval molt gran entre les notes. Es pot fer un ajustament fi d’aquest comportament mitjançant de la propietat auto-knee-gap. Es traça una barra doblada si el salt és més gran que el valor de auto-knee-gap més l’amplada de l’objecte barra (que depèn de la duració de les notes i de la inclinació de la barra). De forma predeterminada auto-knee-gap està establerta a 5.5 espais de pentagrama.

{
  f8 f''8 f8 f''8
  \override Beam.auto-knee-gap = #6
  f8 f''8 f8 f''8
}

[image of music]


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
  }
}

[image of music]


Modificar el nombre de puntets d’una nota

La quantitat de puntets d’una nota es pot modificar independentment dels puntets que s’escriuen després d’una nota.

\relative c' {
  c4.. a16 r2 |
  \override Dots.dot-count = #4
  c4.. a16 r2 |
  \override Dots.dot-count = #0
  c4.. a16 r2 |
  \revert Dots.dot-count
  c4.. a16 r2 |
}

[image of music]


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 { }
}

[image of music]


Canviar el número del grup especial

De forma predeterminada sols s’imprimeix sobre la clau de grup el numerador del grup especial, és a dir, el numerador de l’argument de l’odre \tuplet.

De forma alternativa, es pot imprimir una fracció en la forma numerador:denominador del número de del grup, o eliminar el número.

\relative c'' {
  \tuplet 3/2 { c8 c c }
  \tuplet 3/2 { c8 c c }
  \override TupletNumber.text = #tuplet-number::calc-fraction-text
  \tuplet 3/2 { c8 c c }
  \omit TupletNumber
  \tuplet 3/2 { c8 c c }
}

[image of music]


Modificar el compàs d’una secció polimètrica utilitzant \scaleDurations

La propietat measureLength, junt amb measurePosition, determina quan cal dibuixar una línia divisòria. No obstant, en utilitzar \scaleDurations, l’escalat proporcional de les duracions fa difícil introduir canvis de compàs. En aquest cas s’ha d’establir manualment el valor de measureLength utilitzant la funció ly:make-moment. El segon argument ha de ser el mateix que el segon artgument de \scaleDurations.

\layout {
  \context {
    \Score
    \remove "Timing_translator"
  }
  \context {
    \Staff
    \consists "Timing_translator"
  }
}

<<
  \new Staff {
    \scaleDurations 8/5 {
      \time 6/8
      \set Timing.measureLength = #(ly:make-moment 6/5)
      b8 b b b b b
      \time 2/4
      \set Timing.measureLength = #(ly:make-moment 4/5)
      b4 b
    }
  }
  \new Staff {
    \clef bass
    \time 2/4
    c2 d e f
  }
>>

[image of music]


Notació de responsos o salms

Aquest tipus de notació s’utilitza per als cants salmòdics, en les quals les estrofes no sempre tenen la mateixa longitud.

stemOff = \hide Staff.Stem
stemOn  = \undo \stemOff

\score {
  \new Staff \with { \remove "Time_signature_engraver" }
  {
    \key g \minor
    \cadenzaOn
    \stemOff a'\breve bes'4 g'4
    \stemOn a'2 \section
    \stemOff a'\breve g'4 a'4
    \stemOn f'2 \section
    \stemOff a'\breve^\markup { \italic flexe }
    \stemOn g'2 \fine
  }
}

[image of music]


Indicacions de compassos compostos

Les indicacions de compàs poc freqüents com "5/8" es poden executar com a compassos compostos (per exemple "3/8 + 2/8"), que combinen dos o més metres diferents. El LilyPond pot fer la música d’aquest tipus fàcil de llegir e interpretar, imprimint explícitament les indicacions de compàs compost i adaptant el comportament automàtic de les barres (també es poden afegir indicacions gràfiques de l’agrupació de compassos; vegeu el fragment de codi apropiat en la base de dades).

\relative c' {
  \compoundMeter #'((2 8) (3 8))
  c8 d e fis gis
  c8 fis, gis e d
  c8 d e4 gis8
}

[image of music]


Símbols de direcció y símbols d’agrupació de compàs

L’agrupació de pulsacions dins d’un compàs està controlada per la propietat de context beatStructure. Hi ha establerts valors de beatStructure per a molts tipus de compassos a scm/time-signature-settings.scm. Els valors de beatStructure es poden canviar o establir amb \set. Com alternativa, es pot usar \time per establir tant el compàs com l’estructura de pulsacions. Per això, especifiquem l’agrupació interna de les pulsacions del compàs com una llista de nombres (en la sintaxi de l’Scheme) abans de la indicació del compàs.

\time s’aplica al context Timing, per la qual cosa no restableix els valors de beatStructure ni de baseMoment que s’estableixen en altres contextos de nivell inferior, com Voice.

Si el gravador Measure_grouping_engraver està inclòs en un dels contextos de presentació, s’imprimiran signes d’agrupació de pulsacions. Aquests símbols faciliten la lectura de música moderna rítmicament complexa. En aquest exemple, el compàs de 9/8 s’agrupa segons dos patrons diferents utilitzant els dos mètodes, mentre que el compàs de 5/8 s’agrup d’acord amb l’ajustament predeterminat que està a scm/time-signature-settings.scm:

\score {
  \new Voice \relative c'' {
    \time 9/8
    g8 g d d g g a( bes g) |
    \set Timing.beatStructure = 2,2,2,3
    g8 g d d g g a( bes g) |
    \time 4,5 9/8
    g8 g d d g g a( bes g) |
    \time 5/8
    a4. g4 |
  }
  \layout {
    \context {
      \Staff
      \consists "Measure_grouping_engraver"
    }
  }
}

[image of music]


Números de compàs alineats a l’esquerra de forma consistent

Quan s’alinien els números de compàs, poden aparèixer problemes de superposició amb les claus de sistema. Aquest fragment de codi ho resoleu deixant alineats a la dreta els números de compàs després d’un salt de línia.

consistentlyLeftAlignedBarNumbers = {
  \override Score.BarNumber.break-visibility = #end-of-line-invisible
  \override Score.BarNumber.self-alignment-X =
    #(lambda (grob)
       (let ((break-dir (ly:item-break-dir grob)))
         (if (= break-dir RIGHT) RIGHT LEFT)))
}

\new ChoirStaff <<
  \new Staff {
    \relative c' {
      \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3)
      \bar ""
      \consistentlyLeftAlignedBarNumbers

      \set Score.currentBarNumber = #112
      \repeat unfold 8 { R1 }
      \break
      \repeat unfold 9 { R1 }
      \break
      \repeat unfold 7 { R1 }
    }
  }
  \new Staff {
    \relative c' {
      \repeat unfold 24 { R1 }
    }
  }
>>

\layout {
  indent = #0
  ragged-right = ##t
  ragged-last = ##t
}

[image of music]


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
  }
}

[image of music]


Cow and ride bell example

Two different bells, entered with ’cb’ (cowbell) and ’rb’ (ridebell).

\paper { tagline = ##f }

#(define mydrums '((ridebell default #f  3)
                   (cowbell  default #f -2)))

\new DrumStaff \with { instrumentName = #"Different Bells" }

\drummode {
  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
  \set DrumStaff.clefPosition = 0.5
  \override DrumStaff.StaffSymbol.line-positions = #'(-2 3)
  \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5)

  \time 2/4
  rb8 8 cb8 16 rb16-> ~ |
  16 8 16 cb8 8 |
}

[image of music]


Crear indicacions metronòmiques en mode de marcatge

Es poden crear indicacions metronòmiques noves en mode de marcatge, però no canvien el tempo en la sortida MIDI.

\relative c' {
  \tempo \markup {
    \concat {
      (
      \smaller \general-align #Y #DOWN \note {16.} #1
      " = "
      \smaller \general-align #Y #DOWN \note {8} #1
      )
    }
  }
  c1
  c4 c' c,2
}

[image of music]


Gravat manual de les lligadures

Es poden gravar a mà les lligadures modificant la propietat tie-configuration de l’objecte TieColumn. El primer nombre indica la distància a partir de la tercera línia del pentagrama en espais de pentagrama, i el segon nombre indica la direcció (1 = cap amunt, -1 = cap avall).

\relative c' {
  <c e g>2~ <c e g>
  \override TieColumn.tie-configuration =
    #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1))
  <c e g>2~ <c e g>
  \override TieColumn.tie-configuration =
    #'((0 . 1) (-2 . 1) (-4 . 1))
  <c e g>2~ <c e g>
}

[image of music]


Trèmols amb barres flotants

Si la duració total d’un trèmol és menor d’una negra, o exactament d’una blanca, normalment es grava amb totes les barres de corxera tocant les pliques. Certs estils de notació de partitures composen algunes d’aquestes barres com a barres flotants centrades que no toquen les pliques de les figures. El nombre de barres flotants en aquest tipus de trèmol està controlat per la propietat 'gap-count del l’objecte Beam i la separació entre les barres i les pliques es fixa amb la propietat 'gap.

\relative c'' {
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #1
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #2
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #3
  \repeat tremolo 8 { a32 f }

  \override Beam.gap-count = #3
  \override Beam.gap = #1.33
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #1
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #0.67
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #0.33
  \repeat tremolo 8 { a32 f }
}

[image of music]


Entering several tuplets using only one \tuplet command

The property tupletSpannerDuration sets how long each of the tuplets contained within the brackets after \tuplet should last. Many consecutive tuplets can then be placed within a single \tuplet expression, thus saving typing.

There are several ways to set tupletSpannerDuration. The command \tupletSpan sets it to a given duration, and clears it when instead of a duration \default is specified. Another way is to use an optional argument with \tuplet.

\relative c' {
  \time 2/4
  \tupletSpan 4
  \tuplet 3/2 { c8^"\\tupletSpan 4" c c c c c }
  \tupletSpan \default
  \tuplet 3/2 { c8^"\\tupletSpan \\default" c c c c c }
  \tuplet 3/2 4 { c8^"\\tuplet 3/2 4 {...}" c c c c c }
}

[image of music]


Claudàtors rectes i extrems de barra separats

Són possibles tant els claudàtors rectes sobre notes soltes com extrems de barra separats en figures unides, amb una combinació de stemLeftBeamCount, stemRightBeamCount i indicadors de barra [] emparellats.

Per a claudàtors rectes que apunten a la dreta sobre notes soltes, useu indicadors de barra emparellats [] y establiu stemLeftBeamCount a zero (vegeu l’exemple 1).

Per a claudàtors rectes que apunten a l’esquerra, establiu en canvi stemRightBeamCount (exemple 2).

Per a extrems separats que apunten a la dreta al final d’un conjunt de notes unides, establiu stemRightBeamCount a un valor positiu. I per a extrems separats que apunten a l’esquerra al principi d’un conjunt de notes unides, establiu stemLeftBeamCount en canvi (exemple 3).

A vegades per a una nota separada rodejada de silencis té sentit que porti els dos extrems separats del claudàtor pla, apuntant a la dreta i a l’esquerra. Feu-lo sols amb indicadors de barra emparellats [ ] (exemple 4).

Observeu que \set stemLeftBeamCount sempre equival a \once \set. En altres paraules, els ajustaments de la quantitat de barres no es recorden, i per això el parell de claudàtors plans aplicats a la nota Do semicorxera c'16[] de l’últim exemple no té res a veure amb el \set de dues notes per darrera.

\score {
  <<
    % Example 1
    \new RhythmicStaff {
      \set stemLeftBeamCount = #0
      c16[]
      r8.
    }
    % Example 2
    \new RhythmicStaff {
      r8.
      \set stemRightBeamCount = #0
      16[]
    }
    % Example 3
    \new RhythmicStaff {
      16 16
      \set stemRightBeamCount = #2
      16 r r
      \set stemLeftBeamCount = #2
      16 16 16
    }
    % Example 4
    \new RhythmicStaff {
      16 16
      \set stemRightBeamCount = #2
      16 r16
      16[]
      r16
      \set stemLeftBeamCount = #2
      16 16
    }
  >>
}

[image of music]


Forçar que les marques d’assaig comencin en una lletra o nombre donats

Aquest fragment de codi mostra com obtenir marques d’assaig ordenades automàticament, però partint de la lletra o nombre desitjat.

\relative c'' {
  c1 \mark \default
  c1 \mark \default
  c1 \mark \default
  c1 \mark #14
  c1 \mark \default
  c1 \mark \default
  c1 \mark \default
  c1
}

[image of music]


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
}

[image of music]


Ritmes rasguejats de guitarra

Per a la música de guitarra, és possible mostrar els ritmes de rasgueig, a més de les notes de la melodia, acords i diagrames de posicions.

\include "predefined-guitar-fretboards.ly"
<<
  \new ChordNames {
    \chordmode {
      c1 | f | g | c
    }
  }
  \new FretBoards {
    \chordmode {
      c1 | f | g | c
    }
  }
  \new Voice \with {
    \consists "Pitch_squash_engraver"
  } {
    \relative c'' {
      \improvisationOn
      c4 c8 c c4 c8 c
      f4 f8 f f4 f8 f
      g4 g8 g g4 g8 g
      c4 c8 c c4 c8 c
    }
  }
  \new Voice = "melody" {
    \relative c'' {
      c2 e4 e4
      f2. r4
      g2. a4
      e4 c2.
    }
  }
  \new Lyrics {
    \lyricsto "melody" {
      This is my song.
      I like to sing.
    }
  }
>>

[image of music]


Indicacions polimètricques de compàs totalment personalitzades

Tot i que l’element més essencial no és la indicació polimètrica de compàs que es mostra, s’ha inclòs per mostrar la pulsació de la peça, que és la plantilla d’una cançó real dels Balcans.

melody = \relative c'' {
  \key g \major
  \compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8)
                    (2 8) (2 8) (3 8) (2 8) (2 8))
  c8 c c d4 c8 c b c b a4 g fis8 e d c b' c d e4-^ fis8 g \break
  c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4
  c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break
  c4. d4 c4 d4. c4 d c2 d4. e4-^ d4
  c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break
}

drum = \new DrumStaff \drummode {
  \repeat volta 2 {
    bd4.^\markup { Drums } sn4 bd \bar ";"
    sn4. bd4 sn \bar ";"
    bd sn bd4. sn4 bd
  }
}

\new Staff \with {
  instrumentName = \markup { \concat { "B" \flat " Sop." } }
}

{
  \melody
  \drum
}

[image of music]


High and Low woodblock example

Two Woodblocks, entered with ’wbh’ (high woodblock) and ’wbl’ (low woodblock). The length of the barline has been altered with an \override command otherwise it would be too short. The positions of the two stafflines also have to be explicitly defined.

\paper { tagline = ##f }

% These lines define the position of the woodblocks in the stave;
% if you like, you can change it or you can use special note heads
% for the woodblocks.
#(define mydrums '((hiwoodblock default #f  3)
                   (lowoodblock default #f -2)))

woodstaff = {
  % This defines a staff with only two lines.
  % It also defines the positions of the two lines.
  \override Staff.StaffSymbol.line-positions = #'(-2 3)

  % This is necessary; if not entered,
  % the barline would be too short!
  \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5)
  % small correction for the clef:
  \set DrumStaff.clefPosition = 0.5
}

\new DrumStaff {
  % with this you load your new drum style table
  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)

  \woodstaff

  \drummode {
    \time 2/4
    wbl8 16 16 8-> 8 |
    wbl8 16 16-> ~ 16 16 r8 |
  }
}

[image of music]


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
    }
  >>
}

[image of music]


Fer lligadures d’expressió amb estructura complexa de discontinuïtat

Les lligadures d’expressió es poden construir amb patrons de discontinuïtat complexos mitjançant la definició de la propietat dash-definition. dash-definition és una llista de paràmetres que defineixen el comportament de discontinuïtat d’un segment de la lligadura d’expressió.

La lligadura es defineix en termes del paràmetre de bezier t el rang del qual va de 0 a l’esquerra de la lligadura fins a 1 a l’extrem dret de la lligadura. cada element de discontinuïtat és una llista (t-inici t-final fracció-discontinuïtat període-discontinuitat). La regió de la lligadura des de t-inici fins a t-final tindrà una fracció fracció-discontinuitat de cada període-discontinuïtat de color negre. període-discontinuïtat es defineix en termes d’espais de pentagrama. fracció-discontinuïtat s’estableix al valor d’1 per a una lligadura contïnua.

\relative c' {
  \once \override
    Slur.dash-definition = #'((0 0.3 0.1 0.75)
                                (0.3 0.6 1 1)
                                (0.65 1.0 0.4 0.75))
  c4( d e f)
  \once \override
    Slur.dash-definition = #'((0 0.25 1 1)
                                (0.3 0.7 0.4 0.75)
                                (0.75 1.0 1 1))
  c4( d e f)
}

[image of music]


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
}

[image of music]


Combinació dels silencis multicompàs a una part polifònica

Quan s’usen silencis multicompàs en un pentagrama polifònic, els silencis s’ubiquen de forma diferent depenent de a quina veu pertanyin. Malgrat això, es poden imprimir sobre la mateixa línia del pentagrama, usant l’ajustament que apareix a continuació.

normalPos = \revert MultiMeasureRest.direction

{
  <<
    {
      c''1
      R1
      c''1
      \normalPos
      R1
    }
    \\
    {
      c'1
      R1
      c'1
      \normalPos
      R1
    }
  >>
}

[image of music]


Modificació de la longitud del corxet de grup especial

Tuplet brackets can be made to run to prefatory matter or the next note. Default tuplet brackets end at the right edge of the final note of the tuplet; full-length tuplet brackets extend farther to the right, either to cover all the non-rhythmic notation up to the following note, or to cover only the whitespace before the next item of notation, be that a clef, time signature, key signature, or another note. The example shows how to switch tuplets to full length mode and how to modify what material they cover.

\new RhythmicStaff {
  % Set tuplets to be extendable...
  \set tupletFullLength = ##t
  % ...to cover all items up to the next note
  \set tupletFullLengthNote = ##t
  \time 2/4
  \tuplet 3/2 { c4 4 4 }
  % ...or to cover just whitespace
  \set tupletFullLengthNote = ##f
  \time 4/4
  \tuplet 5/4 { 4 1 }
  \time 3/4
  2.
}

[image of music]


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 }
>>

[image of music]


Multi-measure rest length control

Multi-measure rests have length according to their total duration which is under the control of MultiMeasureRest.space-increment. Note that the default value is 2.0.

\relative c' {
  \compressEmptyMeasures
  R1*2 R1*4 R1*64 R1*16
  \override Staff.MultiMeasureRest.space-increment = 2.5
  R1*2 R1*4 R1*64 R1*16
}

[image of music]


Marcatge de silencis multicompàs

Els elements de marcatge aplicats a un silenci multicompàs se centren a sobre o a sota del silenci. Els elements de marcatge extensos que s’adjunten a silencis multicompàs no produeixen l’expansió del comàs. Per expandir un silenci multicompàs de forma que càpiga tot el marcatge, utilitzeu un acord buit amb un marcatge aplicat abans del silenci multicompàs.

El text aplicat a un silenci separador d’aquesta forma s’alinea per l’esquerra a la posició en la qual la nota estaria situada dins del compàs, però si la longitud del compàs està determinada per la longitud del text, el text apareixerà centrat.

\relative c' {
  \compressMMRests {
    \textLengthOn
    <>^\markup { [MAJOR GENERAL] }
    R1*19
    <>_\markup { \italic { Cue: ... it is yours } }
    <>^\markup { A }
    R1*30^\markup { [MABEL] }
    \textLengthOff
    c4^\markup { CHORUS } d f c
  }
}

[image of music]


Nombres d’agrupació especial diferents o els predeterminats

El LilyPond també proporciona funcions de format per imprimir números de grup especial diferents a la pròpia fracció, així com per afegir una figura al número o a la fracció de l’agrupació.

\relative c'' {
  \once \override TupletNumber.text =
    #(tuplet-number::non-default-tuplet-denominator-text 7)
  \tuplet 3/2  { c4. c4. c4. c4. }
  \once \override TupletNumber.text =
    #(tuplet-number::non-default-tuplet-fraction-text 12 7)
  \tuplet 3/2  { c4. c4. c4. c4. }
  \once \override TupletNumber.text =
    #(tuplet-number::append-note-wrapper
      (tuplet-number::non-default-tuplet-fraction-text 12 7)
      (ly:make-duration 3 0))
  \tuplet 3/2  { c4. c4. c4. c4. }
  \once \override TupletNumber.text =
    #(tuplet-number::append-note-wrapper
      tuplet-number::calc-denominator-text
      (ly:make-duration 2 0))
  \tuplet 3/2  { c8 c8 c8 c8 c8 c8 }
  \once \override TupletNumber.text =
    #(tuplet-number::append-note-wrapper
      tuplet-number::calc-fraction-text
      (ly:make-duration 2 0))
  \tuplet 3/2  { c8 c8 c8 c8 c8 c8 }
  \once \override TupletNumber.text =
    #(tuplet-number::fraction-with-notes
      (ly:make-duration 2 1) (ly:make-duration 3 0))
  \tuplet 3/2  { c4. c4. c4. c4. }
  \once \override TupletNumber.text =
    #(tuplet-number::non-default-fraction-with-notes 12
      (ly:make-duration 3 0) 4 (ly:make-duration 2 0))
  \tuplet 3/2  { c4. c4. c4. c4. }
}

[image of music]


Numbering single measure rests

Multi measure rests show their length by a number except for single measures. This can be changed by setting restNumberThreshold.

{
  \compressEmptyMeasures
  R1 R1*10 R1*11 \bar "||"
  \set restNumberThreshold = 0
  R1 R1*10 R1*11 \bar "||"
  \set restNumberThreshold = 10
  R1 R1*10 R1*11
}

[image of music]


Partcombine i autoBeamOff

Pot ser difícil entendre la funció de \autoBeamOff quan s’usa amb \partcombine.

Pot ser preferible usar

\set Staff.autoBeaming = ##f

en el seu lloc, per assegurar-se que el barrat automàtic es desactiva per a tot el pentagrama.

\partcombine funciona aparentement amb tres veus: plica amunt quan hi ha una sola veu, plica avall amb l’altra, i plica amunt quan està combinada.

Una crida a \autoBeamOff en el primer argument de partcombine s’aplica a la veu que està activa en el moment en el qual es processa la crida, ja sigui veu única amb la plica cap amunt, cap avall o combinades. Una crida a \autoBeamOff en el segon argument s’aplica a la veu que estigui sola amb la aplica avall.

Per poder usar \autoBeamOff amb l’objectiu de detenir tot el barrat automàtic quan s’usa amb \partcombine, cal fer tres crides a \autoBeamOff.

{
  %\set Staff.autoBeaming = ##f % turns off all autobeaming
  \partCombine
  {
    \autoBeamOff % applies to split up stems
    \repeat unfold 4 a'16
    %\autoBeamOff % applies to combined up stems
    \repeat unfold 4 a'8
    \repeat unfold 4 a'16
  }
  {
    \autoBeamOff % applies to down stems
    \repeat unfold 4 f'8
    \repeat unfold 8 f'16 |
  }
}

[image of music]


Percussion example

A short example taken from Stravinsky’s L’Histoire du soldat.

#(define mydrums '((bassdrum   default #f  4)
                   (snare      default #f -4)
                   (tambourine default #f  0)))

global = {
  \time 3/8 s4.
  \time 2/4 s2*2
  \time 3/8 s4.
  \time 2/4 s2
}

drumsA = {
  \context DrumVoice <<
    { \global }
    { \drummode {
        \autoBeamOff
        \stemDown sn8 \stemUp tamb s8 |
        sn4 \stemDown sn4 |
        \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 |
        \stemDown sn8 \stemUp tamb s8 |
        \stemUp sn4 s8 \stemUp tamb
      }
    }
  >>
}

drumsB = {
  \drummode {
    s4 bd8 s2*2 s4 bd8 s4 bd8 s8
  }
}

\layout {
  indent = 40
  \context {
    \DrumStaff
    drumStyleTable = #(alist->hash-table mydrums)
  }
}

\score {
  \new StaffGroup <<
    \new DrumStaff \with {
      instrumentName = \markup \center-column {
        "Tambourine"
        "et"
        "caisse claire s. timbre"
        }
  }
  \drumsA
  \new DrumStaff \with {
    instrumentName = "Grosse Caisse"
  }
  \drumsB
  >>
}

[image of music]


Permetre salts de línia dins de grups especials amb barra

Aquest exemple artificial mostra com es poden permetre tant els salts de línia manuals com els automàtics dins d’un grup de valoració especial unit per una barra. Observeu que aquests grups sincopats s’han de barrar manualment.

\layout {
  \context {
    \Voice
    % Permit line breaks within tuplets
    \remove "Forbid_line_break_engraver"
    % Allow beams to be broken at line breaks
    \override Beam.breakable = ##t
  }
}
\relative c'' {
  a8
  \repeat unfold 5 { \tuplet 3/2 { c[ b a] } }
  % Insert a manual line break within a tuplet
  \tuplet 3/2 { c[ b \bar "" \break a] }
  \repeat unfold 5 { \tuplet 3/2 { c[ b a] } }
  c8
}

[image of music]


Col·locar les barres de les notes d’adorn a la mateixa alçada que les barres de notes normals

Quan es col·loquen figures sobre línies addicionals, les seves barres se situen generalment en mig del pentagrama. La barra de les notes d’adorn és més curta i les notes d’adorn sobre les línies addicionals podrien tenir la barra fora del pentagrama. Podem corregir aquest barrat per a les notes d’adorn.

\relative c {
  f8[ e]
  \grace {
    f8[ e]
    \override Stem.no-stem-extend = ##f
    f8[ e]
    \revert Stem.no-stem-extend
  }
  f8[ e]
}

[image of music]


Posicionament de les notes d’adorn amb espai flotant

En establir la propietat 'strict-grace-spacing fem que les columnes musicals per a les notes d’adorn siguin ‘flotants’, és a dir, desacoblades de les notes que no són d’adorn: primer s’aplica l’espaiat de les notes normals, i després es posen les columnes musicals de les notes d’adorn a l’esquerra de les columnes musicals de les notes principals.

\relative c'' {
  <<
    \override Score.SpacingSpanner.strict-grace-spacing = ##t
    \new Staff \new Voice {
      \afterGrace c4 { c16[ c8 c16] }
      c8[ \grace { b16 d } c8]
      c4 r
    }
    \new Staff {
      c16 c c c c c c c c4 r
    }
  >>
}

[image of music]


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 }
  >>
}

[image of music]


Positioning opposing fermatas on a bar line

This snippet demonstrates a command that prints fermatas both above and below a bar line. If there would not otherwise be a bar line, it adds a double bar line. Semantically, the command codes a longer-than-normal caesura, which might be considered misuse depending on the situation.

twoWayFermata = {
  \once \set Staff.caesuraType = #'((underlying-bar-line . "||"))
  \once \set Staff.caesuraTypeTransform = ##f
  \caesura ^\fermata _\fermata
}

music = {
  f'1 \twoWayFermata
  R1
  f'2 \twoWayFermata f'2
  R1
  b'1 \twoWayFermata \fine
}

\new GrandStaff <<
  \new Staff \music
  \new Staff \music
>>

[image of music]


Evitar que una marca de assaig final suprimeixi el corxet d’un grup de valoració especial

En afegir una marca d’assaig mark al final pot succeir que es perdi una indicació de grup especial col·locat al final. Es pot solucionar establint TupletBracket #'full-length-to-extent al valor false.

% due to issue 2362 a long mark such as
%   \textEndMark "Composed Feb 2007 - Feb 2008"
% cannot be used here.

\new Staff {
   \set tupletFullLength = ##t
   \time 1/8
   \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' }
   \tweak direction #DOWN \textEndMark "1234"
}

\new Staff {
  \set tupletFullLength = ##t
  \override TupletBracket.full-length-to-extent = ##f

  \time 1/8
   \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' }
   \tweak direction #DOWN \textEndMark "1234"
}

[image of music]


Imprimir números de compàs a intervals regulars

Es poden imprimir els nombre de compàs a intervals regulars mitjançant l’establiment de la propietat barNumberVisibility. Aquí els números de compàs s’imprimeixen cada dos compassos excepte al final de la línia.

\relative c' {
  \override Score.BarNumber.break-visibility = #end-of-line-invisible
  \set Score.currentBarNumber = #11
  % Print a bar number every second measure
  \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
  c1 | c | c | c | c
  \break
  c1 | c | c | c | c
}

[image of music]


Printing bar numbers for broken measures

By default a BarNumber of a broken measure is not repeated at the beginning of the new line. Use first-bar-number-invisible-save-broken-bars for barNumberVisibility to get a parenthesized BarNumber there.

\layout {
  \context {
    \Score
    barNumberVisibility = #first-bar-number-invisible-save-broken-bars
    \override BarNumber.break-visibility = ##(#f #t #t)
  }
}

\relative c' {
  c1 | d | e | f2 \bar "" \break
  fis | g1 | e2 \bar "" \break
  <>^"reenabled default"
  % back to default -
  % \unset Score.barNumberVisibility would do so as well
  \set Score.barNumberVisibility =
    #first-bar-number-invisible-and-no-parenthesized-bar-numbers
  es | d1 | c
}

[image of music]


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 "|."
}

[image of music]


Printing bar numbers using modulo-bar-number-visible

If the remainder of the division of the current BarNumber by the first argument of modulo-bar-number-visible equals its second argument print the BarNumber.

Useful to print the BarNumber at certain distances, p.e:

\layout {
  \context {
    \Score
    \override BarNumber.break-visibility = ##(#f #t #t)
    barNumberVisibility = #(modulo-bar-number-visible 3 2)
  }
}

\relative c' {
  c1 | d | e | f \break
  g1 | e | d | c
}

[image of music]


Printing bar numbers with changing regular intervals

Using the set-bar-number-visibility context function, bar number intervals can be changed.

\relative c' {
  \override Score.BarNumber.break-visibility = #end-of-line-invisible
  \context Score \applyContext #(set-bar-number-visibility 4)
  \repeat unfold 10 c'1
  \context Score \applyContext #(set-bar-number-visibility 2)
  \repeat unfold 10 c
}

[image of music]


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
}

[image of music]


Impressió de música que tingui compassos en cada pentagrama

En el següent fragment de codi, dues parts diferents tenen un compàs completament diferent i malgrat això es mantenen sincronitzades. Les barres de compàs ja no es poden imprimir en el nivell de Score; per permetre barres de compàs independents en cada part es tralladen els gravadores Default_barline_engraver i Timing_translator des del context de partitura Score fins el context de pentagrama Staff.

Si calen nombres de compàs, el gravador de nombres de compàs Bar_number_engraver també s’ha de traslladar, ja que descansa en propietat fixades pel Timing_translator; es pot usar un bloc \with per afegir nombres de compàs al pentagrama apropiat.

\paper {
  indent = #0
  ragged-right = ##t
}

global = { \time 3/4 { s2.*3 } \bar "" \break { s2.*3 } }

\layout {
  \context {
    \Score
    \remove "Timing_translator"
    \remove "Bar_number_engraver"
    \override SpacingSpanner.uniform-stretching = ##t
    \override SpacingSpanner.strict-note-spacing = ##t
    proportionalNotationDuration = #(ly:make-moment 1/64)
  }
  \context {
    \Staff
    \consists "Timing_translator"
  }
  \context {
    \Voice
    \remove "Forbid_line_break_engraver"
    tupletFullLength = ##t
  }
}

Bassklarinette = \new Staff \with {
  \consists "Bar_number_engraver"
  barNumberVisibility = #(every-nth-bar-number-visible 2)
  \override BarNumber.break-visibility = #end-of-line-invisible
} <<
  \global {
    \bar "|"
    \clef treble
    \time 3/8
    d''4.

    \bar "|"
    \time 3/4
    r8 des''2( c''8)

    \bar "|"
    \time 7/8
    r4. ees''2 ~

    \bar "|"
    \time 2/4
    \tupletUp
    \tuplet 3/2 { ees''4 r4 d''4 ~ }

    \bar "|"
    \time 3/8
    \tupletUp
    \tuplet 4/3 { d''4 r4 }

    \bar "|"
    \time 2/4
    e''2

    \bar "|"
    \time 3/8
    es''4.

    \bar "|"
    \time 3/4
    r8 d''2 r8
    \bar "|"
  }
>>

Perkussion = \new StaffGroup <<
  \new Staff <<
    \global {
      \bar "|"
      \clef percussion
      \time 3/4
      r4 c'2 ~

      \bar "|"
      c'2.

      \bar "|"
      R2.

      \bar "|"
      r2 g'4 ~

      \bar "|"
      g'2. ~

      \bar "|"
      g'2.
    }
  >>
  \new Staff <<
    \global {
      \bar "|"
      \clef percussion
      \time 3/4
      R2.

      \bar "|"
      g'2. ~

      \bar "|"
      g'2.

      \bar "|"
      r4 g'2 ~

      \bar "|"
      g'2 r4

      \bar "|"
      g'2.
    }
  >>
>>

\score {
  <<
    \Bassklarinette
    \Perkussion
  >>
}

[image of music]


Impressió del nombre de compàs al primer compàs

De forma predeterminada se suprimeix el nombre de compàs del primer compàs d’una partitura si és més petit o igual a ‘1’. En establir el valor de barNumberVisibility a all-bar-numbers-visible, es pot imprimir qualsevol nombre de compàs per al primer compàs i tots els següents. Observeu que, perquè això funcioni, s’ha d’inserir una línia divisòria buida abans de la primera nota.

\layout {
  indent = 0
  ragged-right = ##t
}

\relative c' {
  \set Score.barNumberVisibility = #all-bar-numbers-visible
  c1 | d | e | f \break
  g1 | e | d | c
}

[image of music]


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 }
  }
}

[image of music]


Redefinició dels valors globals predeterminats per a notes d’adorn

Els valors predeterminats per a les notes d’adorn estan emmagatzemats en els identificadors startGraceMusic, stopGraceMusic, startAcciaccaturaMusic, stopAcciaccaturaMusic, startAppoggiaturaMusic i stopAppoggiaturaMusic, que estan definits al fitxer ‘ly/grace-init.ly’. Redefinint-los es poden obtenir altres efectes.

startAcciaccaturaMusic = {
  <>(
  \override Flag.stroke-style = #"grace"
  \slurDashed
}

stopAcciaccaturaMusic = {
  \revert Flag.stroke-style
  \slurSolid
  <>)
}

\relative c'' {
  \acciaccatura d8 c1
}

[image of music]


Supressió dels nombres de compàs de tota la partitura

Es poden eliminar completament els nombres de compàs traient el gravador Bar_number_engraver del context de Score.

\layout {
  \context {
    \Score
    \omit BarNumber
    % or:
    %\remove "Bar_number_engraver"
  }
}

\relative c'' {
  c4 c c c \break
  c4 c c c
}

[image of music]


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
    }
  >>
}

[image of music]


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
}

[image of music]


Alteració dels finals de barra predeterminats

Per gravar les barres agrupades en la forma 3-4-3-2 sóls cal modificar l’estructura de polsos.

\relative c'' {
  \time 12/8

  % Default beaming
  a8 a a a a a a a a a a a

  % Set new values for beam endings
  \set Score.beatStructure = 3,4,3,2
  a8 a a a a a a a a a a a
}

[image of music]


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 |
  }
}

[image of music]


Silencis de separació en mode de lletra

La sintaxi s per als silencis de desplaçament sols està disponible als modes de nota i d’acord. En altres situacions, per exemple en escriure la lletra de les cançons, es recomana usar l’ordre \skip.

<<
  \relative c'' { a1 | a }
  \new Lyrics \lyricmode { \skip 1 bla1 }
>>

[image of music]


Silencis de separació en mode de lletra (2)

Tot i que no es poden usar els silencis de separació s dins de \lyricmode (s’agafen com una “s”, literal, no com un espai), sí hi ha disponibles les comtes dobles ("") i la barra baixa (_). Així com per exemple:

<<
  \relative c'' { a4 b c d }
  \new Lyrics \lyricmode { a4 "" _ gap }
>>

[image of music]


Stemlets (pliques de mida reduïda)

En certes convencions de notació es permet que les barres s’estenguin per sobre dels silencis. Depenent de les nostre preferències, aquestes barres poden presentar petites pliques perquè l’ull apreciï més fàcilment el ritme, i en alguns casos de música moderna el propi silenci s’omet i romanen sols les petites pliques sense cap.

Aquest fragment de codi mostra un progressió a partir de la notació tradicional, passant per barres sobre silencis i pliques sobre els silencis, fins les pliques sols. Les petites pliques o Stemlets es generen sobreescrivint la propietat 'stemlet-length de l’objecte Stem, mentre que els silencis queden ocults establint 'transparent = ##t.

Alguns elements de \markup s’inclouen en la font per imprimir títols sobre cada estil de notació.

\paper { ragged-right = ##f }

{
  c'16^\markup { traditional } d' r f'
  g'16[^\markup { beams over rests } f' r d']

  % N.B. use Score.Stem to set for the whole score.
  \override Staff.Stem.stemlet-length = #0.75

  c'16[^\markup { stemlets over rests } d' r f']
  g'16[^\markup { stemlets and no rests } f'
  \once \hide Rest
  r16 d']
}

[image of music]


Barres que respecten el pols estrictament

Es poden fer que les barres secundàries apuntin en la direcció del pols o fracció a que pertanyen. La primera barra evita els corxets aïllats (que és el comportament predeterminat); la segona barra segueix el pols o fracció estrictament.

\relative c'' {
  \time 6/8
  a8. a16 a a
  \set strictBeatBeaming = ##t
  a8. a16 a a
}

[image of music]


Subdivisió de barres

Les barres de semicorxera, o de figures més breus, no es subdivideixen de forma predeterminada. És a dir, les tres (o més) barres s’amplien sense trencar-se sobre grups complets de notes. Aquest comportament es pot modificar per subdividir les barres en subgrups mitjançant l’establiment de la propietat subdivideBeams. Quan està activada, les barres es subdivideixen a intervals definits pel valor actual de baseMoment mitjançant la reducció de les barres repetides a una sola entre els subgrups. Observeu que el valor predeterminat de baseMoment és un més que el denominador del tipus de compàs actual, si no es fixa explícitament. S’ha d’ajustar a una fracció que dóna la duració del subgrup de barres utilitzant la funció ly:make-moment, como es veu en aquest fragment de codi. Així mateix, quan es modifica baseMoment, s’hauria de canviar també beatStructure perquè correspongui al baseMoment nou:

\relative c'' {
  c32[ c c c c c c c]
  \set subdivideBeams = ##t
  c32[ c c c c c c c]

  % Set beam sub-group length to an eighth note
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c c c c]

  % Set beam sub-group length to a sixteenth note
  \set baseMoment = #(ly:make-moment 1/16)
  \set beatStructure = 4,4,4,4
  c32[ c c c c c c c]

  % Shorten beam by 1/32
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c c c] r32

  % Shorten beam by 3/32
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c] r16.
  r2
}

[image of music]


Tam-tam example

A tam-tam example, entered with ’tt’

#(define mydrums '((tamtam default #f 0)))

\new DrumStaff \with { instrumentName = #"Tamtam" }

\drummode {
  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
  \override Staff.StaffSymbol.line-positions = #'( 0 )
  \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5)

  tt 1 \pp \laissezVibrer
}

[image of music]


Tambourine example

A tambourine example, entered ’tamb’

\paper { tagline = ##f }

#(define mydrums '((tambourine default #f 0)))

\new DrumStaff \with { instrumentName = #"Tambourine" }

\drummode {
  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
  \override Staff.StaffSymbol.line-positions = #'( 0 )
  \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5)

  \time 6/8
  tamb8. 16 8 8 8 8 |
  tamb4. 8 8 8 |
  % the trick with the scaled duration and the shorter rest
  % is neccessary for the correct ending of the trill-span!
  tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan |
}

[image of music]


Rectangle de tres segments visibles

Aquest exemple mostra com afegir una ordre de marcatge per obtenir un rectangle de tres segments visibles rodejant un element de text (o un altre element de marcatge).

% New command to add a three sided box, with sides north, west and south
% Based on the box-stencil command defined in scm/stencil.scm
% Note that ";;" is used to comment a line in Scheme
#(define-public (NWS-box-stencil stencil thickness padding)
   "Add a box around STENCIL, producing a new stencil."
   (let* ((x-ext (interval-widen (ly:stencil-extent stencil X) padding))
          (y-ext (interval-widen (ly:stencil-extent stencil Y) padding))
          (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext))
          (x-rule (make-filled-box-stencil
                   (interval-widen x-ext thickness) (cons 0 thickness))))
     ;; (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding))
     (set! stencil (ly:stencil-combine-at-edge stencil X LEFT y-rule padding))
     (set! stencil (ly:stencil-combine-at-edge stencil Y UP x-rule 0.0))
     (set! stencil (ly:stencil-combine-at-edge stencil Y DOWN x-rule 0.0))
     stencil))

% The corresponding markup command, based on the \box command defined
% in scm/define-markup-commands.scm
#(define-markup-command (NWS-box layout props arg) (markup?)
   #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2))
   "Draw a box round @var{arg}.  Looks at @code{thickness},
@code{box-padding} and @code{font-size} properties to determine line
thickness and padding around the markup."
   (let ((pad (* (magstep font-size) box-padding))
         (m (interpret-markup layout props arg)))
     (NWS-box-stencil m thickness pad)))

% Test it:

\relative c' {
  c1^\markup { \NWS-box ABCD }
  c1^\markup { \NWS-box \note {4} #1.0 }
}

[image of music]


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
}

[image of music]


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
}

[image of music]


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
}

[image of music]


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
    }
  }
}

[image of music]


User defined time signatures

New time signature styles can be defined. The time signature in the second measure should be upside down in both staves.

#(add-simple-time-signature-style 'topsy-turvy
   (lambda (fraction)
     (make-rotate-markup 180 (make-compound-meter-markup fraction))))

<<
  \new Staff {
    \time 3/4 f'2.
    \override Score.TimeSignature.style = #'topsy-turvy
    \time 3/4 R2. \bar "|."
  }
  \new Staff {
    R2. e''
  }
>>

[image of music]


Ú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
    }
  }
}

[image of music]


Utilitzar la barra que tatxa les notes amb notes normals

És possible aplicar la barreta que creua la barra de les acciacatures, en altres situacions.

\relative c'' {
  \override Flag.stroke-style = #"grace"
  c8( d2) e8( f4)
}

[image of music]


Ús de les lligadures als arpegis

Algunes vegades s’usen lligadures d’unió per escriure els arpegis. En aquest cas, les dues notes lligades no han de ser consecutives. Això es pot aconseguir establint la propietat tieWaitForNote al valor #t. La mateixa funcionalitat és d’utilitat, per exemple, per lligar un tremol a un acord, però en principi també es pot usar per a notes normals consecutives. l

\relative c' {
  \set tieWaitForNote = ##t
  \grace { c16[ ~ e ~ g] ~ } <c, e g>2
  \repeat tremolo 8 { c32 ~ c' ~ } <c c,>1
  e8 ~ c ~ a ~ f ~ <e' c a f>2
  \tieUp
  c8 ~ a
  \tieDown
  \tieDotted
  g8 ~ c g2
}

[image of music]


Expressive marks

Expressive marks


Afegir barres, lligadures d’expressió i d’unió, etc., quan s’usen ritmes amb i sense grups de valoració especial.

La sintaxi del LilyPond pot implicar moltes col·locacions poc comunes per als parèntesis, claus, etc., que a vegades s’han d’intercalar. Per exemple, en introduir una barra manual, la clau esquerra d’apertura s’ha d’escriure després de la nota inicial i de la seva duració, no abans. De forma semblant, la clau dreta de tancament ha de seguir immediatament a la nota que es vol ubicar al final del barrat, fins i tot si aquesta nota resulta estar dins d’un grup de valoració especial. Aquest fragment de codi mostra com combinar el barrat manual, les lligadures d’expressió i d’unió i les lligadures de fraseig, amb seccions de valoració especial (tancades entre claus).

{
  r16[ g16 \tuplet 3/2 { r16 e'8] }
  g16( a \tuplet 3/2 { b d e') }
  g8[( a \tuplet 3/2 { b d') e'] ~ }
  \time 2/4
  \tuplet 5/4 { e'32\( a b d' e' } a'4.\)
}

[image of music]


Envoltar entre parèntesis una marca expressiva o una nota d’un acord

La funció \parenthesize és un ajustament especial que envolta objectes entre parèntesis. EL grob associat és ParenthesesItem.

\relative c' {
  c2-\parenthesize ->
  \override Parentheses.padding = #0.1
  \override Parentheses.font-size = #-4
  <d \parenthesize f a>2
}

[image of music]


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 |
}

[image of music]


Ajustar la forma de les caigudes i pujades de to

Pot caldre ajustar la propietat shortest-duration-space per poder ajustar la mida de les caigudes i pujades de to («falls» i «doits»).

\relative c'' {
  \override Score.SpacingSpanner.shortest-duration-space = #4.0
  c2-\bendAfter #5
  c2-\bendAfter #-4.75
  c2-\bendAfter #8.5
  c2-\bendAfter #-6
}

[image of music]


Aligning the ends of hairpins to NoteColumn directions

The ends of hairpins may be aligned to the LEFT, CENTER or RIGHT of NoteColumn grobs by overriding the property endpoint-alignments, which is a pair of numbers representing the left and right ends of the hairpin. endpoint-alignments are expected to be directions (either -1, 0 or 1). Other values will be transformed with a warning. The right end of a hairpin terminating at a rest is not affected, always ending at the left edge of the rest.

{
  c'2\< <c' d'>\! |
  \override Hairpin.endpoint-alignments = #'(1 . -1)
  c'2\< <c' d'>\! |
  \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER)
  c'2\< <c' d'>\! |
}

[image of music]


Formes alternatives de la figura breu

Les figures de breu també estan disponibles amb dues línies verticals a les vores del cap en lloc d’una sola línia i la forma en estil barroc.

\relative c'' {
  \time 4/2
  c\breve |
  \override Staff.NoteHead.style = #'altdefault
  b\breve
  \override Staff.NoteHead.style = #'baroque
  b\breve
  \revert Staff.NoteHead.style
  a\breve
}

[image of music]


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
}

[image of music]


Marques de respiració

Les marques de respiració estan disponibles per diversos gustos: coma (la predeterminada), ratlla curta, v baixa i “vies del tren” (cesura).

\new Staff \relative c'' {
  \key es \major
  \time 3/4
  % this bar contains no \breathe
  << { g4 as g } \\ { es4 bes es } >> |
  % Modern notation:
  % by default, \breathe uses the rcomma, just as if saying:
  % \override BreathingSign.text =
  %   #(make-musicglyph-markup "scripts.rcomma")
  << { g4 as g } \\ { es4 \breathe bes es } >> |

  % rvarcomma and lvarcomma are variations of the default rcomma
  % and lcomma
  % N.B.: must use Staff context here, since we start a Voice below
  \override Staff.BreathingSign.text =
    \markup { \musicglyph "scripts.rvarcomma" }
  << { g4 as g } \\ { es4 \breathe bes es } >> |

  % raltcomma and laltcomma are alternative variations of the
  % default rcomma and lcomma
  \override Staff.BreathingSign.text =
    \markup { \musicglyph "scripts.raltcomma" }
  << { g4 as g } \\ { es4 \breathe bes es } >> |

  % vee
  \override BreathingSign.text =
    \markup { \musicglyph "scripts.upbow" }
  es8[ d es f g] \breathe f |

  % caesura
  \override BreathingSign.text =
    \markup { \musicglyph "scripts.caesura.curved" }
  es8[ d] \breathe es[ f g f] |
  es2 r4 \bar "||"
}

[image of music]


Regulador interromput

Per fer invisibles parts d’un regulador de crescendo, s’usa el mètode de dibuixar un rectangle blanc a sobre de la respectiva del regulador, tapant-la. El rectangle es defineix com codi de postscript dins d’un element de marcatge de text.

L’ordre de marcatge with-dimensions indica al LilyPond que consideri sols l’extrem inferior del rectangle quan realitzi l’espaiat d’aquest rectangle frente al regulador. La propietat staff-padding evita que el rectangle càpiga entre el regulador i el pentagrama.

Assegureu-vos que el regulador està a una capa més baixa que l’element de marcatge de text per traçar el rectangle a sobre del regulador.

\relative c' {
  <<
    {
      \dynamicUp
      r2 r16 c'8.\pp r4
    }
    \\
    {
      \override DynamicLineSpanner.layer = #0
      des,2\mf\< ~
      \override TextScript.layer = #2
      \once\override TextScript.staff-padding = #6
      \once\override TextScript.vertical-skylines = #'()
      des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0)
                    \with-color #white
                    \filled-box #'(2 . 7) #'(0 . 2) #0
      r8. des4 ~ des16->\sff r8.
    }
  >>
}

[image of music]


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 "|."
}

[image of music]


Centrar text a sota d’un regulador

Aquest exemple proporciona una funció per escriure un regulador amb text a sota, com “molto” o “poco”. El text afegit canvia la direcció d’acord amb la del regulador. L’objecte hairpin està alineat amb DynamicText.

L’exemple il·lustra també com modificar la manera en la qual s’imprimeix normalment un object, utilitzat codi de l’Scheme.

\paper { tagline = ##f }

hairpinWithCenteredText =
#(define-music-function (text) (markup?)
  #{
    \once \override Voice.Hairpin.after-line-breaking =
      #(lambda (grob)
        (let* ((stencil (ly:hairpin::print grob))
               (par-y (ly:grob-parent grob Y))
               (dir (ly:grob-property par-y 'direction))
               (staff-line-thickness
                 (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness))
               (new-stencil (ly:stencil-aligned-to
                 (ly:stencil-combine-at-edge
                   (ly:stencil-aligned-to stencil X CENTER)
                   Y dir
                   (ly:stencil-aligned-to
                     (grob-interpret-markup
                       grob
                       (make-fontsize-markup
                         (magnification->font-size
                           (+ (ly:staff-symbol-staff-space grob)
                              (/ staff-line-thickness 2)))
                           text)) X CENTER))
                 X LEFT))
               (staff-space (ly:output-def-lookup
                 (ly:grob-layout grob) 'staff-space))
               (par-x (ly:grob-parent grob X))
               (dyn-text (grob::has-interface par-x 'dynamic-text-interface))
               (dyn-text-stencil-x-length
                 (if dyn-text
                   (interval-length
                     (ly:stencil-extent (ly:grob-property par-x 'stencil) X))
                   0))
               (x-shift
                 (if dyn-text
                   (-
                     (+ staff-space dyn-text-stencil-x-length)
                     (* 0.5 staff-line-thickness)) 0)))

        (ly:grob-set-property! grob 'Y-offset 0)
        (ly:grob-set-property! grob 'stencil
           (ly:stencil-translate-axis
            new-stencil
            x-shift X))))
  #})

hairpinMolto =
\hairpinWithCenteredText \markup { \italic molto }

hairpinMore =
\hairpinWithCenteredText \markup { \larger moltissimo }

\layout { ragged-right = ##f }

\relative c' {
  \hairpinMolto
  c2\< c\f
  \hairpinMore
  c2\ppppp\< c\f
  \break
  \hairpinMolto
  c2^\< c\f
  \hairpinMore
  c2\ppppp\< c\f
}

[image of music]


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
}

[image of music]


Modificar l’aspecte continu d’una lligadura d’expressió a puntejat o intermitent

Es pot canviar l’aspecte de les lligadures d’expressió de contínues a puntejades o intermitents.

\relative c' {
  c4( d e c)
  \slurDotted
  c4( d e c)
  \slurSolid
  c4( d e c)
  \slurDashed
  c4( d e c)
  \slurSolid
  c4( d e c)
}

[image of music]


Canviar el símbol de la marca de respiració

El glif de la marca de respiració es pot ajustar sobreescrivint la propietat de text de l’objecte de presentació BreathingSign, amb qualsevol altre text de marcatge.

\relative c'' {
  c2
  \override BreathingSign.text =
    \markup { \musicglyph "scripts.rvarcomma" }
  \breathe
  d2
}

[image of music]


Modificar el nombre de puntets d’una nota

La quantitat de puntets d’una nota es pot modificar independentment dels puntets que s’escriuen després d’una nota.

\relative c' {
  c4.. a16 r2 |
  \override Dots.dot-count = #4
  c4.. a16 r2 |
  \override Dots.dot-count = #0
  c4.. a16 r2 |
  \revert Dots.dot-count
  c4.. a16 r2 |
}

[image of music]


Combinar indicacions dinàmiques amb marcatges textuals

Certes indicacions dinàmiques poden portar textos (com “più forte” o “piano subito”). Es poden produir usant un bloc \markup.

piuF = \markup { \italic più \dynamic f }

\layout { ragged-right = ##f }

\relative c'' {
  c2\f c-\piuF
}

[image of music]


Glissando contemporani

Es pot gravar un glissando contemporani sense nota final utilitzant una nota oculta i temporització de cadenza.

\relative c'' {
  \time 3/4
  \override Glissando.style = #'zigzag
  c4 c
  \cadenzaOn
  c4\glissando
  \hideNotes
  c,,4
  \unHideNotes
  \cadenzaOff
  \bar "|"
}

[image of music]


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
}

[image of music]


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 }
}

[image of music]


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)
}

[image of music]


Crear arpegis entre notes de veus diferents

Es pot dibuixar un símbol d’arpegi entre notes de diferents veus que estan sobre el mateix pentagrama si el gravador Span_arpeggio_engraver es trasllada al context de Staff:

\new Staff \with {
  \consists "Span_arpeggio_engraver"
}
\relative c' {
  \set Staff.connectArpeggios = ##t
  <<
    { <e' g>4\arpeggio <d f> <d f>2 }
    \\
    { <d, f>2\arpeggio <g b>2 }
  >>
}

[image of music]


Crear arpegis que es creuen entre pentagrames dins d’un sistema de piano

Dins d’un PianoStaff, és possible fer que un arpegi creuï entre els pentagrames ajustant la propietat PianoStaff.connectArpeggios.

\new PianoStaff \relative c'' <<
  \set PianoStaff.connectArpeggios = ##t
  \new Staff {
    <c e g c>4\arpeggio
    <g c e g>4\arpeggio
    <e g c e>4\arpeggio
    <c e g c>4\arpeggio
  }
  \new Staff {
    \clef bass
    \repeat unfold 4 {
      <c,, e g c>4\arpeggio
    }
  }
>>

[image of music]


Creació d’arpegis que es creuen entre pentagrames dins d’altres contextos

Es poden crear arpegis que es creuen entre pentagrames dins de contextos diferents a GrandStaff, PianoStaff i Span_arpeggio_engraver en el context de Score.

\score {
  \new ChoirStaff {
    \set Score.connectArpeggios = ##t
    <<
      \new Voice \relative c' {
        <c e>2\arpeggio
        <d f>2\arpeggio
        <c e>1\arpeggio
      }
      \new Voice \relative c {
        \clef bass
        <c g'>2\arpeggio
        <b g'>2\arpeggio
        <c g'>1\arpeggio
      }
    >>
  }
  \layout {
    \context {
      \Score
      \consists "Span_arpeggio_engraver"
    }
  }
}

[image of music]


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
}

[image of music]


Crear indicacions dinàmiques "vertaderes" entre parèntesis

Tot i que la manera més fàcil d’afegir parèntesis a una indicació de dinàmica és utilitzar un bloc \markup, aquest mètode té un inconvenient: els objectes que es creen es comportaran com elements de marcatge de text i no com indicacions dinàmiques.

No obstant, és possible crear un objecte utilitzant el codi de l’Scheme equivalent (com s’explica a la Referència de la notació), en combinació amb la funció make-dynamic-script. D’aquesta forma l’element de marcatge es tractarà com una indicació dinàmica, i per tant seguirà sent compatible amb ordre com ara \dynamicUp o \dynamicDown.

paren =
#(define-event-function (dyn) (ly:event?)
   (make-dynamic-script
    #{ \markup \concat {
         \normal-text \italic \fontsize #2 (
	 \pad-x #0.2 #(ly:music-property dyn 'text)
	 \normal-text \italic \fontsize #2 )
       }
    #}))

\relative c'' {
  c4\paren\f c c \dynamicUp c\paren\p
}

[image of music]


Fer lligadures entre veus diferents

En determinades situacions cal crear lligadures d’expressió entre notes que estan a veus diferents.

La solució és afegir notes invisible a una de les veus utilitzant \hideNotes.

Aquest exemple és el compàs 235 de la Chacona de la segona Partita per a violí sol, BMW 1004, de Bach.

\relative c' {
  <<
    {
      d16( a') s a s a[ s a] s a[ s a]
    }
    \\
    {
      \slurUp
      bes,16[ s e](
      \hideNotes a)
      \unHideNotes f[(
      \hideNotes a)
      \unHideNotes fis](
      \hideNotes a)
      \unHideNotes g[(
      \hideNotes a)
      \unHideNotes gis](
      \hideNotes a)
    }
  >>
}

[image of music]


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
}

[image of music]


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
}

[image of music]


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\!
}

[image of music]


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,
}

[image of music]


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\!
}

[image of music]


Ocultar la línia d’extensió de les expressions textuals de dinàmica

Els canvis de dinàmica amb estil de text (com cresc. i dim.) es graven amb una línia intermitent que mostra el seu abast. Aquesta línia es pot suprimir de la manera següent:

\relative c'' {
  \override DynamicTextSpanner.style = #'none
  \crescTextCresc
  c1\< | d | b | c\!
}

[image of music]


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 }

[image of music]


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
}

[image of music]


Lligaduras “Laissez vibrer”

Les lligadures “Laissez vibrer” (deixar vibrar) tenen una mida fixa. Es pot ajustar el seu format usant 'tie-configuration.

\relative c' {
  <c e g>4\laissezVibrer r <c f g>\laissezVibrer r
  <c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8

  <c d e f>4\laissezVibrer r
  \override LaissezVibrerTieColumn.tie-configuration
     = #`((-7 . ,DOWN)
          (-5 . ,DOWN)
          (-3 . ,UP)
          (-1 . ,UP))
  <c d e f>4\laissezVibrer r
}

[image of music]


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
}

[image of music]


Fer lligadures d’expressió amb estructura complexa de discontinuïtat

Les lligadures d’expressió es poden construir amb patrons de discontinuïtat complexos mitjançant la definició de la propietat dash-definition. dash-definition és una llista de paràmetres que defineixen el comportament de discontinuïtat d’un segment de la lligadura d’expressió.

La lligadura es defineix en termes del paràmetre de bezier t el rang del qual va de 0 a l’esquerra de la lligadura fins a 1 a l’extrem dret de la lligadura. cada element de discontinuïtat és una llista (t-inici t-final fracció-discontinuïtat període-discontinuitat). La regió de la lligadura des de t-inici fins a t-final tindrà una fracció fracció-discontinuitat de cada període-discontinuïtat de color negre. període-discontinuïtat es defineix en termes d’espais de pentagrama. fracció-discontinuïtat s’estableix al valor d’1 per a una lligadura contïnua.

\relative c' {
  \once \override
    Slur.dash-definition = #'((0 0.3 0.1 0.75)
                                (0.3 0.6 1 1)
                                (0.65 1.0 0.4 0.75))
  c4( d e f)
  \once \override
    Slur.dash-definition = #'((0 0.25 1 1)
                                (0.3 0.7 0.4 0.75)
                                (0.75 1.0 1 1))
  c4( d e f)
}

[image of music]


Modificació dels valors predeterminats per a la notació abreviada de les articulacions

Les abreviatures es troben definides dins del fitxer ‘ly/script-init.ly’, on les variablesdashHat, dashPlus, dashDash, dashBar, dashLarger, dashDot i dashUnderscore reben valors predeterminats. Es poden modificar aquests valors predeterminats per a les abreviatures. Per exemple, per associar l’abraviatura -+ (dashPlus) amb el símbol de semitrí en cmptes del símbol predeterminat +, assigneu el valor trill a la variable dashPlus:

\relative c'' { c1-+ }

dashPlus = \trill

\relative c'' { c1-+ }

[image of music]


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)
}

[image of music]


Moving the ends of hairpins

The ends of hairpins may be offset by setting the shorten-pair property of the Hairpin object. Positive values move endpoints to the right, negative to the left. Unlike the minimum-length property, this property only affects the appearance of the hairpin; it does not adjust horizontal spacing (including the position of bounding dynamics). This method is thus suitable for fine-tuning a hairpin within its allotted space.

{
  c'1~\<
  c'2~ c'\!
  \once \override Hairpin.shorten-pair = #'(2 . 2)
  c'1~\<
  c'2~ c'\!
  \once \override Hairpin.shorten-pair = #'(-2 . -2)
  c'1~\<
  c'2~ c'\!
  c'1~\p-\tweak shorten-pair #'(2 . 0)\<
  c'2~ c'\ffff
}

[image of music]


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
}

[image of music]


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
}

[image of music]


Impressió de reguladors en diversos estils

Els reguladors es poden crear en una àmplia varietat d’estils.

\relative c'' {
  \override Hairpin.stencil = #flared-hairpin
  a4\< a a a\f
  a4\p\< a a a\ff
  a4\sfz\< a a a\!
  \override Hairpin.stencil = #constante-hairpin
  a4\< a a a\f
  a4\p\< a a a\ff
  a4\sfz\< a a a\!
  \override Hairpin.stencil = #flared-hairpin
  a4\> a a a\f
  a4\p\> a a a\ff
  a4\sfz\> a a a\!
  \override Hairpin.stencil = #constante-hairpin
  a4\> a a a\f
  a4\p\> a a a\ff
  a4\sfz\> a a a\!
}

[image of music]


Impressió de reguladors utilitzant la notació «al niente»

Es poden imprimir reguladores amb un cercle en la punta (notació «al niente») establint la propietat circled-tip de l’objecte Hairpin al valor #t.

\relative c'' {
  \override Hairpin.circled-tip = ##t
  c2\< c\!
  c4\> c\< c2\!
}

[image of music]


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
}

[image of music]


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\!
}

[image of music]


Ajustament de la longitud mínima dels reguladors

Si els reguladors són massa curts, es poden allargar modificant la propietat minimum-length de l’objecte Hairpin.

<<
  {
    \after 4 \< \after 2 \> \after 2. \! f'1
    \override Hairpin.minimum-length = #8
    \after 4 \< \after 2 \> \after 2. \! f'1
  }
  {
    \repeat unfold 8 c'4
  }
>>

[image of music]


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
}

[image of music]


Pizzicato “snap” o pizzicato de Bartók

El “snap-pizzicato” (pizzicato de pessigada, conegut també com “pizzicato de Bartók”) és un “pizzicato fort en el qual la corda es polsa verticalment pessigant-la i fent que reboti contra el diapasó de l’instrument” (Wikipedia). Es doneta mitjançant un cercle com una línia vertical que surt del centre del cercla cap amunt.

\relative c' {
  c4\snappizzicato
  <c' e g>4\snappizzicato
  <c' e g>4^\snappizzicato
  <c, e g>4_\snappizzicato
}

[image of music]


Usar una ratlla curta com a símbol de respiració

La música vocal i de vent usa amb freqüència una ratlla curta com a signe de respiració. Això indica una respiració que treu una mica de temps a la nota anterior enlloc de produir una pausa curta, cosa que s’indica amb la marca de respiració en forma de coma. La marca es pot moure lleugerament cap a dalt per allunyar-la del pentagrama.

\relative c'' {
  c2
  \breathe
  d2
  \override BreathingSign.Y-offset = #2.6
  \override BreathingSign.text =
    \markup { \musicglyph "scripts.tickmark" }
  c2
  \breathe
  d2
}

[image of music]


Ús de arpeggioBracket per fer més visible un divisi

El corxet d’arpegis arpeggioBracket es pot usar per indicar la divisió de veus quan no hi ha pliques que puguin oferir aquesta informació. Se sol trobar a la múśica coral.

\include "english.ly"

\score {
  \relative c'' {
    \key a \major
    \time 2/2
    <<
      \new Voice = "upper"
      <<
        { \voiceOne \arpeggioBracket
          a2( b2
          <b d>1\arpeggio)
          <cs e>\arpeggio ~
          <cs e>4
        }
        \addlyrics { \lyricmode { A -- men. } }
      >>
      \new Voice = "lower"
      { \voiceTwo
        a1 ~
        a
        a ~
        a4 \bar "|."
      }
    >>
  }
  \layout { ragged-right = ##t }
}

[image of music]


Utilitzar lligadures dobles per acords legato

Alguns compositors escriuen dues lligadures quan volen acords legato. Això es pot aconseguir establint doubleSlurs.

\relative c' {
  \set doubleSlurs = ##t
  <c e>4( <d f> <c e> <d f>)
}

[image of music]


Ús de la propietat whiteout

Es pot imprimir qualsevol objecte gràfic sobre un fons blanc per ocultar part dels objectes que estan a sota. Això pot ser útil per millorar l’aspecte de les col·lisions en situaciones complexes quan no es pràctic tornar a col·locar els objectes. Cal establir explícitament la propietat de capa (layer) per controlar quins objectes resulten ocultats pel fons blanc.

En aquest exemple, la col·lisió de la lligadura d’unió amb la indicació de compàs resulta millorada ocultant la part de la lligadura que creua la indicació de compàs mitjançant l’establiment de la propietat whiteout de TimeSignature. per fer això, es mou TimeSignature a una capa per sobre de Tie, que es deixa a la capa predeterminada d’1, i StaffSymbol es mou a una capa per sobre de TimeSignature de manera que no resulti ocultada.

{
  \override Score.StaffSymbol.layer = #4
  \override Staff.TimeSignature.layer = #3
  b'2 b'~
  \once \override Staff.TimeSignature.whiteout = ##t
  \time 3/4
  b' r4
}

[image of music]


Línia vertical com una articulació barroca

Aquesta línia curta vertical a sobre de la nota és d’ús comú en la música barroca. El seu significat varia, però en general indica notes que s’han de tocar amb més “pes”. L’exemple següent mostra com aconseguir aquesta notació.

upline =
\tweak stencil
  #(lambda (grob)
    (grob-interpret-markup grob #{ \markup \draw-line #'(0 . 1) #}))
  \stopped

\relative c' {
  a'4^\upline a( c d')_\upline
}

[image of music]


Alinear verticalment expressions dinàmiques que abasten diverses notes

Les expressions dinàmiques que es comencen, acaben o es produeixen a la mateixa nota, s’alineen verticalment. Per assegurar que les expressions dinàmiques s’alineen quan no es produeixen sobre la mateixa nota, incrementeu la propietat staff-padding de l’objecte DynamicLineSpanner.

\relative c' {
  \override DynamicLineSpanner.staff-padding = #4
  c2\p f\mf
  g2\< b4\> c\!
}

[image of music]


Repeats

Repeats


Afegir claus de repetició i segona vegada a més pentagrames

El gravador Volta_engraver resideix de forma predeterminada dins del context de Score, i les claus de repetició‘s’imprimeixen així normalment sols a sobre el pentagrama superior. Aixo es pot ajustar afegint el gravador Volta_engraver al context de Staff el el qual han d’aparèixer les claus; vegeu també el fragment de codi “Volta multi staff”.

<<
  \new Staff { \repeat volta 2 { c'1 } \alternative { c' } }
  \new Staff { \repeat volta 2 { c'1 } \alternative { c' } }
  \new Staff \with { \consists "Volta_engraver" } { c'2 g' e' a' }
  \new Staff { \repeat volta 2 { c'1 } \alternative { c' } }
>>

[image of music]


Nombres de compàs centrats

Sovint, les partitures d’obres per a conjunts grnas tenen els nombres de compàs a sota del sistems i centrats horitzontalment sobre l’amplada del compàs. Aquest fragment de codi mostra com pot usar-se el gravador Measure_counter_engraver per simular aquesta pràctica de notació. Aquí hem afegit el gravador a un context Dynamics.

\layout {
  \context {
    \Dynamics
    \consists #Measure_counter_engraver
    \override MeasureCounter.direction = #DOWN
    \override MeasureCounter.font-encoding = #'latin1
    \override MeasureCounter.font-shape = #'italic
    % to control the distance of the Dynamics context from the staff:
    \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #2
  }
  \context {
    \Score
    \remove "Bar_number_engraver"
  }
}

pattern = \repeat unfold 7 { c'4 d' e' f' }

\new StaffGroup <<
  \new Staff {
    \pattern
  }
  \new Staff {
    \pattern
  }
  \new Dynamics {
    \startMeasureCount
    s1*7
    \stopMeasureCount
  }
>>

[image of music]


Changing the default bar lines

Default bar lines can be changed when re-defined in a score context.

% http://lsr.di.unimi.it/LSR/Item?id=964
%%=> http://lists.gnu.org/archive/html/lilypond-user/2014-03/msg00126.html
%%=> http://lilypond.1069038.n5.nabble.com/Changing-the-default-end-repeat-bracket-tc169357.html

\layout {
  \context {
    \Score
    %% Changing the defaults from engraver-init.ly
    measureBarType = #"!"
    startRepeatBarType = #"[|:"
    endRepeatBarType = #":|]"
    doubleRepeatBarType = #":|][|:"
  }
}

%% example:
{
  c'1
  \repeat volta 2 { \repeat unfold 2 c' }
  \repeat volta 2 { \repeat unfold 2 c' }
  \alternative {
    { c' }
    {
      %% v2.18 workaround
      \once\override Score.VoltaBracket.shorten-pair = #'(1 . -1)
      c'
    }
  }
  \bar "|."
}

[image of music]


Trèmolos de pentagrama creuat

Atès que \repeat tremolo espera exactament dos arguments musicals per als trèmolos d’acord, la nota o acord que canvia de pentagrama a un trèmolo que creua el pentagrama s’ha de col·locar dins de claus corbes junt a la seva ordre \change Staff.

\new PianoStaff <<
  \new Staff = "up" \relative c'' {
    \key a \major
    \time 3/8
    s4.
  }
  \new Staff = "down" \relative c'' {
    \key a \major
    \time 3/8
    \voiceOne
    \repeat tremolo 6 {
      <a e'>32
      {
        \change Staff = "up"
        \voiceTwo
        <cis a' dis>32
      }
    }
  }
>>

[image of music]


Trèmols amb barres flotants

Si la duració total d’un trèmol és menor d’una negra, o exactament d’una blanca, normalment es grava amb totes les barres de corxera tocant les pliques. Certs estils de notació de partitures composen algunes d’aquestes barres com a barres flotants centrades que no toquen les pliques de les figures. El nombre de barres flotants en aquest tipus de trèmol està controlat per la propietat 'gap-count del l’objecte Beam i la separació entre les barres i les pliques es fixa amb la propietat 'gap.

\relative c'' {
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #1
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #2
  \repeat tremolo 8 { a32 f }
  \override Beam.gap-count = #3
  \repeat tremolo 8 { a32 f }

  \override Beam.gap-count = #3
  \override Beam.gap = #1.33
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #1
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #0.67
  \repeat tremolo 8 { a32 f }
  \override Beam.gap = #0.33
  \repeat tremolo 8 { a32 f }
}

[image of music]


Símbols de percentatge aïllats

També es poden imprimir símbols de percentatge aïllats.

makePercent =
#(define-music-function (note) (ly:music?)
   "Make a percent repeat the same length as NOTE."
   (make-music 'PercentEvent
               'length (ly:music-length note)))

\relative c'' {
  \makePercent s1
}

[image of music]


Comptador de compassos

Aquest fragment de codi proporciona una solució alternativa a la producció de comptadors de compàs utilitzant repeticions transparents de tipus percentatge.

<<
  \context Voice = "foo" {
    \clef bass
    c4 r g r
    c4 r g r
    c4 r g r
    c4 r g r
  }
  \context Voice = "foo" {
    \set countPercentRepeats = ##t
    \hide PercentRepeat
    \override PercentRepeatCounter.staff-padding = #1
    \repeat percent 4 { s1 }
  }
>>

[image of music]


Numerar grups de compassos

Aquest fragment de codi mostra l’ús del gravador Measure_counter_engraver per numerar grups de compassos successius. Es pot numerar qualsevol període de compassos tant si té repeticions com si no.

S’ha d’afegir el gravador al context adequat. Aquí s’usa un context Staff; una altra possibilitat seria un context Dynamics.

El comptador s’inicia amb \startMeasureCount i finalitza amb \stopMeasureCount. La numeració comença amb 1, de forma predeterminada, però es pot modificar aquest comportament sobreescrivint la propietat count-from.

Quan un compàs s’estén més enllà d’un salt de línia, el número apareix dues vegades, la segona vegada entre parèntesi.

\layout {
  \context {
    \Staff
    \consists #Measure_counter_engraver
  }
}

\new Staff {
  \startMeasureCount
  \repeat unfold 7 {
    c'4 d' e' f'
  }
  \stopMeasureCount
  \bar "||"
  g'4 f' e' d'
  \override Staff.MeasureCounter.count-from = #2
  \startMeasureCount
  \repeat unfold 5 {
    g'4 f' e' d'
  }
  g'4 f'
  \bar ""
  \break
  e'4 d'
  \repeat unfold 7 {
    g'4 f' e' d'
  }
  \stopMeasureCount
}

[image of music]


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 }
}

[image of music]


Comptador de repeticions de tipus percentatge

Les repeticions de compassos complets de més en dues repeticions poden portar un comptador si s’activa la propietat adequada, com es veu en aquest exemple:

\relative c'' {
  \set countPercentRepeats = ##t
  \repeat percent 4 { c1 }
}

[image of music]


Posicionar els símbols de repetició segno i coda (amb salts de línia)

Si volem col·locar un símbol de segno de sortida i afegir text com “D.S. al Coda” al costat on normalment estan les línies del pentagrama, podem usar aquest codi. La coda continua en una línia nova. Hi ha una variant documentada en el fragment de codi, on la coda es manté en la mateixa línia.

{
  \relative c'' {
    c4 c c c c c c c c c c c
    \repeat segno 2 {
      c4 c c c c c c c
      \alternative {
        \volta 1 {
          c4 c c c c c c c c c c c
          % If you don't use \break at Coda, use \noBreak here
          % and after \bar "" below.
          \noBreak