Establir el comportament de les barres automàtiques

Quan està habilitat el barrat automàtic, la col·locació de les barres automàtiques ve determinada per tres propietats de context: beatBase, beatStructure i beamExceptions. Els valores predeterminats d’aquestes variables es poden sobreescriure com es descriu més a baix, o de forma alternativa els propis valors predeterminats es poden canviar com s’explica a Indicació de compàs.

Si hi ha definida una regla de beamExceptions per al compàs en curs, s’usa aquesta regla per determinar la col·locació de les barres; s’ignoren els valores de beatBase i beatStructure.

Si no hi ha definida cap regla de beamExceptions per al tipus de compàs en curs, la col·locació de les barres està determinada pels valors de beatBase i beatStructure.

Barrat basat en beatBase i beatStructure

De forma predeterminada, les regles de beamExceptions estan definides per als compassos més comuns, i les regles de beamExceptions s’han de desactivar si pretenem que el barrat automàtic estigui basat en beatBase i beatStructure. Les regles de beamExceptions es desactiven mitjançant

\set Timing.beamExceptions = #'()

Quan el valor de beamExceptions s’ha establert a #'(), ja sigui degut a un ajust explícit o a causa que no hi ha cap regla de beamExceptions definida internament per al compàs actual, els punts finals de les barres estan en les pulsacions segons vingui determinat per les propietats de context beatBase i beatStructure. beatStructure és una llista d’Scheme que defineix la longitud de cada pulsació dins del compàs en unitats de beatBase. De forma predeterminada, cada unitat de longitud beatBase és una única pulsació.

Observeu que hi ha valors de beatStructure i de beatBase diferents per a cada indicació de compàs. Els canvis que es fan a aquestes variables s’apliquen sols al tipus de compàs vigent, per la qual cosa aquests canvis s’han d’escriure després de l’ordre \time que dóna començament a una secció nova amb un tipus de compàs diferent, no abans. Els valors nous que es donen a una indicació de compàs concreta es retenen i es tornen a aplicar quan aquest tipus de compàs torna a establir-se.

\relative c'' {
  \time 5/16
  c16^"default" c c c c |
  % beamExceptions no és probable que es defineixi per a un tempo 5/16
  % però els desactivarem igual per assegurar-nos
  \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
  % Desactiva beamExceptions perquè sí que està
  % definit per a un tempo 4/4
  \set Timing.beamExceptions = #'()
  \set Timing.beatBase = #1/4
  \set Timing.beatStructure = 1,1,1,1
  a8^"changed" a a a a a a a
}

[image of music]

Els canvis als ajustament de barrat es poden limitar a contextos específics. Si no s’inclou cap ajustament a un context de nivell més baix, s’apliquen els ajustament del context que l’envolta.

\new Staff {
  \time 7/8
  % No cal beamExceptions
  % atès que no està definit per al tempo 7/8
  \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 cas d’usar diverses veus, s’ha d’especificar el context Staff si volem aplicar el barrat a totes les veus del pentagrama:

\time 7/8
% ritme 3-1-1-2
% Canvi aplicat a Voice per defecte -- no funciona correctament
% A causa de veus autogenerades, totes les pulsacions estaran a
% beatBase #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} >>

% Funciona correctament amb el context Staff especificat
\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 beatBase es pot ajustar per canviar el comportament de les barres, si es desitja. Quan es fa, el valor de beatStructure s’ha de fixar de manera que sigui compatible amb el nou valor de beatBase.

\time 5/8
% No cal desactivar beamExceptions
% atès que no està definit per al tempo 5/8
\set Timing.beatBase = #1/16
\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }

[image of music]

De forma predeterminada beatBase està fixat a una unitat més que el denominador del compàs. Totes les excepcions a aquest valor predeterminat estan a scm/time-signature-settings.scm.

Barrat basat en beamExceptions

Les regles d’autobarrat especials (diferents a acabar una barra sobre una pulsació) estan definides a la propietat beamExceptions.

El valor de beamExceptions, que és una estructura de dades força complexa, es genera fàcilment amb la funció \beamExceptions. Aquesta funció rep un o més patrons rítmics barrats manualment i amb un compàs de duració (els compassos s’han de separar amb una barra de comprovació de compàs | perquè la funció no té cap altra manera d’esbrinar la longitud del compàs). Vet aquí un exemple senzill:

\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 ha de ser una llista d’excepcions completa. És a dir, tota excepció que s’hagi d’aplicar ha d’estar inclosa a aquest ajustament. No és possible afegir, eliminar o canviar sols una de les excepcions. Tot i que això pot semblar fastigós, vol dir que no és necessari conèixer els ajustaments de barrat actuals per poder especificar un patró de barrat nou.

Quan canvia el compàs es fixen els valors predeterminats de Timing.beatBase, Timing.beatStructure i Timing.beamExceptions. Un ajustament en el tipus de compàs dóna com a resultat un reinici dels ajustaments de barrat automàtic per al context Timing al comportament predeterminat.

\relative a' {
  \time 6/8
  \repeat unfold 6 { a8 }
  % grup (4 + 2)
  \set Timing.beatStructure = 4,2
  \repeat unfold 6 { a8 }
  % torna al comportament predeterminat
  \time 6/8
  \repeat unfold 6 { a8 }
}

[image of music]

Els ajustament de barrat automàtic predeterminat per a un tipus de compàs estan determinats en el fitxer scm/time-signature-settings.scm. La forma de canviar els ajustament predeterminats de barrat automàtic per a un tipus de compas es descriu a Indicació de compàs.

Molts ajustaments de barrat automàtics per a un tipus de compàs contenen una entrada per a beamExceptions. Per exemple, el compàs de 4/4 intenta unir el compàs en dues parts si sols hi ha corxeres. La regla beamExceptions pot sobreescriure l’ajustament beatStructure si no es reinicia beamExceptions.

\time 4/4
\set Timing.beatBase = #1/8
\set Timing.beatStructure = 3,3,2
% Això no barrarà (3 3 2) degut a beamExceptions
\repeat unfold 8 {c''8} |
% Això barrarà (3 3 2) perquè eliminem beamExceptions
\set Timing.beamExceptions = #'()
\repeat unfold 8 {c''8}

[image of music]

De forma semblant, les corxeres en compàs de 3/4 s’uneixen mitjançant una sola barra per a tot el compàs, de forma predeterminada. Per unir les corxeres en 3/4 mitjançant una barra a cada part, reinicieu beamExceptions.

\time 3/4
% per defecte barrem a (6) degut a beamExceptions
\repeat unfold 6 {a'8} |
% Això barrarà (1 1 1) degut a beatBase i beatStructure predeterminats
\set Timing.beamExceptions = #'()
\repeat unfold 6 {a'8}

[image of music]

A la música gravada dels períodes clàssic i romàntic, amb freqüència les barres comencen a meitat d’un compàs de 3/4, però la pràctic moderna és evitar la falsa impressió de 6/8 (vegeu Gould, pàg. 153). Es produeixen situacions semblants al compàs de 3/8. Aquest comportament es controla mitjançant la propietat de context beamHalfMeasure, que té efecte sobre indicacions de compàs que tenen la xifra 3 al numerador:

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

[image of music]

Com funciona el barrat automàtic

Quan s’habilita el barrat automàtic, la col·locació de les barres de corxera automàtiques es determinen per les propietats de context beatBase, beatStructure i beamExceptions.

Són d’aplicació les següents regles, en ordre de prioritat, quan es determina l’aspecte de les barres:

En les regles anteriors, el tipus de barra beam-type és la duració de la nota més breu dins del grup unit per una barra.

Les regles de barrat predefinides estan al fitxer scm/time-signature-settings.scm.

Fragments de codi seleccionats

Subdivisió de barres

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

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

Barres que respecten el pols estrictament

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

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

[image of music]

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

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

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

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

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

[image of music]

Finals de barra en el context Score

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

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

[image of music]

Vegeu també

Referència de la notació: Indicació de compàs.

Fitxer d’inici: scm/time-signature-settings.scm.

Fragments de codi: Rhythms.

Referència de funcionament intern: Auto_beam_engraver, Beam, BeamForbidEvent, beam-interface.

Advertiments i problemes coneguts

Si una partitura acaba mentre una barra de corxera automàtica no ha acabat i encara accepta notes, aquesta última barra no s’imprimeix en absolut. El mateix serveix per a les veus polifòniques introduïdes amb << … \\ … >>. Si una veu polifònica acaba mentre una barra de corxera automàtica encara admet notes, no s’imprimeix. La solució per a aquests problemes és aplicar el barrat manual a l’última barra de la veu o partitura.

De forma predeterminada, el traductor Timing rep el nom de context Score como àlies. Això significa que l’establiment del compàs a una pauta afectarà el barrat de les altres pautes també. Així, un ajust en el compàs a un pentagrama tardà reiniciarà el barrat personalitzat que s’havia ajustat a un pentagrama més primerenc. Una forma d’evitar aquest problema és ajustar la indicació de compàs a un pentagrama solament.

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

[image of music]

Els ajustos de barrat predeterminat per a aquest compàs també es poden canviar, de forma que sempre s’utilitzi el barrat desitjat. La menara d’efectuar canvis als ajustos de barrat automàtic per a una indicació de compàs es descriu a Indicació de compàs.

<<
  \new Staff {
    \overrideTimeSignatureSettings
      3/4               % timeSignatureFraction
      #1/8              % beatBase
      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]


Referència de la notació del GNU LilyPond v2.25.22 (development-branch).