Einstellung von automatischen Balken

Wenn die automatischen Balken angeschaltet sind, wird die Platzierung der automatischen Balken von drei Kontexteigenschaften bestimmt: beatBase, beatStructure und beamExceptions. Wenn eine beamExceptions-Regel für die aktuelle Taktart definiert ist, wird diese Regel zur Bestimmmung der Balkenplatzierung herangezogen. Wenn keine beamExceptions-Regel für die aktuelle Taktart vorhanden ist, wird die Platzierung der Balken durch die Einstellungen von beatBase und beatStructure bestimmt.

Standardmäßig sind beamExceptions-Regel für alle häufigen Taktarten vordefiniert, sodass die beamExceptions-Regeln deaktiviert werden müssen, wenn die Balkenplatzierung aufgrund von beatBase und beatStructure stattfinden soll. Die beamExceptions-Regeln werden deaktiviert durch

\set Timing.beamExceptions = #'()

Bebalkung basierend auf beatBase und beatStructure

In den meisten Fällen enden automatische Balken am Ende eines Taktes. Die Endpunkte für Schläge werden durch die Kontexteigenschaften beatBase und beatStructure bestimmt. beatStructure ist eine Scheme-Liste, die die Länge jedes Schlages im Takt in Einheiten von beatBase angibt. Der Standard von beatBase ist Eins durch den Numerator der Taktangabe. Der Standardwert jeder Längeneinheit beatBase ist ein einzelner Taktschlag.

\time 5/16
c16^"default" c c c c |
\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]

Wenn eine häufige Taktart benützt wird, muss beamExceptions deaktiviert werden, damit beatStructure funktionieren kann. Der \set Timing.beamExceptions = #'()-Befehl kann immer eingefügt werden, wenn die Bebalkung von beatStructure bestimmt werden soll.

\time 4/4
a8^"default" a a a a a a a

\set Timing.beatBase = #1/4
\set Timing.beatStructure = 1,1,1,1
a8^"no change" a a a a a a a

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

Balkenregelveränderungen können auf bestimmte Kontexte beschränkt werden. Wenn keine Regeln in einen unteren Kontext definiert sind, gelten die Regeln des höheren Kontext, in dem sich der niedrigere befindet.

\new Staff <<
  \time 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]

Wenn mehrere Stimmen eingesetzt werden, muss der Staff-Kontext definiert werden, wenn die Balkenregeln auf alle Stimmen des Systems angewendet werden sollen:

\time 7/8
% rhythm 3-1-1-2
% Context applied to Voice by dafault --  does not work correctly
% Because of autogenerated voices, all beating will
% be at beatBase #1/8
\set beatStructure = 3,1,1,2
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>

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

[image of music]

Der Wert von beatBase kann angepasst werden, um das Bebalkungsverhalten zu ändern, wenn gewünscht. In diesem Fall muss der Wert von beatStructure so gesetzt werden, dass er kompatibel mit dem neuen Wert von beatBase ist.

\time 5/8
\set Timing.beatBase = #1/16
\set Timing.beatStructure = 7,3
\repeat unfold 10 { a16 }

[image of music]

Der Standardwert von beatBase ist Eins durch den Denominator der Taktangabe. Alle Ausnahmen dieses Standards finden sich in der Datei scm/time-signature-settings.scm.

Bebalkung basierend auf beamExceptions

Besondere automatische Bebalkungsregeln (außer dass ein Balken auf einem Taktschlag aufhört) sind in der beamExceptions-Eigenschaft definiert.

\time 3/16
\set Timing.beatStructure = 2,1
\set Timing.beamExceptions =
  #'(                         ;start of alist
     (end .                   ;entry for end of beams
      (                       ;start of alist of end points
       ((1 . 32) . (2 2 2))   ;rule for 1/32 beams -- end each 1/16
      )))                     %close all entries
c16 c c |
\repeat unfold 6 { c32 } |

[image of music]

beamExceptions ist eine Aliste mit einem Schlüssel der Regeltypen (rule-type) und einem Wert der Bebalkungsregeln (beaming-rules).

Im Moment ist der einzige mögliche rule-type 'end für ein Balkenende.

Beaming-rules ist eine Scheme-Aliste (oder eine paarige Liste), die den Balkentyp und die Gruppierung anzeigt, die auf Balken angewendet werden, welche Noten mit einer kürzesten Dauer des Balkentyps enthalten.

#'((beam-type1 . grouping-1)
   (beam-type2 . grouping-2)
   (beam-type3 . grouping-3))

Beam-type ist ein Scheme-Paar, das die Dauer eines Balkens anzeigt, etwa (1 . 16) für ein Sechszehntel.

Grouping ist eine Scheme-Liste, die die auf den Balken anzuwendene Gruppierung anzeigt. Die Gruppierung wird in Einheiten des Balkentyps angegeben.

Achtung: Ein beamExceptions-Wert muss eine vollständige Ausnahme-Liste sein. Das heißt, dass jede Ausnahme, die angewendet werden soll, auch in die Einstellungen mit aufgenommen werden muss. Es ist nicht möglich, nur eine der Einstellungen zu ändern, zu entfernen oder hinzuzufügen. Das mag seltsam erscheinen, bedeutet aber, dass die aktuellen Balkenregeln bekann sein müssen, um ein neues Bebalkungsmuster definieren zu können.

Wenn die Taktart geändert wird, werden neue Standardwerte für Timing.beatBase, Timing.beatStructure und Timing.beamExceptions definiert. Wenn die Taktart definiert wird, werden die automatischen Bebalkungsregeln für den Timing-Kontext auf den Standard zurückgesetzt.

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

Die automatischen Standardeinstellungen für die Bebalkung einer Taktart werden in der Datei scm/time-signature-settings.scm bestimmt. Änderungen der automatischen Bebalkungsregeln für eine Taktart werden in Taktangabe beschrieben.

Die meisten automatischen Bebalkungsregeln für eine Taktart enthalten einen Eintrag für beamExceptions. Beispielsweise wird in einem 4/4-Takt versucht, den Takt in zwei Hälfen zu teilen, wenn nur Achtelnoten vorkommen. Die beamExceptions-Regel kann die beatStructure-Einstellung überschreiben, wenn beamExceptions nicht zurückgesetzt wird:

\time 4/4
\set Timing.beatBase = #1/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]

Auf gleiche Art werden Achtelnoten im 3/4-Takt über den ganzen Takt hin mit Balken versehen. Damit Achtelnoten im 3/4-Takt auf jedem Schlag einen neuen Balken erhalten, muss beamExceptions verändert werden:

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

[image of music]

In Notenstichen der romantischen und klassischen Periode wird teilweise auch ein halber Takt Achtelnoten im 3/4-Takt mit einem Balken versehen, moderner Notenstich vermeidet dies jedoch, um nicht den falschen Eindruck eines 6/8-Taktes entstehen zu lassen (siehe Gould, S. 153). Eine ähnliche Situation entsteht im 3/8-Takt. Dieses Verhalten wird durch die Eigenschaft beamHalfMeasure bestimmt, welche sich nur auf Takte mit einer 3 im Zähler auswirkt:

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

[image of music]

Wie die automatische Bebalkung funktioniert

Wenn die automatische Bebalkung aktiviert ist, wird die Platzierung der automatischen Balken durch die Kontexteigenschaften beatBase, beatStructure und beamExceptions bestimmt.

Die folgenden Regeln, in der Reihenfolge ihrer Priorität, gelten, wenn das Aussehen der Balken bestimmt wird:

In den oben genannten Regeln ist der Balkentyp die Dauer der kürzesten Note der bebalkten Gruppe.

Die Standardbebalkungsregeln finden sich in der Datei scm/time-signature-settings.scm.

Ausgewählte Schnipsel

Subdividing beams

The beams of consecutive 16th (or shorter) notes are, by default, not subdivided. That is, the beams of more than two stems stretch unbroken over entire groups of notes. This behavior can be modified to subdivide the beams into sub-groups by setting the property subdivideBeams to true (#t). When set, a number of beamlets between two consecutive stems are removed at intervals multiple beams will be subdivided at intervals to match the metric value of the subdivision. Properties minimumBeamSubdivisionInterval and maximumBeamSubdivisionInterval allow configuring limits of automatic beam subdivision: the minimum rhythmic interval at which to subdivide beams and the number of beamlets removed depending on the interval respectively. If the numerator of maximumBeamSubdivisionInterval is not a power of 2, the smaller rhythmic intervals considered for subdivision are maximumBeamSubdivisionInterval divided by powers of 2 and stay greater than or equal to minimumBeamSubdivisionInterval. If maximumBeamSubdivisionInterval < minimumBeamSubdivisionInterval, then the depths of beam subdivision are limited to maximumBeamSubdivisionInterval, but not the frequency/intervals, therefore possibly deviating from the correct expected metric value. If respectIncompleteBeams is set to true (##t), the depth of the subdivision (number of beams) reflects the longest possible subdivision interval within the remaining length of the beam from the current stem. However, the last two stems of the beam are exempt from this rule.

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

Bebalkung nach Taktschlag

Sekundäre Balken können in die Richtung gesetzt werden, die ihrer rhythmischen Zugehörigkeit entspricht. Der erste Balken ist zusammengefasst (Standard), der zweite Sechszehntelbalken zeigt den Taktschlag an.

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

[image of music]

Dirigierzeichen, Taktgruppenzeichen

Optionen, mit denen die Balken in einem Takt gruppiert werden, sind durch die Scheme-Funktion set-time-signature erhältlich, die drei Argumente braucht: Die Zahl der Taktschläge, die Länge des Schlages und die interne gruppieren von Balken in dem Takt. Wenn der Measure_grouping_engraver hinzugefügt worden ist, erstellt diese Funktion auch MeasureGrouping-(Taktgruppen)-Zeichen. Derartige Zeichen erleichtern das Lesen von rhythmisch komplexer Musik. In dem Beispiel ist der 9/8-Takt in 2, 2, 2 und 3 aufgeteilt. Das wird der set-time-signature-Funktion als das dritte Argument mitgegeben: '(2 2 2 3):

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

Balkenenden auf Score-Ebene

Balkenenderegeln, die im Score-Kontext definiert werden, wirken sich auf alle Systeme aus, können aber auf Staff- und Voice-Ebene neu verändert werden:

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

Siehe auch

Installierte Dateien: scm/beam-settings.scm.

Schnipsel: Rhythms.

Referenz der Interna: Auto_beam_engraver, Beam, BeamForbidEvent, beam-interface.

Bekannte Probleme und Warnungen

Wenn eine Partitur endet, während ein automatischer Balken noch nicht beendet wurde und weiterhin Noten erwartet, wird dieser letzte Balken nicht ausgegeben. Das Gleiche gilt auch für polyphone Stimmen, die mit der << … \\ … >>-Konstruktion notiert wurden. Wenn eine polyphone Stimme endet, während ein Balken noch weitere Noten erwartet, wird der Balken nicht gesetzt. Eine Notlösung für dieses Probelm ist, den letzten Balken in der Stimme oder Partitur manuell zu setzen.

Die Standardeinstellungen weisen den dem Score-Kontext zu. Das bedeutet, dass das Setzen der Taktart (time signature) in einem System sich auch auf die Bebalkung der anderen Systeme auswirkt. Darum verändert eine neue Taktart in einem späteren System auch alle früher vorgenommenen eigenen Einstellungen der Bebalkung eines anderen Systems. Eine Möglichkeit, dieses Problem zu vermeiden, ist es, die Taktart nur in einem System zu setzen.

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

[image of music]

Die Standardbebalkungsregeln für die Taktart können auch verändert werden, sodass die gewünschte Bebalkung immer benützt wird. Veränderungen der automatischen Bebalkungsregeln für eine Taktart sind in Taktangabe beschrieben.

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


LilyPond Benutzerhandbuch v2.25.22 (development-branch).