LilyPond snippets: Repeats

# Repeats

Repeats

## Añadir corchetes de primera y segunda vez a más pentagramas

El grabador `Volta_engraver` reside de forma predeterminada dentro del contexto de `Score`, y los corchetes de la repetición se imprimen así normalmente sólo encima del pentagrama superior. Esto se puede ajustar añadiendo el grabador `Volta_engraver` al contexto de `Staff` en que deban aparecer los corchetes; véase también el fragmento de código “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' } }
    >>

## Números de compás centrados

Con frecuencia, las partituras de obras para conjuntos grandes tienen los números de compás debajo del sistema y centrados horizontalmente sobre el ancho del compás. Este fragmento de código muestra cómo puede usarse el grabador `Measure_counter_engraver` para simular esta práctica notacional. Aquí hemos añadido el grabador a un contexto `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
      }
    >>

## 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
        defaultBarType = #"!"
        startRepeatType = #"[|:"
        endRepeatType = #":|]"
        doubleRepeatType = #":|][|:"
      }
    }

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

## Trémolos de pentagrama cruzado

Dado que `\repeat tremolo` espera exactamente dos argumentos musicales para los trémolos de acorde, la nota o acorde que cambia de pentagrama en un trémolo que cruza el pentagrama se debe colocar dentro de llaves curvas junto a su instrucción `\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
          }
        }
      }
    >>

## Trémolos con barras flotantes

Si la duración total de un trémolo es menor de una negra, o exactamente de una blanca, normalmente se compone tipográficamente con todas las barras de corchea tocando las plicas. Ciertos estilos de notación de partituras componen algunas de estas barras como barras flotantes centradas que no tocan las plicas de las figuras. El número de barras flotantes en este tipo de trémolo está controlado por la propiedad `'gap-count` del objeto `Beam` y la separación entre las barras y las plicas se fija con la propiedad `'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 }
    }

## Símbolos de porcentaje sueltos

También se pueden imprimir símbolos de porcentaje sueltos.

    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
    }

## Contador de compases

Este fragmento de código proporciona una solución alternativa a la producción de contadores de compás utilizando repeticiones transparentes de tipo porcentaje.

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

## Numerar grupos de compases

Este fragmento de código muestra el uso del grabador `Measure_counter_engraver` para numerar grupos de compases sucesivos. Se puede numerar cualquier período de compases tanto si tiene repeticiones como si no.

Se debe añadir el grabador al contexto adecuado. Aquí se usa un contexto `Staff`; otra posibilidad sería un contexto `Dynamics`.

El contador se inicia con `\startMeasureCount` y finaliza con `\stopMeasureCount`. La numeración comienza con `1`, de forma predeterminada, pero se puede modificar este comportamiento sobreescribiendo la propiedad `count-from`.

Cuando un compás se extiende más allá de un salto de línea, el número aparece dos veces, la segunda vez entre paréntesis.

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

## Visibilidad del contador de repeticiones de tipo porcentaje

Se pueden mostrar los contadores de las repeticiones del tipo porcentaje a intervalos regulares mediante el establecimiento de la propiedad de contexto `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 }
    }

## Contador de repeticiones de tipo porcentaje

Las repeticiones de compases completos de más de dos repeticiones pueden llevar un contador si se activa la propiedad adecuada, como se ve en este ejemplo:

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

## Posicionar los símbolos de repetición segno y coda (con saltos de línea)

Si queremos colocar un símbolo de segno de salida y añadir texto como “D.S. al Coda” junto a él donde normalmente están las líneas del pentagrama, cpodemos usar este código. La coda continúa en una línea nueva. Hay una variante documentada en el fragmento de código, donde la coda se mantiene en la misma línea.

    {
      \clef treble
      \key g \major
      \time 4/4
      \relative c'' {
        \repeat unfold 4 {
          c4 c c c
        }

        % Set segno sign as rehearsal mark and adjust size if needed
        % \once \override Score.RehearsalMark.font-size = #3
        \mark \markup { \musicglyph "scripts.segno" }
        \repeat unfold 2 {
          c4 c c c
        }

        % Set coda sign as rehearsal mark and adjust size if needed
        \once \override Score.RehearsalMark.font-size = #4
        \mark \markup { \musicglyph "scripts.coda" }
        \repeat unfold 2 {
          c4 c c c
        }

        % Should Coda be on anew line?
        % Coda NOT on new line: use \nobreak
        % Coda on new line: DON'T use \nobreak
        % \noBreak

        \bar "||"

        % Set segno sign as rehearsal mark and adjust size if needed
        \once \override Score.RehearsalMark.break-visibility =
          #begin-of-line-invisible
        % \once \override Score.RehearsalMark.font-size = #3
        \mark \markup { \musicglyph "scripts.segno" }

        % Here begins the trickery!
        % \cadenzaOn will suppress the bar count
        % and \stopStaff removes the staff lines.
        \cadenzaOn
        \stopStaff
            % Some examples of possible text-displays

            % text line-aligned
            % ==================
            % Move text to the desired position
            % \once \override TextScript.extra-offset = #'( 2 . -3.5 )
            % | <>^\markup { D.S. al Coda } }

            % text center-aligned
            % ====================
            % Move text to the desired position
            % \once \override TextScript.extra-offset = #'( 6 . -5.0 )
            % | <>^\markup { \center-column { D.S. "al Coda" } }

            % text and symbols center-aligned
            % ===============================
            % Move text to the desired position
            % and tweak spacing for optimum text alignment
            \repeat unfold 1 {
              s1
              \bar ""
            }
            \once \override TextScript.extra-offset = #'( 0 . -3.0 )
            \once \override TextScript.word-space = #1.5
            <>^\markup { \center-column { "D.S. al Coda"
              \line {
                \musicglyph "scripts.coda"
                \musicglyph "scripts.tenuto"
                \musicglyph "scripts.coda"} } }

            % Increasing the unfold counter will expand the staff-free space
            \repeat unfold 3 {
              s1
              \bar ""
            }
            % Resume bar count and show staff lines again
        \startStaff
        \cadenzaOff

        % Should Coda be on new line?
        % Coda NOT on new line: DON'T use \break
        % Coda on new line: use \break
        \break

        % Show up, you clef and key!
        \once \override Staff.KeySignature.break-visibility = #end-of-line-invisible
        \once \override Staff.Clef.break-visibility = #end-of-line-invisible

        % Set coda sign as rehearsal mark and adjust size and position

        % Put the coda sign on top of the (treble-)clef
        % depending on coda's line-position

        % Coda NOT on new line, use this:
        % \once \override Score.RehearsalMark.extra-offset = #'( -2 . 1.75 )

        % Coda on new line, use this:
        \once \override Score.RehearsalMark.extra-offset = #'( -5 . .5 )

        \once \override Score.RehearsalMark.font-size = #5
        \mark \markup { \musicglyph "scripts.coda" }

        % The coda
        \repeat unfold 6 {
          c4 c c c
        }
        \bar"|."
      }
    }

## Establecer el tipo de repetición doble predeterminado para la primera y segunda vez

Existen tres estilos distintos de repeticiones dobles para la primera y segunda vez, que se pueden ajustar utilizando `doubleRepeatType`.

    \relative c'' {
      \repeat volta 1 { c1 }
      \set Score.doubleRepeatType = #":..:"
      \repeat volta 1 { c1 }
      \set Score.doubleRepeatType = #":|.|:"
      \repeat volta 1 { c1 }
      \set Score.doubleRepeatType = #":|.:"
      \repeat volta 1 { c1 }
    }

## Acortar los corchetes de primera y segunda vez

De forma predeterminada, los corchetes de primera y segunda vez se trazan encima de los finales alternativos completos, pero es posible acortartlos estableciendo un valor cierto para `voltaSpannerDuration`. En el ejemplo siguiente, el corchete sólo dura un compás, que corresponde a una duración de 3/4.

    \relative c'' {
      \time 3/4
      c4 c c
      \set Score.voltaSpannerDuration = #(ly:make-moment 3/4)
      \repeat volta 5 { d4 d d }
      \alternative {
        {
          e4 e e
          f4 f f
        }
        { g4 g g }
      }
    }

## Corchetes de primera y segunda vez debajo de los acordes

Mediante la adición del grabador `Volta_engraver` al pentagrama pertinente, se pueden poner los corchetes de primera y segunda vez debajo de los acordes.

    \score {
      <<
        \chords {
          c1
          c1
        }
        \new Staff \with {
          \consists "Volta_engraver"
        }
        {
          \repeat volta 2 { c'1 }
          \alternative { c' }
        }
      >>
      \layout {
        \context {
          \Score
          \remove "Volta_engraver"
        }
      }
    }

## Casillas de repetición en varios pentagramas

Mediante la adición del grabador `Volta_engraver` al pentagrama adecuado, las casillas de primera y segunda vez se pueden poner sobre algún pentagrama distinto al más alto de la partitura.

    voltaMusic = \relative c'' {
      \repeat volta 2 {
        c1
      }
      \alternative {
        d1
        e1
      }
    }

    <<
      \new StaffGroup <<
        \new Staff \voltaMusic
        \new Staff \voltaMusic
      >>
      \new StaffGroup <<
        \new Staff \with { \consists "Volta_engraver" }
          \voltaMusic
        \new Staff \voltaMusic
      >>
    >>

## Elementos de marcado para el texto de las casillas de repetición usando repeatCommands

Aunque las casillas de repetición se especifican de forma óptima usando `\repeat volta`, debe usarse la propiedad de contexto `repeatCommands` en caso de que el texto de la casilla requiera un formato más avanzado con `\markup`.

Puesto que `repeatCommands` admite una lista, el método más sencillo de incluir elementos de marcado es usar un identificador para el texto e insertarlo en la lista de instrucciones usando la sintaxis de Scheme `#(list (list 'volta textIdentifier))`. Las instrucciones de principio y fin de repetición se pueden añadir como elementos de lista independientes:

    voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }

    \relative c'' {
      c1
      \set Score.repeatCommands = #(list (list 'volta voltaAdLib) 'start-repeat)
      c4 b d e
      \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat)
      f1
      \set Score.repeatCommands = #'((volta #f))
    }

#### LilyPond — Snippets v2.22.2 (rama estable).