Frammenti LilyPond: Rhythms

# Rhythms

Rhythms

## Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms

LilyPond syntax can involve many unusual placements for parentheses, brackets etc., which might sometimes have to be interleaved.

For example, when entering a manual beam, the left square bracket has to be placed after the starting note and its duration, not before. Similarly, the right square bracket should directly follow the note which is to be at the end of the requested beaming, even if this note happens to be inside a tuplet section.

This snippet demonstrates how to combine manual beaming, manual slurs, ties and phrasing slurs with tuplet sections (enclosed within curly braces).

    {
      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.\)
    }

## Adding drum parts

Using the powerful pre-configured tools such as the `\drummode` function and the `DrumStaff` context, inputting drum parts is quite easy: drums are placed at their own staff positions (with a special clef symbol) and have note heads according to the drum. Attaching an extra symbol to the drum or restricting the number of lines is possible.

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

## Adjusting grace note spacing

The space given to grace notes can be adjusted using the `spacing-increment` property of `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
    }

## Allineare i numeri di battuta

Per impostazione predefinita i numeri di battuta sono allineati a destra rispetto al loro oggetto genitore. Di solito si tratta del margine sinistro della linea oppure, se i numeri appaiono all’interno della linea, del lato sinistro della stanghetta. I numeri possono essere posizionati anche direttamente sopra la stanghetta oppure allineati a sinistra della stanghetta.

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

## Note brevi alternative

Le note brevi sono disponibili anche con due linee verticali su ciascun lato della testa invece di una sola e in stile barocco.

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

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

## Automatic beam subdivisions

Beams can be subdivided automatically. By setting the property `subdivideBeams`, beams are subdivided at beat positions (as specified in `baseMoment`).

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

## Automatically change durations

`shiftDurations` can be used to change the note lengths of a piece of music.

It takes two arguments - the scaling factor as a power of two, and the number of dots to be added as a positive integer.

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

## Estremità delle travature nel contesto Score

Le regole relative alle estremità delle travature definite nel contesto `Score` si applicano a tutti i righi, ma possono essere modificate anche ai livelli `Staff` e `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
            }
          >>
        }
      >>
    }

## Travature che attraversano le interruzioni di linea

Le interruzioni di linea sono di norma proibite quando le travature attraversano la stanghetta di una battuta. Si può cambiare questo comportamento nel modo seguente:

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

## Modificare la distanza delle travature angolari

Le travature angolari vengono inserite automaticamente quando viene rilevata un’ampia distanza tra le teste di nota. Questo comportamento può essere regolato attraverso la proprietà `auto-knee-gap`. Viene disegnata una travatura angolare se la distanza è più grande del valore di `auto-knee-gap` più la larghezza della travatura (che dipende dalla durata delle note e dall’inclinazione della travatura). Il valore predefinito di `auto-knee-gap` è 5.5 spazi rigo.

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

## Modificare la forma delle pause multiple

Se la pausa multipla dura dieci misure o un numero inferiore a dieci, nel rigo apparirà una serie di pause di longa e di breve (chiamate in tedesco “Kirchenpausen” - pause ecclesiastiche); altrimenti apparirà una semplice linea. Il numero predefinito di dieci può essere cambiato sovrascrivendo la proprietà `expand-limit`..

    \relative c'' {
      \compressMMRests {
        R1*2 | R1*5 | R1*9
        \override MultiMeasureRest.expand-limit = #3
        R1*2 | R1*5 | R1*9
      }
    }

## Modifica del numero di punti di aumentazione per nota

Il numero di punti di aumentazione su una singola nota può essere modificato in modo indipendente dai punti posizionati dopo la 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 |
    }

## Modificare il tempo senza mostrare l’indicazione metronomica

Per cambiare il tempo del file MIDI senza che appaia l’indicazione metronomica, basta renderla invisibile.

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

## Modifica del numero del gruppo irregolare

Di norma compare sulla parentesi del gruppo irregolare solo il numeratore del numero del gruppo irregolare, ovvero il numeratore dell’argomento del comando `\tuplet`. Ma è possibile mostrare la frazione num:den del numero del gruppo irregolare oppure nascondere del tutto il numero.

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

## Changing time signatures inside a polymetric section using \scaleDurations

The `measureLength` property, together with `measurePosition`, determines when a bar line is needed. However, when using `\scaleDurations`, the scaling of durations makes it difficult to change time signatures. In this case, `measureLength` should be set manually, using the `ly:make-moment` callback. The second argument must be the same as the second argument of `\scaleDurations`.

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

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

## Notazione per canti e salmi

Questa forma di notazione è utilizzata per i salmi, dove i versi non sono sempre della stessa lunghezza.

    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 \bar "||"
        \stemOff a'\breve g'4 a'4
        \stemOn f'2 \bar "||"
        \stemOff a'\breve^\markup { \italic flexe }
        \stemOn g'2 \bar "||"
      }
    }

## Compound time signatures

Odd 20th century time signatures (such as "5/8") can often be played as compound time signatures (e.g. "3/8 + 2/8"), which combine two or more inequal metrics.

LilyPond can make such music quite easy to read and play, by explicitly printing the compound time signatures and adapting the automatic beaming behavior.

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

## Segni per la conduzione, segni di raggruppamento della misura

Il raggruppamento delle pulsazioni all’interno della misura è regolato dalla proprietà di contesto `beatStructure`. I valori di `beatStructure` per varie indicazioni di tempo vengono stabiliti in `scm/time-signature-settings.scm`. Questi valori possono essere impostati o modificati con `\set`. Altrimenti, si può usare `\time` per impostare sia l’indicazione di tempo che la struttura delle pulsazioni. Per farlo si specifica il raggruppamento interno delle pulsazioni in una misura in una lista di numeri (nella sintassi di Scheme) prima dell’indicazione di tempo.

`\time` agisce nel contesto `Timing`, dunque non reimposterà i i valori di `beatStructure` e `baseMoment` che sono impostati in altri contesti di più basso livello, come `Voice`.

Se si include l’incisore `Measure_grouping_engraver` in uno dei contesti che regolano l’aspetto, appariranno i segni di raggruppamento della misura. Tali segni facilitano la lettura di musica moderna ritmicamente complessa. Nell’esempio la misura di 9/8 è raggruppata in due diversi schemi usando due metodi differenti, mentre la misura di 5/8 è raggruppata in base alle impostazioni predefinite in `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"
        }
      }
    }

## Consistently left aligned bar numbers

When left aligning bar numbers, overlapping problems may occur with Staves brackets.

The snippet solves this by keeping right aligned the first bar number following line breaks.

    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
    }

## Controllare la visibilità della parentesi del gruppo irregolare

Il comportamento predefinito relativo alla visibilità della parentesi quadra del gruppo irregolare è di mostrare una parentesi a meno che non ci sia una travatura della stessa lunghezza del gruppo.

Per controllare la visibilità di tale parentesi, si imposta la proprietà `'bracket-visibility` su `#t` (mostra sempre la parentesi), `#'if-no-beam` (mostra la parentesi solo se non c’è una travatura, che è il comportamento predefinito) o `#f` (non mostrare mai la parentesi). L’ultima opzione equivale a omettere l’oggetto @code{TupletBracket} dall’output.

    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' {
        << \music s4^"default" >>
        \override TupletBracket.bracket-visibility = #'if-no-beam
        << \music s4^"'if-no-beam" >>
        \override TupletBracket.bracket-visibility = ##t
        << \music s4^"#t" >>
        \override TupletBracket.bracket-visibility = ##f
        << \music s4^"#f" >>
        \omit TupletBracket
        << \music s4^"omit" >>
      }
    }

## Creare indicazioni metronomiche in modalità testuale

Si possono creare nuove indicazioni metronomiche in modalità testuale, ma non modificheranno il tempo del file 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
    }

## Disegnare manualmente le legature di valore

Le legature di valore possono essere disegnate a mano cambiando la proprietà `tie-configuration` dell’oggetto `TieColumn`. Il primo numero indica la distanza dal centro del rigo nell’unità di metà spazio rigo, mentre il secondo numero indica la direzione (1 = su, -1 = giù).

Si noti che LilyPond fa una distinzione tra valori precisi e imprecisi per il primo numero. Se si usa un valore preciso (ovvero un intero o una frazione come `(/ 4 5)`), il valore serve come posizione verticale approssimata che viene ulteriormente aggiustata da LilyPond per far sì che la legatura di valore eviti le linee del rigo. Se si usa un valore impreciso, come una virgola mobile, viene usato per la posizione verticale senza ulteriori regolazioni.

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

## Engraving tremolos with floating beams

If a tremolo’s total duration is less than a quarter-note, or exactly a half-note, or between a half-note and a whole-note, it is normally typeset with all beams touching the stems. Certain engraving styles typeset some of these beams as centered floating beams that do not touch the stems. The number of floating beams in this type of tremolo is controlled with the `'gap-count` property of the `Beam` object, and the size of the gaps between beams and stems is set with the `'gap` property.

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

## Inserire vari gruppi irregolari usando una sola volta il comando \tuplet

La proprietà `tupletSpannerDuration` imposta la durata di ognuno dei gruppi irregolari compresi tra parentesi dopo il comando `\tuplet`. In questo modo si possono inserire molti gruppi irregolari consecutivi all’interno di una singola espressione `\tuplet`, risparmiando così tempo e spazio.

Ci sono vari modi per impostare `tupletSpannerDuration`. Il comando `\tupletSpan` la imposta su una certa durata e poi la annulla quando invece di una durata viene specificato `\default`. Altrimenti si può usare un argomento opzionale con `\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 }
    }

## Code e punte delle travature

È possibile ottenere delle codette su note isolate e dei tratti di suddivisione all’estremità della travatura con una combinazione di `stemLeftBeamCount`, `stemRightBeamCount` e una coppia di indicatori della travatura `[]`.

Per ottenere delle codette rivolte a destra, si usa la coppia di indicatori `[]` e si imposta `stemLeftBeamCount` a zero (vedi Example 1).

Per ottenere delle codette rivolte a sinistra, si imposta invece `stemRightBeamCount` (Example 2).

Perché i tratti di suddivisione alla fine di un gruppo di note unite da travatura siano rivolti a destra, si imposta `stemRightBeamCount` su un valore positivo. Perché i tratti di suddivisione all’inizio di un gruppo di note unite da travatura siano rivolti a sinistra, si imposta invece `stemLeftBeamCount` (Example 3).

Talvolta, ad esempio per una nota isolata circondata da pause, ha senso avere una coda che punti sia a destra che a sinistra. Lo si può fare con una coppia di indicatori di travatura `[]` da soli (Example 4).

(Nota che `\set stemLeftBeamCount` è sempre equivalente a `\once \set`. In altre parole, le impostazioni che definiscono il conteggio delle travature non “permangono”, quindi la coppia di code attaccate al `16[]` solitario nell’ultimo esempio non hanno nulla a che fare con l’impostazione `\set` di due note prima.)

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

## Forcing rehearsal marks to start from a given letter or number

This snippet demonstrates how to obtain automatic ordered rehearsal marks, but from the letter or number desired.

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

## Generating custom flags

The `stencil` property of the `Flag` grob can be set to a custom scheme function to generate the glyph for the flag.

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

    {
      \override Score.RehearsalMark.self-alignment-X = #LEFT
      \time 1/4
      \mark "Normal flags"
      \snippetexamplenotes

      \mark "Custom flag: inverted"
      \override Flag.stencil = #inverted-flag
      \snippetexamplenotes

      \mark "Custom flag: weight"
      \override Flag.stencil = #weight-flag
      \snippetexamplenotes

      \mark "Revert to normal"
      \revert Flag.stencil
      \snippetexamplenotes
    }

## Ritmi di accompagnamento per chitarra

Per la musica per chitarra, è possibile mostrare i ritmi di accompagnamento, insieme alle note della melodia e ai nomi e ai diagrammi degli accordi.

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

## Heavily customized polymetric time signatures

Though the polymetric time signature shown was not the most essential item here, it has been included to show the beat of this piece (which is the template of a real Balkan song!).

    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 {
      \bar ".|:" bd4.^\markup { Drums } sn4 bd \bar ";" sn4.
      bd4 sn \bar ";" bd sn bd4. sn4 bd \bar ":|."
    }

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

    {
      \melody
      \drum
    }

## Making an object invisible with the ’transparent property

Setting the `transparent` property will cause an object to be printed in “invisible ink”: the object is not printed, but all its other behavior is retained. The object still takes up space, it takes part in collisions, and slurs, ties and beams can be attached to it.

This snippet demonstrates how to connect different voices using ties. Normally, ties only connect two notes in the same voice. By introducing a tie in a different voice, and blanking the first up-stem in that voice, the tie appears to cross voices.

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

## Legature di portamento con complesse strutture di tratteggio

Le legature di portamento possono avere schemi di tratteggio complessi definendo la proprietà `dash-definition`. `dash-definition` è una lista di `dash-elements`. Un `dash-element` è una lista di parametri che definiscono il comportamento del tratteggio per un segmento della legatura.

La legatura di portamento è definita come il parametro t della curva di bezier che va da 0 sul margine sinistro della legatura fino a 1 su quello destro. `dash-element` è una lista di `(inizio-t fine-t frazione-trattino punto-trattino)`. La regione della legatura di portamento che va da `inizio-t` a `fine-t` avrà una frazione `frazione-trattino` di ogni `punto-trattino` nero. `punto-trattino` viene definito in spazi rigo. `frazione-trattino` è impostato su 1 per una legatura di portamento continua.

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

## Manually controlling beam positions

Beam positions may be controlled manually, by overriding the `positions` setting of the `Beam` grob.

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

## Merging multi-measure rests in a polyphonic part

When using multi-measure rests in a polyphonic staff, the rests will be placed differently depending on the voice they belong to. However they can be printed on the same staff line, using the following setting.

    normalPos = \revert MultiMeasureRest.direction

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

## Modifying tuplet bracket length

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

## Spostare le note puntate in polifonia

Quando una nota puntata della voce più alta viene spostata per evitare una collisione con una nota di un’altra voce, il comportamento predefinito è spostare la nota più alta a destra. Tale comportamento può essere modificato tramite la proprietà `prefer-dotted-right` di `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 }
    >>

## Regolazione della lunghezza delle pause multiple

Le pause multiple hanno una lunghezza che dipende dalla loro durata totale e tale lunghezza è regolata da `MultiMeasureRest.space-increment`. Nota che il valore predefinito è `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
    }

## Testo a margine delle pause multiple

Il testo a margine di una pausa multipla viene centrato sopra o sotto di essa. Se il testo è lungo, la misura non si espanderà. Per espandere la pausa multipla in modo che si allinei col testo, conviene usare un accordo vuoto con del testo attaccato prima della pausa multipla.

Il testo così attaccato a una nota spaziatrice viene allineato a sinistra della posizione in cui la nota sarebbe posta nella misura, ma se la lunghezza della misura è determinata dalla lunghezza del testo, il testo verrà centrato.

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

## Numeri non predefiniti per i gruppi irregolari

LilyPond fornisce anche funzioni di formattazione che permettono di creare numeri di gruppi irregolari diversi dalla frazione vera e propria, così come di aggiungere un valore di nota al numero o alla frazione di un gruppo irregolare.

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

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

## PartCombine e autoBeamOff

La funzione `\autoBeamOff`, se usata insieme a `\partCombine`, può essere difficile da comprendere.

È preferibile usare invece

`\set Staff.autoBeaming = ##f`

per assicurarsi che la disposizione delle travature sia disabilitata per tutto il rigo.

`\partCombine` funziona con 3 voci – gambo in su singolo, gambo in giù singolo, gambo in su unito.

L’uso di `\autoBeamOff` all’interno del primo argomento di partCombine ha effetto sulla voce che è attiva al momento in cui la funzione viene elaborata, ovvero sul gambo in su singolo o sul gambo in giù unito. L’uso di `\autoBeamOff` nel secondo argomento avrà effetto sulla voce che ha il gambo in giù singolo.

Per poter usare `\autoBeamOff` per impedire tutte le disposizioni automatiche delle travature, se usato con `\partCombine`, è necessario richiamare tre volte la funzione `\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 |
      }
    }

## Percussion example

A short example taken from Stravinsky’s L’histoire du Soldat.

    #(define mydrums '((bassdrum   default #t  4)
                       (snare      default #t -4)
                       (tambourine default #t  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
    }

    \score {
      \new StaffGroup <<
        \new DrumStaff \with {
          instrumentName = \markup {
            \center-column {
              "Tambourine"
              "et"
              "caisse claire s. timbre"
            }
          }
        drumStyleTable = #(alist->hash-table mydrums)
      }
      \drumsA
      \new DrumStaff \with {
        instrumentName = #"Grosse Caisse"
        drumStyleTable = #(alist->hash-table mydrums)
      }
      \drumsB
      >>
    }

## Consentire l’interruzione del rigo all’interno di gruppi irregolari con travature

Questo esempio artificioso mostra come permettere interruzioni del rigo sia manuali che automatiche all’interno di un gruppo irregolare con travature. Si noti che le travature di questi gruppi irregolari fuori dal ritmo devono essere disposte manualmente.

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

## Positioning grace note beams at the height of normal note beams

When notes are placed on ledger lines, their beams are usually centred on the stave. Grace notes beams are shorter and grace notes on ledger lines may well have beams outside the stave. You can override this beaming for grace notes.

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

## Posizionare gli abbellimenti con dello spazio fluttuante

Se si imposta la proprietà `'strict-grace-spacing`, le colonne musicali degli abbellimenti ’fluttuano’, ovvero si scollegano dalle note normali: prima vengono spaziate le note normali, poi le colonne musicali degli abbellimenti vengono messe a sinistra delle colonne delle note principali.

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

## Posizionamento delle pause multiple

Diversamente dalle pause normali, non esiste un comando predefinito per cambiare la posizione sul rigo di un simbolo di pausa multipla di qualsiasi tipo connettendolo a una nota. Tuttavia, nella musica polifonica le pause multiple nelle voci dispari e pari sono separate verticalmente. Il posizionamento delle pause multiple si controlla nel modo seguente:

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

## Preventing final mark from removing final tuplet

The addition of a final `mark` can result in the loss of a final tuplet marking. This can be overcome by setting `TupletBracket.full-length-to-extent` to `false`.

    % due to issue 2362 a long mark such as
    %   \mark "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' }
       \override Score.RehearsalMark.break-visibility = ##(#t #t #t)
       \override Score.RehearsalMark.direction = #DOWN
       \override Score.RehearsalMark.self-alignment-X = #RIGHT
       \mark "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' }
      \override Score.RehearsalMark.break-visibility = ##(#t #t #t)
      \override Score.RehearsalMark.direction = #DOWN
      \override Score.RehearsalMark.self-alignment-X = #RIGHT
       \mark "1234"
    }

## Mostrare i numeri di battuta a intervalli regolari

I numeri di battuta possono essere resi visbili a intervalli regolari attraverso la proprietà `barNumberVisibility`. In questo esempio vengono mostrati ogni due misure eccetto alla fine della linea.

    \relative c' {
      \override Score.BarNumber.break-visibility = #end-of-line-invisible
      \set Score.currentBarNumber = #11
      % Permit first bar number to be printed
      \bar ""
      % 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
    }

## Numeri di battuta racchiusi in rettangoli o cerchi

I numeri di battuta possono apparire anche all’interno di rettangoli o cerchi.

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

## Stampare i numeri di battuta a intervalli regolari variabili

L’intervallo dei numeri di battuta può essere modificato cambiando la funzione di contesto `{set-bar-number-visibility}`.

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

## Posizionare il metronomo e i numeri di chiamata sotto il rigo

Di norma, il metronomo e i numeri di chiamata vengono posizionati sopra il rigo. Per metterli sotto il rigo basta impostare correttamente la proprietà `direction` di `MetronomeMark` o `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
    }

## Printing music with different time signatures

In the following snippet, two parts have a completely different time signature, yet remain synchronized.

The bar lines can no longer be printed at the `Score` level; to allow independent bar lines in each part, the `Default_barline_engraver` and `Timing_translator` are moved from the `Score` context to the `Staff` context.

If bar numbers are required, the `Bar_number_engraver` should also be moved, since it relies on properties set by the `Timing_translator`; a `\with` block can be used to add bar numbers to the relevant staff.

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

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

    \layout {
      \context {
        \Score
        \remove "Timing_translator"
        \remove "Default_bar_line_engraver"
        \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"
        \consists "Default_bar_line_engraver"
      }
      \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
      >>
    }

## Mostrare il numero di battuta nella prima misura

Il primo numero di battuta di una partitura viene soppresso se è inferiore o uguale a ‘1’. Se si imposta `barNumberVisibility` su `all-bar-numbers-visible`, verrà mostrato il numero di battuta della prima misura e di tutte quelle successive. Si noti che perché funzioni è necessario inserire una stanghetta invisibile prima della prima nota.

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

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

## Ridefinire le impostazioni predefinite globali degli abbellimenti

Le impostazioni globali predefinite degli abbellimenti sono salvate negli identificatori `startGraceMusic`, `stopGraceMusic`, `startAcciaccaturaMusic`, `stopAcciaccaturaMusic`, `startAppoggiaturaMusic` e `stopAppoggiaturaMusic`, che sono definiti nel file `ly/grace-init.ly`. Ridefinendoli si possono ottenere effetti diversi.

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

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

    \relative c'' {
      \acciaccatura d8 c1
    }

## Togliere i numeri di battuta da uno spartito

I numeri di battuta possono essere tolti rimuovendo l’incisore `Bar_number_engraver` dal contesto `Score`.

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

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

## Removing connecting bar lines on StaffGroup, PianoStaff, or GrandStaff

By default, bar lines in StaffGroup, PianoStaff, or GrandStaff groups are connected between the staves, i.e. a SpanBar is printed. This behaviour can be overridden on a staff-by-staff basis.

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

## Stili di pausa

Esistono vari stili di pausa.

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

## Reverting default beam endings

To typeset beams grouped `3-4-3-2` in 12/8 it is necessary first to override the default beam endings in 12/8, and then to set up the new beaming endings:

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

## Rhythmic slashes

In “simple” lead-sheets, sometimes no actual notes are written, instead only “rhythmic patterns” and chords above the measures are notated giving the structure of a song. Such a feature is for example useful while creating/transcribing the structure of a song and also when sharing lead sheets with guitarists or jazz musicians.

The standard support for this using `\repeat percent` is unsuitable here since the first beat has to be an ordinary note or rest.

This example shows two solutions to this problem, by redefining ordinary rests to be printed as slashes. (If the duration of each beat is not a quarter note, replace the `r4` in the definitions with a rest of the appropriate duration).

    % Macro to print single slash
    rs = {
      \once \override Rest.stencil = #ly:percent-repeat-item-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-item-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 |
      }
    }

## Skips in lyric mode (2)

Although `s` skips cannot be used in `\lyricmode` (it is taken to be a literal “s”, not a space), double quotes (`""`) or underscores (`_`) are available.

So for example:

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

## Skips in lyric mode

The `s` syntax for skips is only available in note mode and chord mode. In other situations, for example, when entering lyrics, using the `\skip` command is recommended.

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

## Stemlets

In some notational conventions beams are allowed to extend over rests. Depending on preference, these beams may drop ’stemlets’ to help the eye appreciate the rhythm better, and in some modern music the rest itself is omitted and only the stemlet remains.

This snippet shows a progression from traditional notation, to beams over the rest, to stemlets over the rest, to stemlets alone. Stemlets are generated by overriding the `'stemlet-length` property of `Stem`, while rests are hidden by setting `'transparent = ##t`.

Some `\markup` elements are included in the source to highlight the different notations.

    \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']
    }

## Travatura che segue strettamente il battito

Si possono impostare i tratti di suddivisione della travatura in modo che siano rivolti verso la relativa pulsazione. La prima travatura fa sì che non spuntino i tratti di suddivisione (comportamento predefinito); la seconda travatura è orientata verso la pulsazione.

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

## Suddividere le travature

Le travature di note consecutive di un sedicesimo (o più brevi) non vengono suddivise, ovvero i tre (o più) tratti della travatura si estendono, senza spezzarsi, sugli interi gruppi di note. Questo comportamento può essere modificato in modo da suddividere le travature in sottogruppi attraverso la proprietà `subdivideBeams`. Se impostata, le travature che comprendono più sottogruppi verranno suddivise a intervalli definiti dal valore attuale di `baseMoment`, riducendo le travature multiple al numero di travature che indica il valore metrico della suddivisione. Se il gruppo successivo alla suddivisione è più breve del valore metrico corrente (di solito perché la travatura è incompleta), il numero di travature riflette il gruppo di suddivisione più lungo possibile. Tuttavia, se rimane una sola nota dopo la divisione, questa restrizione non viene applicata. Si noti che `baseMoment`, se non impostata esplicitamente, equivale a uno fratto il denominatore dell’attuale indicazione di tempo. Deve quindi essere impostata su una frazione che stabilisca la durata del sottogruppo di travature; lo si può fare usando la funzione `ly:make-moment`, come è mostrato in questo frammento di codice. Inoltre quando `baseMoment` cambia, anche `beatStructure` deve essere modificato per accordarsi con `baseMoment`:

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

## Tam-tam example

A tam-tam example, entered with ’tt’

    #(define mydrums '((tamtam default #t 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
    }

## Three-sided box

This example shows how to add a markup command to get a three sided box around some text (or other markup).

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

## Time signature in parentheses - method 3

Another way to put the time signature in parenthesis

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

## Time signature in parentheses

The time signature can be enclosed within parentheses.

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

## Indicazione di tempo che mostra solo il numeratore (invece della frazione)

Talvolta un’indicazione di tempo non deve mostrare la frazione intera (ad esempio 7/4), ma solo il numeratore (7 in questo caso). Si può ottenere facilmente con `\override Staff.TimeSignature.style = #'single-digit`, che cambia lo stile in modo permanente. Con `\revert Staff.TimeSignature.style`, questa impostazione può essere annullata. Per applicare lo stile a cifra singola (`single-digit`) a una sola indicazione di tempo, si usa il comando `\override` preceduto da `\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
    }

## Modificare l’aspetto degli abbellimenti di un intero brano

L’aspetto di tutte le espressioni contenute nei blocchi `\grace` di un brano può essere modificato con le funzioni `add-grace-property` e `remove-grace-property`. L’esempio seguente toglie la definizione della direzione di `Stem` nell’abbellimento, in modo che gli abbellimenti non siano sempre rivolti in su, e barra le teste di nota.

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

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

## Using alternative flag styles

Alternative styles of flag on eighth and shorter notes can be displayed by overriding the `stencil` property of `Flag`. Valid values are `modern-straight-flag`, `old-straight-flag` and `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
        }
      }
    }

## Usare il gambo barrato degli abbellimenti con le teste normali

Il gambo barrato presente nelle acciaccature può essere applicato in altre situazioni.

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

## Usare le legature di valore con un arpeggio

Le legature di valore vengono usate talvolta per scrivere un arpeggio. In questo caso, le due note da legare devono non essere consecutive. Per ottenere tale risultato occorre impostare la proprietà `tieWaitForNote` su `#t`. Questa funzionalità serve anche a legare un tremolo a un accordo e in generale qualsiasi coppia di note consecutive.

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

#### LilyPond — Frammenti v2.22.2 (ramo stabile).