Establecer el comportamiento de las barras automáticas

Cuando está habilitado el barrado automático, la colocación de las barras automáticas viene determinada por tres propiedades de contexto: baseMoment, beatStructure y beamExceptions. Los valores predeterminados de estas variables se pueden sobreescribir como se describe más abajo, o de forma alternativa los propios valores predeterminados se pueden cambiar como se explica en Indicación de compás.

Si hay definida una regla de beamExceptions para el compás en curso, se usa dicha regla para determinar la colocación de las barras; se ignoran los valores de baseMoment y beatStructure.

Si no está definida ninguna regla de beamExceptions para el tipo de compás en curso, la colocación de las barras está determinada por los valores de baseMoment y beatStructure.

Barrado basado en baseMoment y beatStructure

De forma predeterminada, las reglas de beamExceptions están definidas para los compases más comunes, y así las reglas de beamExceptions se deben desactivar si pretendemos que el barrado automático esté basado en baseMoment y beatStructure. Las reglas de beamExceptions se desactivan mediante

\set Timing.beamExceptions = #'()

Cuando el valor de beamExceptions se ha fijado a #'(), ya sea debido a un ajuste explícito o a causa de que no hay ninguna regla de beamExceptions definida internamente para el compás actual, los puntos finales de las barras están en los pulsos según viene determinado por las propiedades de contexto baseMoment y beatStructure. beatStructure es una lista de Scheme que define la longitud de cada pulso dentro del compás en unidades de baseMoment. De forma predeterminada, baseMoment es una unidad más que el denominador del compás. De forma predeterminada también, cada unidad de longitud baseMoment es un único pulso.

Observe que existen valores de beatStructure y de baseMoment diferentes para cada indicación de compás. Los cambios que se hacen a estas variables se aplican solamente al tipo de compás en vigor, por lo que dichos cambios se deben escribir después de la instrucción \time que da comienzo a una sección nueva con un tipo de compás distinto, no antes. Los valores nuevos que se dan a una indicación de compás concreta se retienen y se vuelven a aplicar cuando ese tipo de compás vuelve a establecerse.

\relative c'' {
  \time 5/16
  c16^"default" c c c c |
  % beamExceptions are unlikely to be defined for 5/16 time,
  % but let's disable them anyway to be sure
  \set Timing.beamExceptions = #'()
  \set Timing.beatStructure = 2,3
  c16^"(2+3)" c c c c |
  \set Timing.beatStructure = 3,2
  c16^"(3+2)" c c c c |
}

[image of music]

\relative {
  \time 4/4
  a'8^"default" a a a a a a a
  % Disable beamExceptions because they are definitely
  % defined for 4/4 time
  \set Timing.beamExceptions = #'()
  \set Timing.baseMoment = \musicLength 4
  \set Timing.beatStructure = 1,1,1,1
  a8^"changed" a a a a a a a
}

[image of music]

Los cambios en los ajustes de barrado se pueden limitar a contextos específicos. Si no se incluye ningún ajuste en un contexto de nivel más bajo, se aplican los ajustes del contexto circundante.

\new Staff {
  \time 7/8
  % No need to disable beamExceptions
  % as they are not defined for 7/8 time
  \set Staff.beatStructure = 2,3,2
  <<
    \new Voice = one {
      \relative {
        a'8 a a a a a a
      }
    }
    \new Voice = two {
      \relative {
        \voiceTwo
        \set Voice.beatStructure = 1,3,3
        f'8 f f f f f f
      }
    }
  >>
}

[image of music]

En caso de usar varias voces, se debe especificar el contexto Staff si queremos aplicar el barrado a todas las voces del pentagrama:

\time 7/8
% rhythm 3-1-1-2
% Change applied to Voice by default --  does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>

% Works correctly with context Staff specified
\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>

[image of music]

El valor de baseMoment se puede ajustar para cambiar el comportamiento de las barras, si se desea. Cuando se hace, el valor de beatStructure se debe fijar de manera que sea compatible con el nuevo valor de baseMoment.

\time 5/8
% No need to disable beamExceptions
% as they are not defined for 5/8 time
\set Timing.baseMoment = \musicLength 16
\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }

[image of music]

baseMoment es un momento, una unidad de duración musical. Se crea una cantidad del tipo momento por medio de la función de Scheme ly:make-moment. Para ver más información acerca de esta función, consulte Gestión del tiempo.

De forma predeterminada baseMoment está fijado a una unidad más que el denominador del compás. Todas las excepciones a este valor predeterminado están en scm/time-signature-settings.scm.

Barrado basado en beamExceptions

Las reglas de autobarrado especiales (distintas de terminar una barra sobre un pulso) están definidas en la propiedad beamExceptions.

El valor de beamExceptions, que es una estructura de datos de Scheme bastante compleja, se genera fácilmente con la función \beamExceptions. Esta función recibe uno o más patrones rítmicos barrados manualmente y con un compás de duración (los compases se deben separar por una barra de comprobación de compás | porque la función no tiene otra manera de discernir la longitud del compás). He aquí un ejemplo sencillo:

\relative c'' {
  \time 3/16
  \set Timing.beatStructure = 2,1
  \set Timing.beamExceptions =
    \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
  c16 c c |
  \repeat unfold 6 { c32 } |
}

[image of music]

Nota: Un valor de beamExceptions debe ser una lista de excepciones completa. Esto es, toda excepción que se tenga que aplicar debe estar incluida en este ajuste. No es posible añadir, eliminar o cambiar sólo una de las excepciones. Aunque esto puede parecer engorroso, significa que no es necesario conocer los ajustes de barrado actuales para poder especificar un patrón de barrado nuevo.

Cuando cambia el compás, se fijan los valores predeterminados de Timing.baseMoment, Timing.beatStructure y Timing.beamExceptions. Un ajuste en el tipo de compás da como resultado un reinicio de los ajustes de barrado automático para el contexto Timing al comportamiento predeterminado.

\relative a' {
  \time 6/8
  \repeat unfold 6 { a8 }
  % group (4 + 2)
  \set Timing.beatStructure = 4,2
  \repeat unfold 6 { a8 }
  % go back to default behavior
  \time 6/8
  \repeat unfold 6 { a8 }
}

[image of music]

Los ajustes de barrado automático predeterminados para un tipo de compás están determinados en el archivo scm/time-signature-settings.scm. La forma de cambiar los ajustes predeterminados de barrado automático para un tipo de compás se describe en Indicación de compás.

Muchos ajustes de barrado automáticos para un tipo de compás contienen una entrada para beamExceptions. Por ejemplo, el compás de 4/4 trata de unir el compás en dos partes si solo hay corcheas. La regla beamExceptions puede sobreescribir el ajuste beatStructure si no se reinicia beamExceptions.

\time 4/4
\set Timing.baseMoment = \musicLength 8
\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\set Timing.beamExceptions = #'()
\repeat unfold 8 {c''8}

[image of music]

De forma similar, las corcheas en compás de 3/4 se unen mediante una sola barra para todo el compás, de forma predeterminada. Para unir las corcheas en 3/4 mediante una barra en cada parte, reinicie beamExceptions.

\time 3/4
% by default we beam in (6) due to beamExceptions
\repeat unfold 6 {a'8} |
% This will beam (1 1 1) due to default baseMoment and beatStructure
\set Timing.beamExceptions = #'()
\repeat unfold 6 {a'8}

[image of music]

En la música tipografiada de los períodos clásico y romántico, con frecuencia las barras comienzan a mitad de un compás en 3/4, pero la práctica moderna es evitar la falsa impresión de 6/8 (véase Gould, pág. 153). Se producen situaciones similares en el compás de 3/8. Este comportamiento viene controlado mediante la propiedad de contexto beamHalfMeasure, que tiene efecto solamente sobre indicaciones de compás que tienen la cifra 3 en el numerador:

\relative a' {
  \time 3/4
  r4. a8 a a |
  \set Timing.beamHalfMeasure = ##f
  r4. a8 a a |
}

[image of music]

Cómo funciona el barrado automático

Cuando se habilita el barrado automático, la colocación de las barras de corchea automáticas viene determinada por las propiedades de contexto baseMoment, beatStructure y beamExceptions.

Son de aplicación las siguientes reglas, en orden de prioridad, cuando se determina el aspecto de las barras:

En las reglas anteriores, el tipo de barra beam-type es la duración de la nota más breve dentro del grupo unido por una barra.

Las reglas de barrado predefinidas están en el archivo scm/time-signature-settings.scm.

Fragmentos de código seleccionados

Subdivisión de barras

Las barras de semicorchea, o de figuras más breves, no se subdividen de forma predeterminada. Esto es, las tres (o más) barras se amplían sin romperse sobre grupos completos de notas. Este comportamiento se puede modificar para subdividir las barras en subgrupos mediante el establecimiento de la propiedad subdivideBeams. Cuando está activada, las barras se subdividen a intervalos definidos por el valor actual de baseMoment mediante la reducción de las barras repetidas a una sola entre los subgrupos. Observe que el valor predeterminado de baseMoment es uno más que el denominador del tipo de compás actual, si no se fija explícitamente. Se debe ajustar a una fracción que da la duración del subgrupo de barras utilizando la función ly:make-moment, como se ve en este fragmento de código. Asimismo, cuando se modifica baseMoment, se debería cambiar también beatStructure para que corresponda al baseMoment nuevo:

\relative c'' {
  c32[ c c c c c c c]

  \set subdivideBeams = ##t
  c32[ c c c c c c c]

  % Set minimum beam subdivision interval to 1/8 just for this beam
  \once \set minimumBeamSubdivisionInterval = \musicLength 8
  c32[ c c c c c c c]

  % Set maximum beam subdivision interval to 1/16 just for this beam
  \once \set maximumBeamSubdivisionInterval = \musicLength 16
  c32[ c c c c c c c]

  % Set maximum beam subdivision interval to 3/8 just for this beam
  \once \set maximumBeamSubdivisionInterval = \musicLength 8*3
  [ \repeat unfold 16 c64 ] r2.

  % Set maximum beam subdivision interval to 1/64 to limit subdivision depth,
  % despite not being metrically correct
  \once \set minimumBeamSubdivisionInterval = \musicLength 32
  \once \set maximumBeamSubdivisionInterval = \musicLength 64
  [ \repeat unfold 32 c128 ] r2.

  % Shorten beam by 1/32
  c32[ c c c c c c] r32

  % Shorten beam by 3/32
  c32[ c c c c] r16.

  % Respect the incomplete beams of the previous two examples
  \set respectIncompleteBeams = ##t
  c32[ c c c c c c] r32
  % no visual change here as last two stems are exempt from this
  % special rule
  c32[ c c c c] r16.
}

[image of music]

Barras que se atienen al pulso estrictamente

Se puede hacer que las barras secundarias apunten en la dirección del pulso o fracción a que pertenecen. La primera barra evita los corchetes sueltos (que es el comportamiento predeterminado); la segunda barra sigue el pulso o fracción estrictamente.

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

[image of music]

Símbolos de dirección y símbolos de agrupación de compás

La agrupación de pulsos dentro de un compás está controlada por la propiedad de contexto beatStructure. Hay establecidos valores de beatStructure para muchos tipos de compases en scm/time-signature-settings.scm. Los valores de beatStructure se pueden cambiar o establecer con \set. Como alternativa, se puede usar \time para establecer tanto el compás como la estructura de pulsos. Para ello, especificamos la agrupación interna de los pulsos del compás como una lista de números (en la sintaxis de Scheme) antes de la indicación de compás.

\time se aplica al contexto Timing, por lo que no restablece los valores de beatStructure ni de baseMoment que se establezcan en otros contextos de nivel inferior, como Voice.

Si el grabador Measure_grouping_engraver está incluido en uno de los contextos de presentación, se imprimirán signos de agrupación de pulsos. Estos símbolos facilitan la lectura de música moderna rítmicamente compleja. En este ejemplo, el compás de 9/8 se agrupa según dos patrones distintos utilizando los dos métodos, mientras que el compás de 5/8 se agrupa de acuerdo con el ajuste predeterminado que está en 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]

Finales de barra en el contexto Score

Las reglas de final de barra especificadas en el contexto Score se aplican a todos los pentagramas, pero se pueden modificar tanto en los niveles de Staff como de Voice:

\relative c'' {
  \time 5/4
  % Set default beaming for all staves
  \set Score.baseMoment = \musicLength 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]

Véase también

Referencia de la notación: Indicación de compás.

Archivos de inicio: scm/time-signature-settings.scm.

Fragmentos de código: Rhythms.

Referencia de funcionamiento interno: Auto_beam_engraver, Beam, BeamForbidEvent, beam-interface.

Advertencias y problemas conocidos

Si una partitura termina mientras una barra de corchea automática no ha terminado y aún acepta notas, esta última barra no se imprime en absoluto. Lo mismo sirve para las voces polifónicas introducidas con << … \\ … >>. Si una voz polifónica termina mientras una barra de corchea automática aún admite notas, no se imprime. El rodeo para estos problemas es aplicar el barrado manual a la última barra de la voz o partitura.

De forma predeterminada, el traductor Timing recibe el nombre del contexto Score como alias. Esto significa que el establecimiento del compás en ua pauta afectará al barrado de las otras pautas también. Así, un ajuste en el compás en un pentagrama tardío reiniciará el barrado personalizado que se había ajustado en un pentagrama más temprano. Una forma de evitar este problema es ajustar la indicación de compás en un pentagrama solamente.

<<
  \new Staff {
    \time 3/4
    \set Timing.baseMoment = \musicLength 8
    \set Timing.beatStructure = 1,5
    \set Timing.beamExceptions = #'()
    \repeat unfold 6 { a'8 }
  }
  \new Staff {
    \repeat unfold 6 { a'8 }
  }
>>

[image of music]

Los ajustes de barrado predeterminados para dicho compás también se pueden cambiar, de forma que siempre se utilice siempre el barrado deseado. La manera de efectuar cambios en los ajustes de barrado automático para una indicación de compás se describe en Indicación de compás.

<<
  \new Staff {
    \overrideTimeSignatureSettings
      3/4               % timeSignatureFraction
      1/8               % baseMoment
      1,5               % beatStructure
      #'()		% beamExceptions
    \time 3/4
    \repeat unfold 6 { a'8 }
  }
  \new Staff {
    \time 3/4
    \repeat unfold 6 { a'8 }
  }
>>

[image of music]


Referencia de la notación de GNU LilyPond v2.25.21 (rama de desarrollo).