@funindex breve
@funindex maxima
-Notenlängen (Dauern) werden durch
-Zahlen und Punkte notiert: Dauern werden als reziproke Werte geschrieben.
-Zum Beispiel wird eine Viertelnote mit @code{4} notiert (weil sie eine
-1/4-Note ist), eine halbe Note mit @code{2} (weil sie eine 1/2-Note ist).
-Noten, die länger als eine Ganze sind, müssen mit @code{\longa}
-(für die Longa, also vier Ganze) und
+Notenlängen (Dauern) werden durch
+Zahlen und Punkte notiert: Dauern werden als reziproke Werte geschrieben.
+Zum Beispiel wird eine Viertelnote mit @code{4} notiert (weil sie eine
+1/4-Note ist), eine halbe Note mit @code{2} (weil sie eine 1/2-Note ist).
+Noten, die länger als eine Ganze sind, müssen mit @code{\longa}
+(für die Longa, also vier Ganze) und
@code{\breve} (für die Brevis, auch Doppelganze genannt) notiert werden.
Notendauern bis hin zu 128steln sind unterstützt. Kürzere Notenwerte können
auch notiert werden, können allerdings nur als Noten mit Balken auftreten.
ist nur für die Alte Musiknotation unterstützt. Zu Einzelheiten
siehe @ref{Notation von alter Musik}.
-Wenn die Dauer hinter einer Notenbezeichnung nicht angegeben ist,
-wird die Dauer der vorhergehenden Note eingesetzt. Der Standardwert
+Wenn die Dauer hinter einer Notenbezeichnung nicht angegeben ist,
+wird die Dauer der vorhergehenden Note eingesetzt. Der Standardwert
für die erste Note ist eine Viertel.
@lilypond[quote,verbatim,relative=2]
@cindex Doppelpunktierung
@cindex Noten, doppelpunktiert
-Um punktierte Notendauern zu erhalten, muss einfach nur ein Punkt
-(@code{.}) hinter die Zahl der Dauer gesetzt werden. Zwei Punkte
+Um punktierte Notendauern zu erhalten, muss einfach nur ein Punkt
+(@code{.}) hinter die Zahl der Dauer gesetzt werden. Zwei Punkte
ergeben eine doppelte Punktierung, usw.
@lilypond[quote,verbatim,relative=2]
dargestellt werden, sie können nur erreicht werden, indem man
Noten überbindet. Für Einzelheiten siehe @ref{Bindebögen}.
-Wie den Silben von Gesangtext eigene Dauern zu gewiesen werden
+Wie den Silben von Gesangtext eigene Dauern zu gewiesen werden
können und wie man sie an den Noten ausrichtet ist erklärt in
@ref{Notation von Gesang}.
@funindex dotsDown
@funindex dotsNeutral
-Punkte werden normalerweise nach oben verschoben, damit sie die Notenlinien
+Punkte werden normalerweise nach oben verschoben, damit sie die Notenlinien
nicht berühren. Fertige Befehle können eingesetzt werden, um
eine bestimmte Richtung manuell zu erzwingen, zu Einzelheiten
siehe @ref{Richtung und Platzierung}.
@funindex times
@funindex \times
-Triolen und andere rhythmische Aufteilungen werden aus einem musikalischen
+Triolen und andere rhythmische Aufteilungen werden aus einem musikalischen
Ausdruck erstellt, indem dessen Tondauern mit einem Bruch multipliziert werden.
@example
@end example
@noindent
-Die Dauer eines @var{musikalischen Ausdrucks} wird mit dem Bruch multipliziert.
+Die Dauer eines @var{musikalischen Ausdrucks} wird mit dem Bruch multipliziert.
Der Nenner des Bruchs wird über (oder unter) den Noten ausgegeben,
optional mit einer eckigen Klammer, die die Noten einfasst.
-Die üblichste Aufteilung ist die
-Triole, in welcher drei Noten die Länge von zwei haben, der Wert jeder
+Die üblichste Aufteilung ist die
+Triole, in welcher drei Noten die Länge von zwei haben, der Wert jeder
einzelnen Note ist also 2/3 der notierten Länge.
@lilypond[quote,verbatim,relative=2]
@cindex Dauern skalieren
@cindex Skalieren von Dauern
-Die Dauer von einzelnen Noten, Pausen oder Akkorden kann mit einem Bruch multipliziert werden,
-indem hinter die Notendauer @qq{*@var{N/M}} (oder @qq{*@var{N}} wenn @var{M} 1 ist)
+Die Dauer von einzelnen Noten, Pausen oder Akkorden kann mit einem Bruch multipliziert werden,
+indem hinter die Notendauer @qq{*@var{N/M}} (oder @qq{*@var{N}} wenn @var{M} 1 ist)
geschrieben wird. Die Erscheinung der Noten oder Pausen wird
dadurch nicht beeinflusst, die neue Dauer wird aber dazu
benutzt, ihre Position im Takt zu errechnen und die neue
Dauer in der MIDI-Ausgabe einzusetzen. Die Faktoren, mit
-denen multipliziert wird, können auch kombiniert werden, etwa
+denen multipliziert wird, können auch kombiniert werden, etwa
@qq{*L*M*/N}.
-Im nächsten Beispiel nehmen die drei ersten Noten genau zwei Schläge ein,
+Im nächsten Beispiel nehmen die drei ersten Noten genau zwei Schläge ein,
aber es wird keine Triolenklammer über ihnen ausgegeben.
@lilypond[quote,relative=2,verbatim]
@funindex ~
-Ein Bindebogen verbindet zwei benachbarte Noten der selben
+Ein Bindebogen verbindet zwei benachbarte Noten der selben
Tonhöhe. Als Resultat wird die Dauer der Notenlänge verlängert.
-
-@warning{Bindebögen dürfen nicht mit Legatobögen verwechselt werden, durch
-die die Vortragsart bezeichnet wird, noch mit Phrasierungsbögen,
+
+@warning{Bindebögen dürfen nicht mit Legatobögen verwechselt werden, durch
+die die Vortragsart bezeichnet wird, noch mit Phrasierungsbögen,
die musikalische Phrasen anzeigen. Ein Bindebogen ist nur eine
Art, die Tondauer zu verlängern, ähnlich etwa wie die
Punktierung.}
-Ein Bindebogen wird mit der
+Ein Bindebogen wird mit der
Tilde @code{~} (AltGr++) notiert.
@lilypond[quote,verbatim,relative=2]
@cindex Überbindungen und Akkorde
@cindex Akkorde und Überbindungen
-Wenn ein Bindebogen an einen Akkord gehängt wird, werden alle Noten
-dieses Akkordes übergebunden. Wenn kein Notenkopf passt, wird auch
-kein Bogen erzeugt. Noten in Akkorden können auch einzeln übergebunden
-werden, indem sie innerhalb des Akkordes hinter die entsprechende Note
+Wenn ein Bindebogen an einen Akkord gehängt wird, werden alle Noten
+dieses Akkordes übergebunden. Wenn kein Notenkopf passt, wird auch
+kein Bogen erzeugt. Noten in Akkorden können auch einzeln übergebunden
+werden, indem sie innerhalb des Akkordes hinter die entsprechende Note
geschrieben werden.
@lilypond[quote,verbatim,relative=1]
@funindex laissezVibrer
@funindex \laissezVibrer
-So genannte @notation{laissez vibrer}-Bögen werden verwendet um anzuzeigen, dass
-man die Musik ausklingen lassen soll. Sie werden in der Klavier-, Harfen-,
+So genannte @notation{laissez vibrer}-Bögen werden verwendet um anzuzeigen, dass
+man die Musik ausklingen lassen soll. Sie werden in der Klavier-, Harfen-,
anderer Saiteninstrument- und Schlagzeugnotation verwendet. Sie können folgendermaßen notiert werden:
@lilypond[quote,verbatim,relative=1]
@knownissues
-Der Wechsel zwischen Systemen bei aktiver Überbindung produziert keinen
+Der Wechsel zwischen Systemen bei aktiver Überbindung produziert keinen
gekrümmten Bogen.
-Änderung von Schlüssel oder Oktavierung zwischen übergebundenen Noten
-ist nicht richtig definiert. In diesen Fällen kann es besser sein, einen
+Änderung von Schlüssel oder Oktavierung zwischen übergebundenen Noten
+ist nicht richtig definiert. In diesen Fällen kann es besser sein, einen
Legatobogen zu verwenden.
@cindex Ganztaktpausen
@cindex Mehrtaktpausen
-Pausen, die ganze Takte ausfüllen und in der Taktmitte zentriert
-werden sollen, müssen als mehrtaktige Pausen eingegeben werden.
-Sie können sowohl für einen einzigen Takt als auch für mehrere
+Pausen, die ganze Takte ausfüllen und in der Taktmitte zentriert
+werden sollen, müssen als mehrtaktige Pausen eingegeben werden.
+Sie können sowohl für einen einzigen Takt als auch für mehrere
Takte verwendet werden, Näheres im Abschnitt
@ref{Ganztaktige Pausen}.
-Um die vertikale Position einer Pause explizit festzulegen,
-kann eine Note eingegeben werden, gefolgt vom Befehl @code{\rest}.
-Die Pause wird dann an die Stelle gesetzt, wo sich sonst die
-Note befinden würde. Damit wird die manuelle Formatierung von mehrstimmiger Musik
-sehr viel einfacher, da die Formatierungsfunktion zur automatischen
+Um die vertikale Position einer Pause explizit festzulegen,
+kann eine Note eingegeben werden, gefolgt vom Befehl @code{\rest}.
+Die Pause wird dann an die Stelle gesetzt, wo sich sonst die
+Note befinden würde. Damit wird die manuelle Formatierung von mehrstimmiger Musik
+sehr viel einfacher, da die Formatierungsfunktion zur automatischen
Auflösung von Zusammenstößen diese Pausen nicht mit einbezieht.
@lilypond[quote,verbatim,relative=2]
@funindex skip
@funindex s
-Eine unsichtbare Pause (auch als @qq{skip} oder Überspringung bezeichnet)
+Eine unsichtbare Pause (auch als @qq{skip} oder Überspringung bezeichnet)
kann wie eine Note eingegeben werden, die Notationsbezeichnung ist @code{s}.
@lilypond[quote,verbatim,relative=2]
@cindex Gesangstext, überspringen
-Die @code{s}-Syntax steht nur im Noten- oder Akkordmodus zur Verfügung. In
-anderen Situationen, z. B. innerhalb eines Liedtextes, muss @code{\skip}
+Die @code{s}-Syntax steht nur im Noten- oder Akkordmodus zur Verfügung. In
+anderen Situationen, z. B. innerhalb eines Liedtextes, muss @code{\skip}
benutzt werden. @code{\skip} benötigt eine explizite Dauerangabe.
@lilypond[quote,verbatim,relative=2]
s1 s s
@end lilypond
-Der Überspringungsbefehl (@code{\skip}) ist einfach ein leerer Platzhalter.
-Durch ihn wird
+Der Überspringungsbefehl (@code{\skip}) ist einfach ein leerer Platzhalter.
+Durch ihn wird
überhaupt nichts gesetzt, auch keine transparenten Objekte.
@lilypond[quote,verbatim,fragment]
@funindex MultiMeasureRestText
Textbeschriftung kann Mehrtaktpausen mit @code{\markup}
-hinzugefügt werden. Ein
+hinzugefügt werden. Ein
vordefinierte Befehl @code{\fermataMarkup} fügt eine
Fermate ein.
@end example
Die Eigenschaft @code{measurePosition} (Takt-Position) enthält
-eine rationale Zahl,
-die anezigt, wie groß der Abstand zum Taktanfang ist. Deshalb ist
-sie eine negative Zahl; @code{\partial 4} wird also intern übersetzt
+eine rationale Zahl,
+die anezigt, wie groß der Abstand zum Taktanfang ist. Deshalb ist
+sie eine negative Zahl; @code{\partial 4} wird also intern übersetzt
zu: @qq{Eine Viertel bleibt übrig vom ganzen Takt.}
@seealso
@knownissues
-@code{\partial} ist nur für den Anfang eines Stückes vorgesehen. Wenn der
-Befehl innerhalb eines Stückes verwendet wird, können seltsame Warnungen
+@code{\partial} ist nur für den Anfang eines Stückes vorgesehen. Wenn der
+Befehl innerhalb eines Stückes verwendet wird, können seltsame Warnungen
auftreten.
@funindex cadenzaOn
@funindex cadenzaOff
-Taktlinien und Taktzahlen werden automatisch erzeugt. Für Musik
-ohne Metrum hingegen (etwa Kadenzen) ist das jedoch nicht
-erwünscht. Mit den Befehlen @code{\cadenzaOn} und
-@code{\cadenzaOff} kann dieses Verhalten ausgeschaltet und
+Taktlinien und Taktzahlen werden automatisch erzeugt. Für Musik
+ohne Metrum hingegen (etwa Kadenzen) ist das jedoch nicht
+erwünscht. Mit den Befehlen @code{\cadenzaOn} und
+@code{\cadenzaOff} kann dieses Verhalten ausgeschaltet und
wieder angeschaltet werden.
@lilypond[verbatim,quote,relative=2,fragment]
@knownissues
-LilyPond fügt Zeilen- und Seitenumbrüche nur an einer Taktlinie
-ein. Wenn die Kadenz nicht vor einem Umbruch endet, müssen Sie
+LilyPond fügt Zeilen- und Seitenumbrüche nur an einer Taktlinie
+ein. Wenn die Kadenz nicht vor einem Umbruch endet, müssen Sie
selber unsichtbare Taktlinien mit
@example
@funindex Completion_heads_engraver
Lange Noten, die über Taktlinien hinüberreichen, können
-automatisch in übergebundene Noten aufgeteilt werden.
-Dieses Verhalten erreicht man, indem der @rinternals{Note_heads_engraver}
-mit dem @rinternals{Completion_heads_engraver} ausgetauscht wird.
-Im nächsten Beispiel werden Noten, die über die Taktlinie dauern, aufgeteilt
+automatisch in übergebundene Noten aufgeteilt werden.
+Dieses Verhalten erreicht man, indem der @rinternals{Note_heads_engraver}
+mit dem @rinternals{Completion_heads_engraver} ausgetauscht wird.
+Im nächsten Beispiel werden Noten, die über die Taktlinie dauern, aufgeteilt
und übergebunden.
@lilypond[quote,verbatim,relative=1]
{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 }
@end lilypond
-Dieser Engraver teilt alle Noten
-auf, die über eine Taktlinie dauern und fügt Bindebögen hinzu.
-Er kann unter Anderem dann nützlich sein, wenn man komplexe
-Partituren auf Fehler überprüfen möchte: Wenn die Takte nicht
-vollständig gefüllt sind, zeigt die Überbindung genau an, wie viele
+Dieser Engraver teilt alle Noten
+auf, die über eine Taktlinie dauern und fügt Bindebögen hinzu.
+Er kann unter Anderem dann nützlich sein, wenn man komplexe
+Partituren auf Fehler überprüfen möchte: Wenn die Takte nicht
+vollständig gefüllt sind, zeigt die Überbindung genau an, wie viele
Notenwerte noch in dem jeweiligen Takt fehlen.
@seealso
@knownissues
-Nicht alle Notenwerte (besonders wenn sie andere rhythmische
-Aufteilungen beinhalten) können exakt durch normale Noten und
+Nicht alle Notenwerte (besonders wenn sie andere rhythmische
+Aufteilungen beinhalten) können exakt durch normale Noten und
Punktierungen wiedergegeben werden. Der Engraver setzt aber
trotzdem keine Triolen etc.
-@code{Completion_heads_engraver} wirkt sich nur auf Noten aus;
+@code{Completion_heads_engraver} wirkt sich nur auf Noten aus;
Pausen werden nicht aufgeteilt.
@cindex Melodierhythmus: Anzeige
@cindex Rhythmus der Melodie anzeigen
-Manchmal soll nur der Rhythmus einer Melodie dargestellt werden. Das
-erreicht man mit einem Rhythmus-Notensystem. Alle Tonhöhen werden
-auf eine Linie reduziert und das System hat auch nur eine einzige
+Manchmal soll nur der Rhythmus einer Melodie dargestellt werden. Das
+erreicht man mit einem Rhythmus-Notensystem. Alle Tonhöhen werden
+auf eine Linie reduziert und das System hat auch nur eine einzige
Linie.
@lilypond[quote,relative=1,verbatim]
\time 6/8 c c c c8. c16 c8
@end lilypond
-Wenn diese automatischen Entscheidungen nicht gut genug sind, können
+Wenn diese automatischen Entscheidungen nicht gut genug sind, können
die Balken auch explizit eingegeben werden, siehe
@ref{Manuelle Balken}. Balken @emph{müssen} auch auf diese Weise eingegeben
werden, wenn sie über Pausen hinwegreichen sollen.
@cindex Gesangstext und Balken
@funindex autoBeaming
-@funindex autoBeamSettings
-@funindex (end * * * *)
-@funindex (begin * * * *)
+@funindex beamSettings
@funindex measureLength
@funindex beatLength
-@funindex beatGrouping
@funindex \time
@funindex time
@funindex \set
@funindex set
-Es gibt zwei Arten an Balkenregeln: @emph{Balkengruppen}-Regeln und
-@emph{Balkenenden}-Regeln. Balkengruppen-Regeln sind am einfachsten,
-werden aber von allen Balkenenden-Regeln überschrieben, die gültig sind.
-
Die Platzierung der automatischen Bebalkung wird entschieden, indem
die folgenden Regeln in der dargestellten Reihenfolge angewendet werden:
@item wenn @code{\autoBeamOff} eingeschaltet ist, werden keine Balken gesetzt, andernfalls
-@item wenn eine Balkenenden-Regel zutrifft, wird sie benutzt, um die Noten mit
-Balken zu gruppieren, andernfalls
-
@item benutze den Wert von @code{beatLength} um die Noten mit Balken zu gruppieren.
@end itemize
@i{@strong{Die Gruppierung von Noten verändern}}
-Wenn keine Regeln für die Beendung von Balken für die aktuelle
-Balkendauer in der benutzen Taktart vorhanden sind, wird die
-Bebalkung von drei Kontext-Eigenschaften kontrolliert:
-@code{measureLength}, @code{beatLength} und @code{beatGrouping}.
-Diese Eigenschaften können in den @code{Score}, @code{Staff} oder
-@code{Voice}-Kontexten gesetzt werden, um ihre Wirkungsweise zu
-begrenzen. Die Standardwerte werden gesetzt, wenn der @code{\time}-Befehl
-gelesen wird, sodass alle @code{\set}-Befehle, die diese Werte verändern sollen, nach den @code{\time}-Befehlen
-geschrieben werden müssen.
-
-@warning{Diese drei Eigenschaften werden für einen bestimmten
-Balken @strong{nur dann} aktiv, wenn für diese Balkendauer keine
-Beendungsregeln für die benutzte Taktart definiert sind, oder
-wenn alle diese Enden-Regeln mit @code{\revert} rückgängig gemacht
-wurden.}
-
-Durch sie werden die Balken wie folgt bestimmt:
-
-Balken können überall beginnen (außer ein Balken ist schon aktiv).
-Balken enden zu den Werten, die @code{beatGrouping} und
-@code{beatLength} bestimmten, nach folgenden Regeln:
-
-@itemize
-
-@item Wenn @code{beatGrouping} und @code{beatLength} den gleichen
-Wert wie @code{measureLength} haben, wird @code{beatGrouping}
-benutzt, um die Endpunkte der Balken zu bestimmen.
-
-@item Wenn @code{beatGrouping} und @code{beatLength} nicht mit
-@code{measureLength} übereinstimmen, wird @code{beatLength}
-benutzt, um die Endpunkte der Balken zu bestimmen.
-
-@end itemize
-
-Standardmäßig werden @code{measureLength}
-(Taktlänge) und @code{beatLength} von der Taktart entnommen, die
-mit @code{\time} gesetzt wurde. @code{measureLength} hat
-standardmäßig genau die gleiche Länge wie die Taktlänge und der
-Standardwert für @code{beatLength} (Taktzeit-Länge) wird durch
-den Nenner des Taktart-Bruches bestimmt.
-
-Der Standardwert von @code{beatGrouping} wird aus einer Tabelle
-in der Datei @file{scm/@/music@/-functions@/.scm} entnommen. Um
-sie zu finden, siehe @rlearning{Mehr Information}.
-Hier werden Taktzeiten-Gruppen für die Taktarten 5/8, 6/8, 8/8,
-9/8 und alle üblichen zusammengestzten Taktarten definiert.
-
Sowohl @code{measureLength} als auch @code{beatLength} sind
@i{Momente}, Einheiten musikalischer Dauer. Eine Größe der
Art @i{Moment} wird durch die Scheme-Funktion
@noindent
wobei
-@itemize
-
-@item @code{Balken-Limit} die Art der Balkenbegrenzung ist. Das
-kann entweder der Wert @code{begin} (Anfang) oder @code{end}
-(Ende) sein, aber nur @code{end} hat eine Auswirkung.
-
-@item @code{Balken-Zähler/Balken-Nenner} ist die Balken-Dauer,
-auf die die Regel sich bezieht. Ein Balken hat per Definition
-die Dauer seiner kürzesten Note. Wenn sowohl
-@code{Balken-Zähler} als auch @code{Balken-Nenner} auf
- @code{'*'} gesetzt werden, gilt die Regel für alle Dauern.
-
-@item @code{Taktart-Zähler/Taktart-Nenner} bestimmen die
-Taktart, auf die die Regel sich bezieht. Wenn @code{Taktart-Zähler}
-und @code{Taktart-Nenner} auf @code{'*'} gesetzt werden, gilt
-die Regel für alle Taktarten.
-
-@item @code{Moment-Zähler/Moment-Nenner} ist die Position im
-Takt, an welcher der Balken aufhören soll.
-
-@funindex score-override-auto-beam-setting
-@funindex override-auto-beam-setting
-
-@item @code{Kontext} ist optional und bestimmt den Kontext, in
-welchem die Änderungen vorgenommen werden sollen. Der
-Standard ist @code{'Voice}.
-
-@code{#(score-override-auto-beam-setting '(A B C D) E F)} ist
-gleichbedeutend mit
-@code{#(override-auto-beam-setting '(A B C D) E F 'Score)}.
-
-@end itemize
-
-Wenn beispielsweise die automatischen Balken immer auf der ersten
-Viertel enden sollen, unabhängig von der Taktart oder Dauer
-des Balkens, kann
-
-@lilypond[quote,verbatim,relative=2]
-a8 a a a a a a a
-#(override-auto-beam-setting '(end * * * *) 1 4)
-a8 a a a a a a a
-@end lilypond
-
-@noindent
-benutzt werden.
-
-Balkenregeln können aber auch auf Notengruppen beschränkt werden,
-deren kürzeste Note einen bestimmten Wert hat:
-
-@lilypond[quote,verbatim,relative=2]
-\time 2/4
-% end 1/16 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 16 * *) 1 16)
-a16 a a a a a a a |
-a32 a a a a16 a a a a a |
-% end 1/32 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 32 * *) 1 16)
-a32 a a a a16 a a a a a |
-@end lilypond
-
-Balkenregeln können so definiert werden, dass sie nur in bestimmten
-Taktarten angewendet werden:
-
-@lilypond[quote,verbatim,relative=2]
-\time 5/8
-% end beams of all durations in 5/8 time signature at the 2/8 moment
-#(override-auto-beam-setting '(end * * 5 8) 2 8)
-c8 c d d d
-\time 4/4
-e8 e f f e e d d
-\time 5/8
-c8 c d d d
+@lilypond[quote,relative=2,verbatim]
+ \time 5/16
+ c8^"beats" c16 c8 |
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+ c8^"(2+3)" c16 c8
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+ c8^"(3+2)" c16 c8
+@end lilypond
+
+@lilypond[quote, verbatim,relative=1]
+\new Staff <<
+ \time 7/8
+ \new Voice = one {
+ \relative c'' {
+ \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+ a8 a a a a a a
+ }
+ }
+ \new Voice = two {
+ \relative c' {
+ \voiceTwo
+ \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
+ f8 f f f f f f
+ }
+ }
+>>
@end lilypond
Wenn mehrfache Stimmen benutzt werden, muss der @code{Staff}-Kontext
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context not specified - does not work correctly
-#(override-auto-beam-setting '(end * * 7 8) 3 8)
-#(override-auto-beam-setting '(end * * 7 8) 4 8)
-#(override-auto-beam-setting '(end * * 7 8) 5 8)
+% Context Voice specified - does not work correctly
+% Because of autogenerated voices, all beating will
+% be at beatLength (1 . 8)
+\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
-% Works correctly with context specified
-#(override-auto-beam-setting '(end * * 7 8) 3 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 4 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 5 8 'Staff)
+% Works correctly with context Staff specified
+\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@warning{Wenn eine unerwartete Bebalkung auftritt, schauen Sie
-zuerste die Balkeneinstellungen in @file{scm/@/auto@/-beam@/.scm}
-nach, ob sich hier Überschneidungen ergeben, weil die
-Balkenenden, die dort definiert sind, auch noch weiterhin
-wirksam sind zusätzlich zu den von Ihnen definierten.}
+@funindex revert-beam-setting
-@funindex revert-auto-beam-setting
-
-Jede ungewollte oder störende Balkenbeendigung aus den Standard-Einstellungen
-muss für Ihre Taktart rückgängig gemacht werden. Existierende
-automatische Bebalkungsregeln werden mit folgender
-Syntax entfernt:
+Beam settings can be reverted to get back to default behavior. This
+is accomplished by using @code{\revertBeamSettings}. The arguments
+are the same as for @code{\overrideBeamSettings}, except no value
+for @var{grouping} is given:
@example
-#(revert-auto-beam-setting
- '(Balken-Limit
- Balken-Zähler Balken-Nenner
- Taktart-Zähler Taktart-Nenner)
- Moment-Zähler Moment-Nenner [Kontext])
+\revertBeamSettings context time-signature rule-type
@end example
-@noindent
-wobei @code{Balken-Limit}, @code{Balken-Zähler}, @code{Balken-Nenner},
-@code{Taktart-Zähler}, @code{Taktart-Nenner}, @code{Moment-Zähler},
-@code{Moment-Nenner} sowie @code{Kontext} die gleichen sind
-wie oben erklärt.
-
@lilypond[quote,verbatim,relative=2]
\time 4/4
-a16 a a a a a a a a a a a a a a a
-% undo a rule ending 1/16 beams in 4/4 time at 1/4 moment
-#(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
-a16 a a a a a a a a a a a a a a a
-@end lilypond
-
-Die Regel in einer @code{revert-auto-beam-setting}-Definition
-muss exakt der ursprünglichen Regel entsprechen. Dabei werden
-keine Platzhalter akzeptiert.
-
-@lilypond[quote,verbatim,relative=2]
-\time 1/4
-#(override-auto-beam-setting '(end 1 16 1 4) 1 8)
-a16 a a a
-#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
-a a a a
-#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
-a a a a
+\repeat unfold 16 {a16}
+% set default rule for (1 1 1 1) grouping
+\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+\repeat unfold 16 {a16}
+% revert the new rule
+\revertBeamSettings #'Score #'(4 . 4) #'end
+\repeat unfold 16 {a16}
@end lilypond
@snippets
+@cindex beams, subdividing
+
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{beam-grouping-in-7-8-time.ly}
+{sub-dividing-beams.ly}
+
+@cindex measure groupings
+@cindex beats, grouping
+@cindex grouping beats
+@cindex measure sub-grouping
+
+@funindex autoBeamSettings
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{reverting-default-beam-endings.ly}
+{conducting-signs,-measure-grouping-signs.ly}
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{beam-endings-in-score-context.ly}
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
-
-@predefined
-@code{\autoBeamOff},
-@code{\autoBeamOn}.
-@endpredefined
-
@cindex Balken, letzter in einer Partitur
@cindex letzter Balken einer Partitur
@cindex Balken, letzter in einer polyphonen Stimme
@funindex ]
@funindex [
-In einigen Fällen kann es nötig sein, den automatischen Algorithmus
-für die Balken zu überschreiben. Die automatischen Balken werden
+In einigen Fällen kann es nötig sein, den automatischen Algorithmus
+für die Balken zu überschreiben. Die automatischen Balken werden
beispielsweise nicht über Pausen oder Taktlinien hinweg gesetzt, und
in Gesang werden die Balken oft nach dem Rhythmus des Textes und
-nicht dem der Musik gesetzt.
-Manuell definierte Balken werden mit den Zeichen @code{[} und
+nicht dem der Musik gesetzt.
+Manuell definierte Balken werden mit den Zeichen @code{[} und
@code{]} (AltGr+8 bzw. 9) markiert.
@lilypond[quote,relative=1,verbatim]
@funindex \noBeam
@funindex noBeam
-Einzelne Noten können mit dem Befehl @code{\noBeam} markiert werden,
+Einzelne Noten können mit dem Befehl @code{\noBeam} markiert werden,
damit sie nicht mit einem Balken versehen werden.
@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
@funindex \bar
@funindex bar
-Taktstriche trennen Takte voneinander, werden aber auch verwendet,
-um Wiederholungen anzuzeigen. Normalerweise werden sie automatisch
+Taktstriche trennen Takte voneinander, werden aber auch verwendet,
+um Wiederholungen anzuzeigen. Normalerweise werden sie automatisch
nach Vorgabe der aktuellen Taktart eingefügt.
Die einfachen, automatisch eingefügten Taktstriche können mit dem
@end example
@noindent
-benutzt werden. Damit wird ein unsichtbarer Taktstrich an dieser Stelle eingefügt
-und damit ein Zeilenumbruch erlaubt (aber nicht erzwungen), ohne
+benutzt werden. Damit wird ein unsichtbarer Taktstrich an dieser Stelle eingefügt
+und damit ein Zeilenumbruch erlaubt (aber nicht erzwungen), ohne
dass sich die Anzahl der Takte erhöhen würde. Um einen
Zeilenumbruch zu erzwingen, siehe
@ref{Zeilenumbrüche}.
c c c c
@end lilypond
-In Partituren mit vielen Systemen wird ein @code{\bar}-Befehl in einem
-System automatisch auf alle anderen Systeme angewendet. Die resultierenden
-Taktstriche sind miteinander verbunden innerhalb einer Gruppe
+In Partituren mit vielen Systemen wird ein @code{\bar}-Befehl in einem
+System automatisch auf alle anderen Systeme angewendet. Die resultierenden
+Taktstriche sind miteinander verbunden innerhalb einer Gruppe
(@code{StaffGroup}) oder einem Klaviersystem
(@code{PianoStaff} bzw. (@code{GrandStaff}).
@funindex bartype
Der Befehl @code{\bar }@var{Taktart} ist eine Kurzform von:
-@code{\set Timing.whichBar = }@var{Taktart}. Immer, wenn
-@code{whichBar} auf einen Wert gesetzt wird, wird ein
+@code{\set Timing.whichBar = }@var{Taktart}. Immer, wenn
+@code{whichBar} auf einen Wert gesetzt wird, wird ein
Taktstrich dieses Typs erzeugt.
Der automatisch erzeugte Taktstrich ist @code{"|"}. Das kann
@funindex barCheckSynchronize
@funindex |
-Die Taktüberprüfung hilft, Fehler in den Notendauern zu entdecken.
-Eine Taktüberprüfung wird mit dem Taktstrichsymbol @qq{|} (Taste AltGr+<)
-eingegeben. Immer, wenn LilyPond bei der Ausgabe des Notendrucks
-auf dieses Zeichen stößt, sollte hier in den Noten auch ein
-Taktstrich erscheinen. Wenn das nicht der Fall ist, wird eine Warnung
-ausgegeben. Im nächsten Beispiel resultiert die zweite Taktüberprüfung
+Die Taktüberprüfung hilft, Fehler in den Notendauern zu entdecken.
+Eine Taktüberprüfung wird mit dem Taktstrichsymbol @qq{|} (Taste AltGr+<)
+eingegeben. Immer, wenn LilyPond bei der Ausgabe des Notendrucks
+auf dieses Zeichen stößt, sollte hier in den Noten auch ein
+Taktstrich erscheinen. Wenn das nicht der Fall ist, wird eine Warnung
+ausgegeben. Im nächsten Beispiel resultiert die zweite Taktüberprüfung
in einer Fehlermeldung.
@example
@}
@end example
-Besonders in mehrstimmiger komplizierter Musik können
-falschen Notenwerte die ganze Partitur durcheinander bringen.
-Es lohnt sich also, die Fehlersuche damit zu beginnen, nicht bestandene
+Besonders in mehrstimmiger komplizierter Musik können
+falschen Notenwerte die ganze Partitur durcheinander bringen.
+Es lohnt sich also, die Fehlersuche damit zu beginnen, nicht bestandene
Taktüberprüfungen zu kontrollieren.
Wenn aufeinander folgende Taktüberprüfungen mit dem gleichen
@funindex |
@funindex pipeSymbol
-Es ist auch möglich, die Bedeutung des Symbols @code{|}
+Es ist auch möglich, die Bedeutung des Symbols @code{|}
umzudefinieren, so dass hiermit eine andere Aktion als eine
-Taktüberprüfung erreicht wird.
-Das geschieht, indem man der Pipe (@code{pipeSymbol} einen musikalischen
+Taktüberprüfung erreicht wird.
+Das geschieht, indem man der Pipe (@code{pipeSymbol} einen musikalischen
Ausdruck zuweist. Im nächsten Beispiel wird @code{|} dazu
verwendet, eine doppelte Taktlinie auszugeben, woimmer man
das Zeichen auchsetzt. Gleichzeitig hört das Zeichen auf,
@funindex \barNumberCheck
@funindex barNumberCheck
-Wenn man größere Musikstücke kopiert, kann es hilfreich sein, wenn
-LilyPond überprüft, ob die Taktnummer, in der Sie gerade kopieren,
+Wenn man größere Musikstücke kopiert, kann es hilfreich sein, wenn
+LilyPond überprüft, ob die Taktnummer, in der Sie gerade kopieren,
mit der des Originales übereinstimmt. Das kann mit dem Befehl
@code{\barNumberCheck} folgenderweise überprüft werden:
@end verbatim
@noindent
-Eine Warnung wird ausgegeben, wenn der interne Zähler
+Eine Warnung wird ausgegeben, wenn der interne Zähler
@code{currentBarNumber} von LilyPond
nicht mit dem Wert 123 übereinstimmt.
@end lilypond
LilyPond hat auch Unterstützung für zwei besondere Verzierungen,
-den Vorschlag und den Vorhalt. Der Vorschlag wird durch eine
-verkleinerte Note mit Schrägstrich
-und Bogen notiert. Der Vorhalt dagegen ist eine Verzierung, die
-einen bestimmten Notenwert der Hauptnote für sich beansprucht.
+den Vorschlag und den Vorhalt. Der Vorschlag wird durch eine
+verkleinerte Note mit Schrägstrich
+und Bogen notiert. Der Vorhalt dagegen ist eine Verzierung, die
+einen bestimmten Notenwert der Hauptnote für sich beansprucht.
Er wird als verkleinerte Note ohne Schrägstrich notiert.
@lilypond[quote,relative=2,verbatim]
\acciaccatura { g16[ f] } e4
@end lilypond
-Die Position von Verzierungen ist zwischen Notensystemen
+Die Position von Verzierungen ist zwischen Notensystemen
synchronisiert. Im nächsten Beispiel stehen im einen
System zwei 16-Noten für jede 8-Note des zweiten Systems:
@cindex Verzierungen verändern
@cindex Verzierungen, Aussehen verändern
-Ein @code{\grace}-Notenabschnitt wird nach besonderen Satzregeln
-gesetzt, um z. B. kleinere Noten zu benutzen und die Richtung der
-Hälse einzustellen. Veränderungen am Layout müssen also innerhalb
+Ein @code{\grace}-Notenabschnitt wird nach besonderen Satzregeln
+gesetzt, um z. B. kleinere Noten zu benutzen und die Richtung der
+Hälse einzustellen. Veränderungen am Layout müssen also innerhalb
des Verzierungsausdrucks gesetzt werden, damit sie auch eine Auswirkung haben. Die Veränderungen müssen auch innerhalb des
Verzierungsausdrucks rückgängig gemacht werden. In diesem
Fall wird die Richtung der Hälse geändert und dann wieder der
@cindex Synchronisation von Verzierungen
@cindex Verzierungen, Synchronisation
-Eine Partitur, die mit einem @code{\grace}-Ausdruck beginnt, benötigt
-eine explizit gesetzte neue Stimme (@code{\new Voice}), sonst werden
+Eine Partitur, die mit einem @code{\grace}-Ausdruck beginnt, benötigt
+eine explizit gesetzte neue Stimme (@code{\new Voice}), sonst werden
Hauptnote und Verzierung auf verschiedenen Systemen gesetzt.
-Ein Vorschlag (@emph{acciaccatura}) mit mehreren Noten und
+Ein Vorschlag (@emph{acciaccatura}) mit mehreren Noten und
Balken wird ohne den Schrägstrich gesetzt und sieht einem
Vorhalt (@emph{appoggiatura}) sehr ähnlich.
@c TODO Add link to LSR snippet to add slash when available
-Die Synchronisation von Verzierungen kann auch zu Überraschungen führen.
-Auch andere Symbole der Systeme, wie Vorzeichen, Taktlinien usw., werden
-synchronisiert. Vorsicht ist geboten, wenn nur in bestimmten Systemen
+Die Synchronisation von Verzierungen kann auch zu Überraschungen führen.
+Auch andere Symbole der Systeme, wie Vorzeichen, Taktlinien usw., werden
+synchronisiert. Vorsicht ist geboten, wenn nur in bestimmten Systemen
Verzierungen vorkommen:
@lilypond[quote,relative=2,verbatim]
@end lilypond
@noindent
-Dem kann abgeholfen werden, indem unsichtbare Verzierungsnoten der selben
-Länge in die anderen Systeme gesetzt werden. Im obigen Beispiel müsste
-also
+Dem kann abgeholfen werden, indem unsichtbare Verzierungsnoten der selben
+Länge in die anderen Systeme gesetzt werden. Im obigen Beispiel müsste
+also
@lilypond[quote,ragged-right,relative=2,verbatim,fragment]
<<
@noindent gesetzt werden.
-Verzierungsabschnitte sollten nur innerhalb von sequentiellen musikalischen
-Ausdrücken benützt werden. Wenn sie ineinandergeschachtelt werden, kann es
+Verzierungsabschnitte sollten nur innerhalb von sequentiellen musikalischen
+Ausdrücken benützt werden. Wenn sie ineinandergeschachtelt werden, kann es
zu Fehlermeldungen oder Abstürzen kommen.
@end lilypond
@noindent
-Wie das Beispiel zeigt, erstellt @code{ly:make-moment n m}
+Wie das Beispiel zeigt, erstellt @code{ly:make-moment n m}
die Dauer Zähler/Nenner einer ganzen Note. Zum Beispiel heißt
@code{ly:make-moment 1 8} die Dauer einer Achtelnote, und
@code{ly:make-moment 7 16} die Dauer von sieben Sechszehntelnoten.
@cindex letra y barrado
@funindex autoBeaming
-@funindex autoBeamSettings
-@funindex (end * * * *)
-@funindex (begin * * * *)
+@funindex beamSettings
@funindex measureLength
@funindex beatLength
-@funindex beatGrouping
@funindex \time
@funindex time
@funindex \set
@funindex set
-Existen dos tipos de reglas de barrado: las reglas de @emph{agrupación
-de barras} y las de @emph{terminación de barra}. Las reglas de
-agrupación de barras son las más sencillas, pero se sobreescriben por
-cualquier regla de terminación de barra que corresponda.
-
La colocación de las barras automáticas se determina aplicando las
siguientes reglas en este orden:
@item si está en vigor @code{\autoBeamOff} no poner barras; en caso contrario:
-@item si es de aplicación alguna regla de terminación de barra, usarla para
-determinar los lugares válidos en que las barras pueden terminar; en
-caso contrario:
-
-@item si es de aplicación alguna regla válida (véase más abajo) de
-agrupación de barras, usarla para agrupar las notas con las barras; en
-caso contrario:
-
@item usar el valor de @code{beatLength} para agrupar las notas con barras
@end itemize
@i{@strong{Modificar las agrupaciones de pulsos}}
-Si no hay definida ninguna regla de final de barra para la duración de
-una barra en particular dentro del tipo de compás en uso, su barrado
-se controla mediante tres propiedades de contexto:
-@code{measureLength}, @code{beatLength} y @code{beatGrouping}. Estas
-propiedades se deben establecer en los contextos @code{Score},
-@code{Staff} o @code{Voice} para delimitar el ámbito de su efecto.
-Los valores predeterminados se establecen al procesarse las
-instrucciones @code{\time}, por ello cualquier instrucción @code{\set}
-que modifique su valor se deberá escribir después de todas las
-instrucciones @code{\time}.
-
-@warning{Estas tres propiedades se hacen efectivas para una barra
-concreta @strong{solamente} si no está predefinida ninguna regla de
-terminación de barra para esa duración de la barra dentro del tipo de
-compás en uso, o si todas esas reglas de terminación de barras han
-sido devueltas a su valor inicial.}
-
-Dichas propiedades determinan el barrado de la siguiente forma:
-
-Las barras pueden dar comienzo en cualquier lugar (excepto si ya hay
-una barra activa). Las barras terminan en un tiempo determinado por
-los valores de @code{beatGrouping} y @code{beatLength}, como se ve a
-continuación:
-
-@itemize
-
-@item
-Si @code{beatGrouping} y @code{beatLength} con consistentes con
-@code{measureLength}, se utiliza @code{beatGrouping} para determinar
-los puntos finales de las barras.
-
-@item
-Si @code{beatGrouping} y @code{beatLength} no concuerdan con
-@code{measureLength}, se usa @code{beatLength} para determinar los
-puntos finales de las barras.
-
-@end itemize
-
-De forma predeterminada, las propiedades the @code{measureLength} y
-@code{beatLength} se derivan del compás establecido por la instrucción
-@code{\time}. La longitud @code{measureLength} está establecida de
-forma que sea exactamente la misma que la longitud del compás dado por
-la indicación de compás, y la longitud del pulso @code{beatLength}
-tiene un valor dado igual a una parte de compás (1/n, siendo n el
-denominador del compás).
-
-El valor predeterminado de @code{beatGrouping} se toma de una tabla
-que está en @file{scm/@/music@/-functions@/.scm}. Para localizarla,
-véase @rlearning{Otras fuentes de información}. Define la agrupación
-de pulsos para los compases de 3/8, 4/8, 5/8, 8/8 y todas las
-indicaciones de compás compuesto usuales.
-
Tanto @code{measureLength} como @code{beatLength} son @i{momentos},
unidades de duración musical. Las cantidades del tipo @i{moment} se
crean por la función de Scheme @code{ly:make-moment}. Para ver más
-información sobre esta función, consulte @ref{Gestión del tiempo}.
-
-@code{beatGrouping} es una lista de enteros que dan el número de
-pulsos en cada grupo.
-
-@snippets
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{specifying-context-with-beatgrouping.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{using-beatlength-and-beatgrouping.ly}
-
-@funindex subdivideBeams
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
-
-@cindex compases, agrupaciones de
-@cindex pulsos, agrupar
-@cindex agrupación de pulsos
-@cindex compases, subgrupos dentro de
-
-@funindex autoBeamSettings
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{conducting-signs,-measure-grouping-signs.ly}
-
-
-@strong{@i{Modificar los puntos finales de las barras}}
-
-Se requieren reglas de terminación de barra cuando barras de distintas
-duraciones han de terminar en diferentes puntos dentro del compás.
-Por ejemplo, podríamos desear que las barras de corchea en 4/4
-terminaran solamente al final del compás o en la mitad del mismo, pero
-que las barras de semicorchea terminasen en las posiciones de negra
-para evitar barras continuas demasiado largas. Las reglas funcionan
-como sigue:
-
-Las barras automáticas pueden comenzar en cualquier nota pero
-solamente pueden terminar en unas pocas posiciones dentro del compás,
-concretamente en las posiciones definidas por las propiedades de
-@code{autoBeamSettings}. Estas propiedades consisten en una lista de
-reglas que especifican dónde pueden terminar las barras. Las reglas
-predeterminadas de @code{autoBeamSettings} están definidas en
-@file{scm/@/auto@/-beam@/.scm}. Para localizarlo, consulte
-@rlearning{Otras fuentes de información}.
-
-Para añadir una regla a la lista, utilice
-
-@example
-#(override-auto-beam-setting
- '(límite-barra
- numerador-barra denominador-barra
- numerador-compás denominador-compás)
- numerador-momento denominador-momento [contexto])
-@end example
-
-@noindent
-donde:
-
-@itemize
-
-@item @code{límite-barra} es el tipo de límite de barra automática que se
-define. Puede ser @code{begin} o @code{end}, pero sólo es efectivo
-@code{end}.
-
-@item @code{numerador-barra/denominador-barra} es la duración de la barra
-a la que se quiere aplicar la regla. Se considera que una barra tiene
-la duración de su nota más breve. Ajuste @code{numerador-barra} y
-@code{denominador-barra} a un asterisco @code{'*'} para que la regla
-se aplique a las barras de cualquier duración.
-
-@item @code{numerador-compás/denominador-compás} especifica la indicación de compás
-a que se aplica esta regla. Si @code{numerador-compás} y
-@code{denominador-compás} tienen el valor de un asterisco @code{'*'},
-esta regla se aplica a cualquier tipo de compás.
+información sobre esta función, consulte @ref{Time administration}.
-@item @code{numerador-momento/denominador-momento} es la posición dentro del
-compás en que la barra debe terminar.
-
-@funindex score-override-auto-beam-setting
-@funindex override-auto-beam-setting
-
-@item @code{contexto} es opcional, y especifica el contexto en que se debe
-hacer el cambio. El valor predeterminado es @code{'Voice}.
-
-@code{#(score-override-auto-beam-setting '(A B C D) E F)} es
-equivalente a @code{#(override-auto-beam-setting '(A B C D) E F
-'Score)}.
-
-@end itemize
-
-Por ejemplo, si las barras automáticas siempre deben terminar sobre la
-primera negra, para cualquier tipo de compás o duración de la barra,
-use
-
-@lilypond[quote,verbatim,relative=2]
-a8 a a a a a a a
-#(override-auto-beam-setting '(end * * * *) 1 4)
-a8 a a a a a a a
-@end lilypond
-
-Podemos forzar los ajustes de las barras para que tengan efecto sólo
-sobre las barras cuya nota más breve sea de una cierta duración:
-
-@lilypond[quote,verbatim,relative=2]
-\time 2/4
-% end 1/16 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 16 * *) 1 16)
-a16 a a a a a a a |
-a32 a a a a16 a a a a a |
-% end 1/32 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 32 * *) 1 16)
-a32 a a a a16 a a a a a |
-@end lilypond
-
-Podemos forzar los ajustes de las barras para que tengan efecto
-solamente en ciertos tipos de compás:
-
-@lilypond[quote,verbatim,relative=2]
-\time 5/8
-% end beams of all durations in 5/8 time signature at the 2/8 moment
-#(override-auto-beam-setting '(end * * 5 8) 2 8)
-c8 c d d d
-\time 4/4
-e8 e f f e e d d
-\time 5/8
-c8 c d d d
+@lilypond[quote,relative=2,verbatim]
+ \time 5/16
+ c8^"beats" c16 c8 |
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+ c8^"(2+3)" c16 c8
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+ c8^"(3+2)" c16 c8
+@end lilypond
+
+@lilypond[quote, verbatim,relative=1]
+\new Staff <<
+ \time 7/8
+ \new Voice = one {
+ \relative c'' {
+ \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+ a8 a a a a a a
+ }
+ }
+ \new Voice = two {
+ \relative c' {
+ \voiceTwo
+ \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
+ f8 f f f f f f
+ }
+ }
+>>
@end lilypond
En caso de usar varias voces, se debe especificar el contexto
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context not specified - does not work correctly
-#(override-auto-beam-setting '(end * * 7 8) 3 8)
-#(override-auto-beam-setting '(end * * 7 8) 4 8)
-#(override-auto-beam-setting '(end * * 7 8) 5 8)
+% Context Voice specified - does not work correctly
+% Because of autogenerated voices, all beating will
+% be at beatLength (1 . 8)
+\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
-% Works correctly with context specified
-#(override-auto-beam-setting '(end * * 7 8) 3 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 4 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 5 8 'Staff)
+% Works correctly with context Staff specified
+\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@warning{Si se produce un comportamiento inesperado de las barras,
-compruebe la existencia de una posible interferencia en los ajustes
-predeterminados del barrado automático que están en
-@file{scm/@/auto@/-beam@/.scm}, porque los finales de barra definidos
-aquí aún son válidos además de los suyos.}
-
-@funindex revert-auto-beam-setting
+@funindex revert-beam-setting
-Debemos revertir cualquier final predeterminado indeseado o
-conflictivo, para nuestro compás concreto. Podemos eliminar una regla
-de terminación de barra previamente establecida o definida por el
-usuario, usando
+Beam settings can be reverted to get back to default behavior. This
+is accomplished by using @code{\revertBeamSettings}. The arguments
+are the same as for @code{\overrideBeamSettings}, except no value
+for @var{grouping} is given:
@example
-#(revert-auto-beam-setting
- '(beam-limit
- beam-numerator beam-denominator
- time-signature-numerator time-signature-denominator)
- moment-numerator moment-denominator [context])
+\revertBeamSettings context time-signature rule-type
@end example
-@noindent
-@code{límite-barra}, @code{numerador-barra}, @code{denominador-barra},
-@code{numerador-compás}, @code{denominador-compás},
-@code{numerador-momento}, @code{denominador-momento} y @code{contexto}
-son los mismos que antes.
@lilypond[quote,verbatim,relative=2]
\time 4/4
-a16 a a a a a a a a a a a a a a a
-% undo a rule ending 1/16 beams in 4/4 time at 1/4 moment
-#(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
-a16 a a a a a a a a a a a a a a a
-@end lilypond
-
-La regla de un enunciado @code{revert-auto-beam-setting} debe
-corresponderse exactamente con la regla original. Esto es, no se
-tiene en cuenta ninguna expansión de comodines.
-
-@lilypond[quote,verbatim,relative=2]
-\time 1/4
-#(override-auto-beam-setting '(end 1 16 1 4) 1 8)
-a16 a a a
-#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
-a a a a
-#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
-a a a a
+\repeat unfold 16 {a16}
+% set default rule for (1 1 1 1) grouping
+\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+\repeat unfold 16 {a16}
+% revert the new rule
+\revertBeamSettings #'Score #'(4 . 4) #'end
+\repeat unfold 16 {a16}
@end lilypond
@snippets
+@cindex beams, subdividing
+
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{beam-grouping-in-7-8-time.ly}
+{sub-dividing-beams.ly}
+
+@cindex measure groupings
+@cindex beats, grouping
+@cindex grouping beats
+@cindex measure sub-grouping
+
+@funindex autoBeamSettings
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{reverting-default-beam-endings.ly}
+{conducting-signs,-measure-grouping-signs.ly}
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{beam-endings-in-score-context.ly}
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
-
-@predefined
-@code{\autoBeamOff},
-@code{\autoBeamOn}.
-@endpredefined
-
@cindex barra, última en la partitura
@cindex barra, última en una voz polifónica
en anglais --- s'écrit @code{4}, alors qu'une blanche ---
@emph{half-note}, 1/2 ronde --- s'écrit @code{2}. Pour des notes plus
longues qu'une ronde, vous devrez utiliser les commandes @code{\longa}
-pour une longue, et @code{\breve} pour une brève, aussi appelée carrée.
+pour une longue, et @code{\breve} pour une brève, aussi appelée carrée.
Des durées plus courtes que la quintuple-croche --- 1/128 de ronde ---
sont possibles, à condition de les ligaturer.
-
+
@c Two 64th notes are needed to obtain beams
@lilypond[quote,verbatim,relative=2]
\time 8/1
c\longa c\breve c1 c2
c4 c8 c16 c32 c64 c64
@end lilypond
-
+
@noindent
Voici ces mêmes durées sans la fonction de ligature automatique.
c\longa c\breve c1 c2
c4 c8 c16 c32 c64 c64
@end lilypond
-
+
Une note dont la durée est de quatre brèves s'obtient par la commande
@code{\maxima}. Celle-ci n'est toutefois disponible que dans le cadre de
la notation ancienne. Pour plus de détails, voir @ref{Notations anciennes}.
Vous pouvez altérer la durée des notes, silences ou accords en leur
joignant une fraction @var{N/M}, donnant @qq{@code{*}@var{N/M}} --- ou
@qq{@code{*}@var{N}} si @var{M=1}. Ceci ne modifiera en rien l'apparence
-des notes ou silences produits, mais affectera le rendu MIDI.
+des notes ou silences produits, mais affectera le rendu MIDI.
Dans l'exemple suivant, les trois premières notes prennent exactement
deux temps, mais aucun triolet n'est imprimé.
La durée d'un silence invisible ou saut de notes (@emph{skip}) peut
elle aussi être affectée d'un multiplicateur. Cette technique permet
-tout simplement de sauter plusieurs mesures, comme par exemple un
+tout simplement de sauter plusieurs mesures, comme par exemple un
@code{s1*23}.
@cindex échelonnement de musique
Une liaison de tenue (ou de prolongation) relie deux notes adjacentes de
même hauteur. Dans les faits, elle prolonge la durée d'une note.
-
+
@warning{Une liaison de tenue ne doit pas être confondue avec une
liaison d'@strong{articulation} ou de @strong{phrasé}. Une liaison de
tenue est un moyen parmi d'autres pour prolonger la durée d'une note,
-tout comme les points.}
+tout comme les points.}
Une liaison de tenue s'indique au moyen d'un tilde @code{~}.
Les liaisons @qq{Laissez vibrer} (@notation{L.v.}) sont utilisées pour
le piano, la harpe, et certains instruments de percussion. Elles
indiquent à l'instrumentiste de laisser sonner la note ou l'accord au
-lieu de l'étouffer. Elles s'indiquent de la manière suivante :
+lieu de l'étouffer. Elles s'indiquent de la manière suivante :
@lilypond[quote,verbatim,relative=1]
<c f g>\laissezVibrer
à la position où serait imprimée la note. Cela rend plus facile la mise
en place de musique polyphonique, puisque le formateur automatique de
collision des silences laissera ces silences tranquilles.
-
+
@lilypond[quote,verbatim,relative=2]
a'4\rest d'4\rest
@end lilypond
Morceaux choisis :
@rlsr{Rhythms}.
-Référence du programme :
+Référence du programme :
@rinternals{Rest}.
Morceaux choisis :
@rlsr{Rhythms}.
-Référence du programme :
+Référence du programme :
@rinternals{SkipMusic}.
doit donc correspondre à la longueur de la mesure telle que définie par
la métrique. C'est la raison pour laquelle on utilisera aussi des
points d'augmentation ou des fractions :
-
+
@lilypond[quote,fragment,verbatim]
\compressFullBarRests
\time 2/4
Vous pouvez aussi ajouter du texte à un silence multimesure en utilisant
la syntaxe @var{note}-@code{markup} (cf. @ref{Mise en forme du texte}). La
variable @code{\fermataMarkup} quant à elle permet d'ajouter un point
-d'orgue :
+d'orgue :
@lilypond[quote,verbatim,fragment]
\compressFullBarRests
Un silence multimesure placé directement après une commande
@code{\partial} risque fort de perturber le vérificateur de limites et
-numéros de mesure.
+numéros de mesure.
@funindex \textLengthOn
Morceaux choisis :
@rlsr{Rhythms}.
-Référence du programme :
+Référence du programme :
@rinternals{MultiMeasureRest}.
@rinternals{MultiMeasureRestNumber},
@rinternals{MultiMeasureRestText}.
Les mesures incomplètes, telles que les anacrouses ou levées, doivent
être entrées avec la commande @code{\partial}. La syntaxe de cette
-commande est
+commande est
@example
\partial @var{durée}
LilyPond ne change de ligne ou de page qu'au niveau des barres de
mesure. Si votre musique non mesurée s'étend sur plus d'une ligne, il
-vous faudra insérer des barres de mesure invisibles,
+vous faudra insérer des barres de mesure invisibles,
@example
\bar ""
@funindex times
LilyPond gère les métriques composites, aussi bien de manière explicite
-que de manière détournée --- modification de l'indicateur de métrique
+que de manière détournée --- modification de l'indicateur de métrique
et échelonnement de la durée des notes.
@strong{@i{Portées aux métriques différentes, mesures d'égale longueur}}
On peut convertir automatiquement les notes longues en notes liées. Il
suffit pour cela de remplacer le graveur @code{Note_heads_engraver}
par le graveur @code{Completion_heads_engraver}. Dans l'exemple
-suivant, les notes qui dépassent de la mesure sont divisées et liées.
+suivant, les notes qui dépassent de la mesure sont divisées et liées.
@lilypond[quote,verbatim,relative=1]
\new Voice \with {
\remove "Note_heads_engraver"
\consists "Completion_heads_engraver"
-}
+}
{ c2. c8 d4 e f g a b c8 c2 b4 a g16 f4 e d c8. c2 }
@end lilypond
@seealso
-Glossaire musicologique :
+Glossaire musicologique :
@rglos{tie}
Manuel d'apprentissage :
Bien que toutes les durées --- particulièrement celles contenant des
nolets --- ne puissent être exactement représentées avec des notes
normales et des points, le graveur @code{Completion_heads_engraver}
-n'insérera pas de nolet.
+n'insèrera pas de nolet.
@code{Completion_heads_engraver} affecte seulement les notes, il ne
divise pas les silences.
Snippets:
@rlsr{Rhythms}.
-Référence du programme :
+Référence du programme :
@rinternals{RhythmicStaff}.
@rinternals{Pitch_squash_engraver}.
@funindex autoBeamOff
@lilypond[quote,verbatim,relative=2]
-\time 2/4 c8 c c c
+\time 2/4 c8 c c c
\time 6/8 c c c c8. c16 c8
@end lilypond
définir des groupements manuellement --- voir @ref{Barres de ligature manuelles}. Dans
le cas où le groupe de notes en question contient un silence, il est
@strong{impératif} d'indiquer explicitement les début et fin de la
-ligature.
+ligature.
Lorsque les ligatures automatiques ne sont pas nécessaires, il suffit de
désactiver la fonctionnalité par un @code{\autoBeamOff} --- réactivation
@cindex ligature et mélisme
@warning{Si des ligatures sont utilisées dans les paroles d'une chanson
-(pour indiquer des mélismes), les ligatures automatiques doivent être
-désactivées, avec @code{\autoBeamOff}, et indiquées manuellement.}
+(pour indiquer des mélismes), les ligatures automatiques doivent être
+désactivées, avec @code{\autoBeamOff}, et indiquées manuellement.}
Des règles de dérogation au comportement automatique par défaut sont
possibles ; voir @ref{Définition des règles de ligature automatique}.
Morceaux choisis :
@rlsr{Rhythms}.
-Références internes :
+Références internes :
@rinternals{Beam}.
@cindex paroles et ligatures
@funindex autoBeaming
-@funindex autoBeamSettings
-@funindex (end * * * *)
-@funindex (begin * * * *)
+@funindex beamSettings
@funindex measureLength
@funindex beatLength
-@funindex beatGrouping
@funindex \time
@funindex time
@funindex \set
@funindex set
-LilyPond dispose de deux types de règles en matière de ligature : des
-règles concernant le @strong{regroupement}, et des règles concernant la
-@strong{terminaison} des ligatures. Les règles de regroupement sont des
-plus simples mais peuvent être outrepassées par des règles de
-terminaison.
+The placement of automatic beams is determined by the time signature.
+Three types of rules are used for determining the end of automatic
+beams: @emph{default} rules
+for the time signature, @emph{explicit} rules for the beam in the time
+signature, and the @emph{beatLength} for the time signature.
Les règles déterminant le positionnement des ligatures automatiques
s'appliquent dans l'ordre suivant de priorité :
@itemize
@item Une ligature explicite --- indiquée par @code{[@dots{}]} --- sera
-toujours respectée ; sinon
+toujours respectée ; sinon
@item si @code{\autoBeamOff} a été activé, il n'y aura pas de ligature ;
sinon
-@item si une règle de terminaison peut s'appliquer, s'y référer pour
-déterminer à quel moment une ligature peut prendre fin ; sinon
-
-@item si une règle valide de regroupement par ligature (voir ci-dessous)
-peut s'appliquer, s'y référer ; sinon
-
@item utiliser la valeur de @code{beatLength} pour regrouper les notes
par des ligatures.
@i{@strong{Modification des ligatures selon la pulsation}}
-Lorsque, pour une métrique donnée, aucune règle n'a été définie quant à
-la fin ni la longueur d'une ligature particulière, cette ligature sera
-contrôlée par trois propriétés : @code{measureLength}, @code{beatLength}
-et @code{beatGrouping}. Ces propriétés sont définies, selon la portée
-de leur action, au niveau des contextes @code{Score}, @code{Staff} ou
-@code{Voice}. Leurs valeurs par défaut sont initialisées par la
-commande @code{\time} ; par voie de conséquence, toute commande
-@code{\set} destinée à en modifier les valeurs doit se placer après la
-commande @code{\time}.
-
-@warning{Ces trois propriétés s'appliqueront à une ligature donnée dans
-@strong{deux cas seulement} : s'il n'existe aucune règle de fin pour la
-longueur d'une ligature dans la métrique considérée, ou si toutes les
-règles de fin ont été annulées.}
-
-Ces propriétés déterminent la manière de ligaturer ainsi :
-
-Une ligature peut débuter n'importe où, à moins qu'il n'y en ait déjà
-une d'active. Les ligatures se terminent à un moment déterminé par les
-valeurs de @code{beatGrouping} et @code{beatLength}, selon le principe
-suivant :
-
-@itemize
-
-@item Si @code{beatGrouping} et @code{beatLength} concordent avec
-@code{measureLength}, @code{beatGrouping} est utilisé pour déterminer les
-terminaisons des ligatures.
-
-@item Si @code{beatGrouping} et @code{beatLength} ne sont pas en
-concordance avec @code{measureLength}, @code{beatLength} est utilisé
-pour déterminer les terminaisons des ligatures.
-
-@end itemize
-
-@code{measureLength} et @code{beatLength} tirent leur valeur par défaut
-à partir de la métrique telle que définie par la commande @code{\time}.
-@code{measureLength} est définie comme étant la longueur d'une mesure
-complète pour la métrique donnée. Enfin, @code{beatLength} prend la
-valeur du dénominateur de la métrique.
-
-Les valeurs par défaut de @code{beatGrouping} sont répertoriées dans une
-table contenue dans le fichier @file{scm/@/music@/-functions@/.scm} ---
-consultez @rlearning{Autres sources de documentation} pour savoir où il se
-situe. Cette table définit les règles de groupement pour les mesures à
-3/8, 4/8, 5/8, 8/8, ainsi que les mesures composées les plus courantes.
-
-@code{measureLength} et @code{beatLength} constituent tous deux des
+@code{beatLength} constituent tous deux des
@strong{moments}, autrement dit des unités de durée musicale. La
fonction Scheme @code{ly:make-moment} est tout particulièrement chargée
de créer cette quantité de type @i{moment} --- pour plus d'information,
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{grouping-beats.ly}
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{specifying-context-with-beatgrouping.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{using-beatlength-and-beatgrouping.ly}
-
-@funindex subdivideBeams
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
-
-@cindex mesure et regroupements
-@cindex pulsation et regroupements
-@cindex groupement par pulsation
-@cindex mesure, subdivision
-
-@funindex autoBeamSettings
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{conducting-signs,-measure-grouping-signs.ly}
-
-
-@strong{@i{Modification du bornage des ligatures}}
-
-Les règles de fin de ligature sont nécessaires lorsque des ligatures
-relatives à différentes durées doivent se terminer à différents endroits
-au sein de la mesure. Par exemple, il peut être souhaitable, dans une
-mesure en 4/4, que les barres de ligature des croches s'achèvent
-seulement à la fin d'une mesure ou au milieu de celle-ci ; mais que
-pour des doubles-croches les ligatures se terminent toutes les noires,
-afin d'éviter de trop longues séries ligaturées. Ces règles fonctionnent
-de la manière suivante :
-
-Dans les métriques courantes, les ligatures automatiques peuvent commencer
-sur n'importe quelle note, mais ne peuvent se terminer qu'à certains
-points précis dans la mesure : sur une pulsation, ou après toute durée
-spécifiée par les propriétés nommées @code{autoBeamSettings}. Ces
-propriétés consistent en une liste de règles relatives au début ou à la
-fin des ligatures. Par défaut, elles sont définies dans le fichier
-@file{scm/@/auto@/-beam@/.scm} --- pour le localiser, voir
-@rlearning{Autres sources de documentation}.
-
-On peut ajouter à cette liste une nouvelle règle, au moyen de la commande
-
-@example
-#(override-auto-beam-setting
- '(extrémité
- ligature-numérateur ligature-dénominateur
- métrique-numérateur métrique-dénominateur)
- moment-numérateur moment-dénominateur [contexte])
-@end example
-
-@noindent
-où
-
-@itemize
-
-@item @code{extrémité} désigne le début (@code{begin}) ou la fin
-(@code{end}) de la ligature. Notez que seul @code{end} ne sera effectif.
-
-@item @code{ligature-numérateur/ligature-dénominateur} désigne la
-valeur rythmique de la note que l'on veut affecter, ou de la plus brève
-des notes concernées. Si cette règle doit s'appliquer à toutes les
-ligatures, remplacez @code{ligature-numérateur} et
-@code{ligature-dénominateur} par des étoiles @qq{@code{*}}.
-
-
-@item @code{métrique-numérateur/métrique-dénominateur} est le chiffre
-de mesure dans lequel la règle doit s'appliquer. Si celle-ci doit
-s'appliquer dans toutes les métriques, remplacez
-@code{métrique-numérateur} et @code{métrique-dénominateur} par des
-étoiles @qq{@code{*}}.
-
-@item @code{moment-numérateur/moment-dénominateur} est l'emplacement,
-dans la mesure, auquel les ligatures doivent s'achever.
-
-@funindex score-override-auto-beam-setting
-@funindex override-auto-beam-setting
-
-@item @code{contexte} est un argument facultatif, qui détermine le
-contexte dans lequel la règle doit s'appliquer. Par défaut, il s'agit
-de @code{'Voice}.
-
-@code{#(score-override-auto-beam-setting '(A B C D) E F)} équivaut à
-@code{#(override-auto-beam-setting '(A B C D) E F 'Score)}.
-
-@end itemize
-
-Par exemple, si l'on veut que les ligatures s'achèvent toujours après la
-première noire, quelles que soient la métrique et la durée de
-regroupement :
-
-@lilypond[quote,verbatim,relative=2]
-a8 a a a a a a a
-#(override-auto-beam-setting '(end * * * *) 1 4)
-a8 a a a a a a a
-@end lilypond
-
-On peut obliger une règle de ligature à ne s'appliquer qu'à des groupes
-dont la note la plus brève est d'une valeur précise :
-
-@lilypond[quote,verbatim,relative=2]
-\time 2/4
-% end 1/16 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 16 * *) 1 16)
-a16 a a a a a a a |
-a32 a a a a16 a a a a a |
-% end 1/32 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 32 * *) 1 16)
-a32 a a a a16 a a a a a |
+@lilypond[quote,relative=2,verbatim]
+ \time 5/16
+ c8^"beats" c16 c8 |
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+ c8^"(2+3)" c16 c8
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+ c8^"(3+2)" c16 c8
+@end lilypond
+
+@lilypond[quote, verbatim,relative=1]
+\new Staff <<
+ \time 7/8
+ \new Voice = one {
+ \relative c'' {
+ \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+ a8 a a a a a a
+ }
+ }
+ \new Voice = two {
+ \relative c' {
+ \voiceTwo
+ \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
+ f8 f f f f f f
+ }
+ }
+>>
@end lilypond
-On peut obliger une règle de ligature à ne s'appliquer que pour une
-métrique donnée :
-
-@lilypond[quote,verbatim,relative=2]
-\time 5/8
-% end beams of all durations in 5/8 time signature at the 2/8 moment
-#(override-auto-beam-setting '(end * * 5 8) 2 8)
-c8 c d d d
-\time 4/4
-e8 e f f e e d d
-\time 5/8
-c8 c d d d
-@end lilypond
Lorsque plusieurs voix cohabitent sur une même portée et que les règles
de ligature doivent s'appliquer sans distinction, il faut spécifier que
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context not specified - does not work correctly
-#(override-auto-beam-setting '(end * * 7 8) 3 8)
-#(override-auto-beam-setting '(end * * 7 8) 4 8)
-#(override-auto-beam-setting '(end * * 7 8) 5 8)
+% Context Voice specified - does not work correctly
+% Because of autogenerated voices, all beating will
+% be at beatLength (1 . 8)
+\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
-% Works correctly with context specified
-#(override-auto-beam-setting '(end * * 7 8) 3 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 4 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 5 8 'Staff)
+% Works correctly with context Staff specified
+\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@warning{Si une ligature se fait de manière inattendue, pensez à vérifer
-les règles automatiques dans le fichier @file{scm/@/auto@/-beam@/.scm}
-pour rechercher d'éventuels conflits, étant donné que les règles par
-défaut s'ajoutent à vos propres règles.}
-
-@funindex revert-auto-beam-setting
-
-Toute règle par défaut ou personnalisée conduisant à des ligatures
-indésirables doit être désactivée de la manière suivante :
-
-@example
-#(revert-auto-beam-setting
- '(extrémité
- ligature-numérateur ligature-dénominateur
- métrique-numérateur métrique-dénominateur)
- moment-numérateur moment-dénominateur [contexte])
-@end example
-
-@noindent
-@code{extrémité}, @code{ligature-numérateur},
-@code{ligature-dénominateur}, @code{métrique-numérateur},
-@code{métrique-dénominateur}, @code{moment-numérateur},
-@code{moment-dénominateur} et @code{contexte} étant les mêmes que plus
-haut. Il est même possible de désactiver des règles que l'on n'a pas
-explicitement créées : les règles par défaut, qui se trouvent dans le
-fichier @file{scm/@/auto@/-beam@/.scm}.
+@funindex revertBeamSettings
@lilypond[quote,verbatim,relative=2]
\time 4/4
-a16 a a a a a a a a a a a a a a a
-% undo a rule ending 1/16 beams in 4/4 time at 1/4 moment
-#(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
-a16 a a a a a a a a a a a a a a a
-@end lilypond
-
-La commande @code{revert-auto-beam-setting} requiert exactement les
-mêmes arguments que la règle d'origine. En d'autres termes, les étoiles
-ne seront pas prises en compte ici.
-
-@lilypond[quote,verbatim,relative=2]
-\time 1/4
-#(override-auto-beam-setting '(end 1 16 1 4) 1 8)
-a16 a a a
-#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
-a a a a
-#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
-a a a a
+\repeat unfold 16 {a16}
+% set default rule for (1 1 1 1) grouping
+\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+\repeat unfold 16 {a16}
+% revert the new rule
+\revertBeamSettings #'Score #'(4 . 4) #'end
+\repeat unfold 16 {a16}
@end lilypond
@snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{beam-grouping-in-7-8-time.ly}
+@cindex beams, subdividing
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{reverting-default-beam-endings.ly}
+{sub-dividing-beams.ly}
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{beam-endings-in-score-context.ly}
+@cindex measure groupings
+@cindex beats, grouping
+@cindex grouping beats
+@cindex measure sub-grouping
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
+@funindex autoBeamSettings
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{conducting-signs,-measure-grouping-signs.ly}
-@predefined
-@code{\autoBeamOff},
-@code{\autoBeamOn}.
-@endpredefined
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{beam-endings-in-score-context.ly}
@cindex ligature en fin de partition
@cindex ligature en fin de voix polyphonique
@funindex stemRightBeamCount
LilyPond peut déterminer automatiquement les sous-groupes à
-l'intérieur d'un groupement de notes, bien que le résultat ne soit pas
+l'intérieur d'un groupement de notes, bien que le résultat ne soit pas
toujours optimal. Les propriétés @code{stemLeftBeamCount} et
@code{stemRightBeamCount} permettent alors d'ajuster ce comportement.
Lorsque l'une ou l'autre de ces propriétés est définie, elle ne
Les numéros de mesure peuvent entrer en collision avec les crochets d'un
@rinternals{StaffGroup}. La propriété @code{padding} --- décalage
--- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
-positionnement.
+positionnement.
@node Vérification des limites et numéros de mesure
@end lilypond
Le fichier @file{scm/@/translation@/-functions@/.scm} comporte les
-définitions de @code{format-mark-numbers} (comportement par défaut),
+définitions de @code{format-mark-numbers} (comportement par défaut),
@code{format-mark-box-numbers},
@code{format-mark-letters} et @code{format-mark-box-letters}. Vous
pouvez vous en inspirer pour d'autres fonctions de formatage.
-@code{format-mark-barnumbers}, @code{format-mark-box-barnumbers} et
+@code{format-mark-barnumbers}, @code{format-mark-box-barnumbers} et
@code{format-mark-circle-barnumbers} permettent d'imprimer le numéro
de mesure au lieu des compteurs alphabétique ou numérique.
@funindex musicglyph
Un @code{\mark} peut contenir un glype musical tel que le signe
-@emph{segno}.
+@emph{segno}.
@lilypond[fragment,quote,ragged-right,verbatim,relative]
c1 \mark \markup { \musicglyph #"scripts.segno" }
\new Staff { c4 \bar "|:" \grace s16 d2. }
>>
@end lilypond
-
+
Seules des expressions musicales séquentielles peuvent être utilisées
pour des petites notes ; il n'est pas possible d'imbriquer ni de
juxtaposer des sections de petites notes, faute de quoi le traitement du
@item measurePosition
Le moment où l'on en est dans la mesure en cours. Cette quantité est
remise à@tie{}0 dès lors qu'on dépasse @code{measureLength} ; la variable
-@code{currentBarNumber} est alors incrémentée.
+@code{currentBarNumber} est alors incrémentée.
@item timing
Lorsqu'on lui assigne la valeur @emph{vrai}, les valeurs ci-dessus
@noindent
Comme le montre cet exemple, @code{ly:make-moment n m} construit une
-durée de n/m fois une ronde.
+durée de n/m fois une ronde.
Par conséquent, @code{ly:make-moment 1 8} correspond à une croche, et
@code{ly:make-moment 7 16} à la durée de sept doubles-croches.
Morceaux choisis :
@rlsr{Rhythms}.
-Références internes :
+Références internes :
@rinternals{Timing_translator},
@rinternals{Score}
#(set-time-signature 8 8 '(3 2 3))
\override Staff.TimeSignature #'stencil =
#(compound-time "3" "2" "3" "8")
- #(override-auto-beam-setting '(end 1 8 8 8) 3 8)
- #(override-auto-beam-setting '(end 1 8 8 8) 5 8)
-
c8 d e f4 d8 c bes
c4 g'8 e c f4.
\bar "||"
c2 ~ c
@end lilypond
-Dash pattern definitions for ties have the same structure as
+Dash pattern definitions for ties have the same structure as
dash pattern definitions for slurs.
For more information about complex dash patterns,
-see the snippets under @ref{Slurs}.
+see the snippets under @ref{Slurs}.
@predefined
@code{\tieUp},
@rglos{tie},
@rglos{laissez vibrer}.
-Notation Reference:
+Notation Reference:
@ref{Slurs},
@ref{Automatic note splitting}.
automatic beaming should be switched off with @code{\autoBeamOff}
and the beams indicated manually.}
-Beaming patterns that differ from the automatic defaults may be
-created, see @ref{Setting automatic beam behavior}.
+Beaming patterns that differ from the automatic defaults can be
+created; see @ref{Setting automatic beam behavior}.
@predefined
@cindex lyrics and beaming
@funindex autoBeaming
-@funindex autoBeamSettings
-@funindex (end * * * *)
-@funindex (begin * * * *)
+@funindex beamSettings
@funindex measureLength
@funindex beatLength
-@funindex beatGrouping
@funindex \time
@funindex time
@funindex \set
@funindex set
-There are two types of beaming rules: @emph{beam-grouping}
-rules and @emph{beam-ending} rules. Beam-grouping rules are the
-simplest, but are over-ridden by any beam-ending rules which apply.
+The placement of automatic beams is determined by the time signature.
+Three types of rules are used for determining the end of automatic
+beams: @emph{default} rules
+for the time signature, @emph{explicit} rules for the beam in the time
+signature, and the @emph{beatLength} for the time signature.
-The placement of automatic beams is determined by applying the
-following rules in order:
+The following rules, in order of priority, apply when determining
+the appearance of beams:
@itemize
@item if @code{\autoBeamOff} is in force do not beam, otherwise
-@item if a beam-ending rule applies use it to determine the valid
+@item if an explicit beam-ending rule is defined for the beam type
+in the time signature, use it to determine the valid
places where beams may end, otherwise
-@item if a valid (see below) beat-grouping rule applies use it to
-group notes with beams, otherwise
+@item if a default beam-ending rule is defined in the time signature,
+use it to group notes with beams, otherwise
@item use the value of @code{beatLength} to group notes with beams
@i{@strong{Modifying the grouping of beats}}
-If there are no beam-ending rules defined for the beam duration of a
-particular beam in the time signature in use, its beaming is
-controlled by three context properties: @code{measureLength},
-@code{beatLength} and @code{beatGrouping}. These properties may be
-set in the @code{Score}, @code{Staff} or @code{Voice} contexts to
-delimit their scope. The default values are set while processing
-@code{\time} commands, so any @code{\set} commands to modify their
-value must be placed after all @code{\time} commands.
-
-@warning{These three properties become effective for a particular
-beam @strong{only} if there are no beam-ending rules predefined for
-that beam's duration in the time signature in use, or if these
-beam-ending rules have all been reverted.}
-
-These determine the beaming as follows:
-
-Beams may begin anywhere (unless a beam is already active). Beams
-end at a time determined by the values of @code{beatGrouping} and
-@code{beatLength}, as follows:
-
-@itemize
-
-@item If @code{beatGrouping} and @code{beatLength} are consistent
-with @code{measureLength}, @code{beatGrouping} is used to determine
-the end points of beams.
-
-@item If @code{beatGrouping} and @code{beatLength} are inconsistent
-with @code{measureLength}, @code{beatLength} is used to determine
-the end points of beams.
-
-@end itemize
-
-By default the @code{measureLength} and @code{beatLength} are
+By default @code{beatLength} is
derived from the time signature set by the @code{\time} command.
-The @code{measureLength} is set to be exactly the same length as
-the measure length given by the time signature, and the
-@code{beatLength} is set to be the same as one over the denominator
+The @code{beatLength} is set to be one over the denominator
of the time signature.
-The default value of @code{beatGrouping} is taken from a table in
-@file{scm/@/music@/-functions@/.scm}. To find this, see
-@rlearning{Other sources of information}. It defines the beat
-grouping for 3/8, 4/8, 5/8, 8/8, and all the common compound time
-signatures.
-
-Both @code{measureLength} and @code{beatLength} are @i{moments},
-units of musical duration. A quantity of type @i{moment} is
+@code{beatLength} is a @i{moment},
+a unit of musical duration. A quantity of type @i{moment} is
created by the scheme function @code{ly:make-moment}. For more
information about this function, see @ref{Time administration}.
-@code{beatGrouping} is a list of integers giving the number of
-beats in each group.
-
-@snippets
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{specifying-context-with-beatgrouping.ly}
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{using-beatlength-and-beatgrouping.ly}
-
-@funindex subdivideBeams
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
-
-@cindex measure groupings
-@cindex beats, grouping
-@cindex grouping beats
-@cindex measure sub-grouping
-
-@funindex autoBeamSettings
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{conducting-signs,-measure-grouping-signs.ly}
+Autobeam and beam subdivide settings are stored in the
+@code{beamSettings} property. Default values of @code{beamSettings}
+are determined in @file{scm/beam-settings.scm}. Entries in
+@code{beamSettings} are indexed by time signature and
+rule type.
+Time signature should be a scheme pair , e.g. @code{#'(4 . 4)}.
-@strong{@i{Modifying the beam end points}}
+Rule type should be @code{#'end} for beam ending and @code{#'subdivide} for
+beam subdivision.
-Beam-ending rules are required when beams of different durations are
-to end at different points within the measure. For example, it may
-be desirable for eighth-note beams in 4/4 time to end only at the
-end of the measure or half-way through it, but for sixteenth-note
-beams to end at quarter note positions to avoid overly long beamed
-runs. The rules work as follows:
-
-Automatic beams can start on any note but can end at only a few
-positions within the measure, namely at positions specified by the
-properties in @code{autoBeamSettings}. These properties consist of
-a list of rules defining where beams can end. The default
-@code{autoBeamSettings} rules are defined in
-@file{scm/@/auto@/-beam@/.scm}. To find this file, see
-@rlearning{Other sources of information}.
-
-In order to add a rule to the list, use
+The ending and subdivision rules consist of a scheme alist
+(or list of pairs) that
+indicates the beam type and the grouping to be applied to that
+beam type.
@example
-#(override-auto-beam-setting
- '(beam-limit
- beam-numerator beam-denominator
- time-signature-numerator time-signature-denominator)
- moment-numerator moment-denominator [context])
+#'((beam-type1 . grouping-1)
+ (beam-type2 . grouping-2)
+ (beam-type3 . grouping-3))
@end example
-@noindent
-where
-
-@itemize
-
-@item @code{beam-limit} is the type of automatic beam limit
-defined. This can be either @code{begin} or @code{end} but
-only @code{end} is effective.
-
-@item @code{beam-numerator/beam-denominator} is the beam duration
-to which the rule is to apply. A beam is considered to have the
-duration of its shortest note. Set @code{beam-numerator} and
-@code{beam-denominator} to @code{'*'} to have this rule apply to beams
-of any duration.
-
-@item @code{time-signature-numerator/time-signature-denominator}
-specifies the time signature to which this rule should apply. If
-@code{time-signature-numerator} and @code{time-signature-denominator}
-are set to @code{'*'} this rule will apply in any time signature.
-
-@item @code{moment-numerator/moment-denominator} is the position
-in the bar at which the beam should end.
-
-@funindex score-override-auto-beam-setting
-@funindex override-auto-beam-setting
-
-@item @code{context} is optional, and it specifies the context at which
-the change should be made. The default is @code{'Voice}.
+Beam type is either a scheme pair indicating the duration
+of the beam, e.g. @code{(1 . 16)}, or @code{*} to indicate a
+default rule, which applies to all beams if no explicit rule is
+defined.
-@code{#(score-override-auto-beam-setting '(A B C D) E F)} is equivalent to
-@code{#(override-auto-beam-setting '(A B C D) E F 'Score)}.
+Grouping is a scheme list indicating the grouping to be applied to
+the beam. For default rules (where beam type is
+@code{*}, the grouping is in units of @code{beatLength}.
+For explicit rules, the grouping is in units of the beam type.
-@end itemize
-
-For example, if automatic beams should always end on the first quarter
-note, whatever the time signature or beam duration, use
-
-@lilypond[quote,verbatim,relative=2]
-a8 a a a a a a a
-#(override-auto-beam-setting '(end * * * *) 1 4)
-a8 a a a a a a a
-@end lilypond
-
-You can force the beam settings to take effect only on beams whose shortest
-note is a certain duration
-
-@lilypond[quote,verbatim,relative=2]
-\time 2/4
-% end 1/16 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 16 * *) 1 16)
-a16 a a a a a a a |
-a32 a a a a16 a a a a a |
-% end 1/32 beams for all time signatures at the 1/16 moment
-#(override-auto-beam-setting '(end 1 32 * *) 1 16)
-a32 a a a a16 a a a a a |
-@end lilypond
-
-You can force the beam settings to take effect only in certain time
-signatures
+Beam settings are changed with
+@code{\overrideBeamSettings} and @code{\revertBeamSettings}.
-@lilypond[quote,verbatim,relative=2]
-\time 5/8
-% end beams of all durations in 5/8 time signature at the 2/8 moment
-#(override-auto-beam-setting '(end * * 5 8) 2 8)
-c8 c d d d
-\time 4/4
-e8 e f f e e d d
-\time 5/8
-c8 c d d d
+@lilypond[quote,relative=2,verbatim]
+ \time 5/16
+ c8^"beats" c16 c8 |
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (2 3)))
+ c8^"(2+3)" c16 c8
+ \overrideBeamSettings #'Score #'(5 . 16) #'end #'((* . (3 2)))
+ c8^"(3+2)" c16 c8
+@end lilypond
+
+Beam setting changes can be limited to specific contexts. If no
+setting is included in a lower-level context, the setting of the
+enclosing context will apply.
+
+@lilypond[quote, verbatim,relative=1]
+\new Staff <<
+ \time 7/8
+ \new Voice = one {
+ \relative c'' {
+ \overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (2 3 2)))
+ a8 a a a a a a
+ }
+ }
+ \new Voice = two {
+ \relative c' {
+ \voiceTwo
+ \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (1 3 3)))
+ f8 f f f f f f
+ }
+ }
+>>
@end lilypond
When multiple voices are used the @code{Staff} context must be
@lilypond[quote,verbatim,relative=2]
\time 7/8
% rhythm 3-1-1-2
-% Context not specified - does not work correctly
-#(override-auto-beam-setting '(end * * 7 8) 3 8)
-#(override-auto-beam-setting '(end * * 7 8) 4 8)
-#(override-auto-beam-setting '(end * * 7 8) 5 8)
+% Context Voice specified -- does not work correctly
+% Because of autogenerated voices, all beating will
+% be at beatLength (1 . 8)
+\overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
-% Works correctly with context specified
-#(override-auto-beam-setting '(end * * 7 8) 3 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 4 8 'Staff)
-#(override-auto-beam-setting '(end * * 7 8) 5 8 'Staff)
+% Works correctly with context Staff specified
+\overrideBeamSettings #'Staff #'(7 . 8) #'end #'((* . (3 1 1 2)))
<< {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
@end lilypond
-@warning{If any unexpected beam behavior occurs, check the default
-automatic beam settings in @file{scm/@/auto@/-beam@/.scm} for
-possible interference, because the beam endings defined there will
-still apply in addition to your own.}
-
-@funindex revert-auto-beam-setting
+@funindex revertBeamSettings
-Any unwanted or conflicting default endings must be reverted for
-your time signature(s). Existing default or user-defined
-beam-ending rules are removed by using
+Beam settings can be reverted to get back to default behavior. This
+is accomplished by using @code{\revertBeamSettings}. The arguments
+are the same as for @code{\overrideBeamSettings}, except no value
+for @var{grouping} is given:
@example
-#(revert-auto-beam-setting
- '(beam-limit
- beam-numerator beam-denominator
- time-signature-numerator time-signature-denominator)
- moment-numerator moment-denominator [context])
+\revertBeamSettings context time-signature rule-type
@end example
-@noindent
-@code{beam-limit}, @code{beam-numerator}, @code{beam-denominator},
-@code{time-signature-numerator}, @code{time-signature-denominator},
-@code{moment-numerator}, @code{moment-denominator} and @code{context}
-are the same as above.
@lilypond[quote,verbatim,relative=2]
\time 4/4
-a16 a a a a a a a a a a a a a a a
-% undo a rule ending 1/16 beams in 4/4 time at 1/4 moment
-#(revert-auto-beam-setting '(end 1 16 4 4) 1 4)
-a16 a a a a a a a a a a a a a a a
-@end lilypond
-
-The rule in a @code{revert-auto-beam-setting} statement must exactly
-match the original rule. That is, no wildcard expansion is taken into
-account.
-
-@lilypond[quote,verbatim,relative=2]
-\time 1/4
-#(override-auto-beam-setting '(end 1 16 1 4) 1 8)
-a16 a a a
-#(revert-auto-beam-setting '(end 1 16 * *) 1 8) % this won't revert it!
-a a a a
-#(revert-auto-beam-setting '(end 1 16 1 4) 1 8) % this will
-a a a a
+\repeat unfold 16 {a16}
+% set default rule for (1 1 1 1) grouping
+\overrideBeamSettings #'Score #'(4 . 4) #'end #'((* . (1 1 1 1)))
+\repeat unfold 16 {a16}
+% revert the new rule
+\revertBeamSettings #'Score #'(4 . 4) #'end
+\repeat unfold 16 {a16}
@end lilypond
@snippets
+@cindex beams, subdividing
+
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{beam-grouping-in-7-8-time.ly}
+{sub-dividing-beams.ly}
+
+@cindex measure groupings
+@cindex beats, grouping
+@cindex grouping beats
+@cindex measure sub-grouping
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{reverting-default-beam-endings.ly}
+{conducting-signs,-measure-grouping-signs.ly}
@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
{beam-endings-in-score-context.ly}
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
-
-@predefined
-@code{\autoBeamOff},
-@code{\autoBeamOn}.
-@endpredefined
-
-
@cindex beam, last in score
@cindex beam, last in polyphonic voice
@lilypond[quote,relative=1,verbatim]
f1 \bar "'"
@end lilypond
-However, as such ticks are typically used in Gregorian chant, it is preferable
-to use @code{\divisioMinima} there instead, described in the section
+However, as such ticks are typically used in Gregorian chant, it is preferable
+to use @code{\divisioMinima} there instead, described in the section
@ref{Divisiones} in Gregorian chant.
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
- lsrtags = "rhythms"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
En un compás sencillo como 2/2 ó 4/4, las corcheas se barran de forma
automatiques, voici comment obtenir des ligatures basées sur la valeur
d'une noire.
+"
+ doctitlefr = "Ligature automatique deux par deux, aussi bien en 4/4 qu'en 2/2"
+
+ lsrtags = "rhythms"
+
+%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
+ texidoces = "
+En un compás sencillo como 2/2 ó 4/4, las corcheas se barran de forma
+predeterminada como dos grupos de cuatro.
+
+Utilizando un macro que seobreescribe el comportamiento automático del
+barrado, este fragmento de código cambia el barrado a pulsos de negra.
+
+"
+ doctitlees = "Barras automáticas de dos en dos en los compases de 4/4 o de 2/2"
+
+%% Translation of GIT committish: 1154b407d42f303a024598296ad36ab6c93e2b5a
+ texidocfr = "
+Dans une métrique simple comme 4/4 ou 2/2, les croches sont ligaturées
+par défaut en deux groupes de quatre.
+
+En utilisant une macro qui modifie le comportement des ligatures
+automatiques, voici comment obtenir des ligatures basées sur la valeur
+d'une noire.
+
"
doctitlefr = "Ligature automatique deux par deux, aussi bien en 4/4 qu'en 2/2"
default as two sets of four.
Using a macro which overrides the autobeaming behavior, this snippet
-changes the beaming to quarter note beats.
+changes the beaming to quarter note beats.
"
doctitle = "Automatic beams two per two in 4/4 or 2/2 time signature"
% macro for beamed two per two in 2/2 and 4/4 time signature
qBeam = {
- #(override-auto-beam-setting '(end 1 8 * *) 1 4 'Staff)
- #(override-auto-beam-setting '(end 1 8 * *) 2 4 'Staff)
- #(override-auto-beam-setting '(end 1 8 * *) 3 4 'Staff)
-}
+ \overrideBeamSettings #'Staff #'(4 . 4) #'end #'((* . (1 1 1 1)))
+ \overrideBeamSettings #'Staff #'(2 . 2) #'end
+ #'((* . (1 1))
+ ((1 . 8) . (2 2 2 2)))
+} % begin verbatim
+
\score {
<<
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
%% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
texidoc = "
Beam-ending rules specified in the @code{Score} context apply to all
staves, but can be modified at both @code{Staff} and @code{Voice}
-levels:
+levels:
"
doctitle = "Beam endings in Score context"
} % begin verbatim
+
\relative c'' {
\time 5/4
% Set default beaming for all staves
- #(score-override-auto-beam-setting '(end * * 5 4) 3 8)
- #(score-override-auto-beam-setting '(end * * 5 4) 7 8)
+ \overrideBeamSettings #'Score #'(5 . 4) #'end
+ #'(((1 . 8) . (3 4 3))
+ ((1 . 16) . (6 8 6))
+ ((1 . 32) . (12 16 12)))
<<
\new Staff {
c8 c c c c c c c c c
}
\new Staff {
% Modify beaming for just this staff
- #(override-auto-beam-setting '(end * * 5 4) 6 8 'Staff)
- #(revert-auto-beam-setting '(end * * 5 4) 7 8 'Staff)
+ \overrideBeamSettings #'Staff #'(5 . 4) #'end
+ #'((* . (3 2)))
c8 c c c c c c c c c
}
\new Staff {
% Modify beaming for this voice only
\new Voice {
\voiceTwo
- #(override-auto-beam-setting '(end * * 5 4) 6 8)
- #(revert-auto-beam-setting '(end * * 5 4) 7 8)
+ \overrideBeamSettings #'Voice #'(5 . 4) #'end
+ #'((* . (3 2)))
a8 a a a a a a a a a
}
>>
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
%% Translation of GIT committish: bee31293920d834cd3698f00ddcc2402c3164619
There are no default automatic beam groupings specified for 7/8 time,
so if automatic beams are required the grouping must be specified. For
example, to group all beams 2-3-2 in 7/8 time, specify beam endings at
-2/8 and 5/8:
+2/8 and 5/8:
"
doctitle = "Beam grouping in 7/8 time"
} % begin verbatim
+
\relative c'' {
\time 7/8
% rhythm 2-3-2
a8 a a a a a a
- #(override-auto-beam-setting '(end * * 7 8) 2 8)
- #(override-auto-beam-setting '(end * * 7 8) 5 8)
+ \overrideBeamSettings #'Score #'(7 . 8) #'end
+ #'((* . (2 3 2)))
a8 a a a a a a
}
doctitlees = "Cambios de acorde de posiciones de trastes"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Bunddiagramme können definiert werden, sodass sie nur angezeigt werden,
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
- lsrtags = "rhythms"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
doctitlees = "Indicaciones de compases compuestos"
texidoces = "
"
doctitlefr = "Métrique décomposée"
+ lsrtags = "rhythms"
+
texidoc = "
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
and play, by explicitly printing the compound time signatures and
adapting the automatic beaming behavior. (Graphic measure grouping
indications can also be added; see the appropriate snippet in this
-database.)
+database.)
"
doctitle = "Compound time signatures"
} % begin verbatim
+
#(define ((compound-time one two num) grob)
(grob-interpret-markup grob
(markup #:override '(baseline-skip . 0) #:number
\relative c' {
\override Staff.TimeSignature #'stencil = #(compound-time "2" "3" "8")
\time 5/8
- #(override-auto-beam-setting '(end 1 8 5 8) 1 4)
+ \overrideBeamSettings #'Staff #'(5 . 8) #'end
+ #'((* . (2 3)))
c8 d e fis gis
c8 fis, gis e d
c8 d e4 gis8
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
- lsrtags = "rhythms"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
Las opciones para agrupar los pulsos de un compás están a nuestra
"
doctitlefr = "Signes de direction, signes de sous-groupe"
+ lsrtags = "rhythms"
+
texidoc = "
-Options to group beats within a bar are available through the Scheme
-function @code{set-time-signature}, which takes three arguments: the
+Beat grouping within a bar is controlled by the default grouping
+established in @code{beamSettings}. This grouping can be established
+by the use of @code{\\overrideBeamSettings}. Alternatively, the
+Scheme function @code{set-time-signature} can be used to both
+set the time signature and establish the default grouping rule.
+@code{set-time-signature}, takes three arguments: the
number of beats, the beat length, and the internal grouping of beats in
-the measure. If the @code{Measure_grouping_engraver} is included, the
-function will also create @code{MeasureGrouping} signs. Such signs
-ease reading rhythmically complex modern music. In the example, the
-9/8 measure is subdivided in 2, 2, 2 and 3. This is passed to
-@code{set-time-signature} as the third argument: @code{'(2 2 2 3)}:
+the measure. If the @code{Measure_grouping_engraver} is included
+in one of the display contexts, measure grouping signs will be
+created. Such signs ease reading rhythmically complex modern music.
+In the example, the 9/8 measure is grouped in two different
+patterns using the two different methods, while the 5/8 measure
+is grouped according to the default setting in
+@file{scm/beam-settings.scm}:
"
doctitle = "Conducting signs, measure grouping signs"
} % begin verbatim
+
\score {
\relative c'' {
- #(set-time-signature 9 8 '(2 2 2 3))
- #(revert-auto-beam-setting '(end * * 9 8) 3 8)
- #(override-auto-beam-setting '(end 1 8 9 8) 1 4)
- #(override-auto-beam-setting '(end 1 8 9 8) 2 4)
- #(override-auto-beam-setting '(end 1 8 9 8) 3 4)
+ \time 9/8
+ \overrideBeamSettings #'Score #'(9 . 8) #'end #'((* . (2 2 2 3)))
+ g8 g d d g g a( bes g) |
+ #(set-time-signature 9 8 '(4 5))
g8 g d d g g a( bes g) |
- #(set-time-signature 5 8 '(3 2))
- a4. g4
+ \time 5/8
+ a4. g4 |
}
\layout {
\context {
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
- lsrtags = "rhythms"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
Los patrones de barrado se pueden alterar con la propiedad
"
doctitlefr = "Regroupement selon la pulsation"
+ lsrtags = "rhythms"
+
texidoc = "
-Beaming patterns may be altered with the @code{beatGrouping} property:
+Beaming patterns may be altered with the @code{beatGrouping} property:
"
doctitle = "Grouping beats"
} % begin verbatim
+
\relative c'' {
\time 5/16
- #(override-auto-beam-setting '(end * * 5 16) 5 16)
- \set beatGrouping = #'(2 3)
+ \overrideBeamSettings #'Score #'(5 . 16) #'end
+ #'((* . (2 3)))
c8^"(2+3)" c16 c8
- \set beatGrouping = #'(3 2)
+ \overrideBeamSettings #'Score #'(5 . 16) #'end
+ #'((* . (3 2)))
c8^"(3+2)" c16 c8
}
% generated from Documentation/snippets/new
% This file is in the public domain.
%% Note: this file works from version 2.13.1
-\version "2.13.1"
+\version "2.13.4"
\header {
%% Translation of GIT committish: da7ce7d651c3a0d1bfed695f6e952975937a1c79
doctitlees = "Hacer ligaduras de expresión con estructura compleja de discontinuidad"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
Legatobögen können mit einem komplizierten Strichelmuster
% generated from Documentation/snippets/new
% This file is in the public domain.
%% Note: this file works from version 2.13.1
-\version "2.13.1"
+\version "2.13.4"
\header {
%% Translation of GIT committish: da7ce7d651c3a0d1bfed695f6e952975937a1c79
doctitlees = "Números de agrupación especial distintos a los predeterminados"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
texidocde = "
LilyPond stellt auch Formatierungsfunktionen zur Verfügung, mit denen
% generated from Documentation/snippets/new
% This file is in the public domain.
%% Note: this file works from version 2.13.0
-\version "2.13.1"
+\version "2.13.4"
\header {
%% Translation of GIT committish: da7ce7d651c3a0d1bfed695f6e952975937a1c79
exátona:
"
-
%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
doctitlede = "Untypische Tonarten"
texidocde = "
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
-%% Translation of GIT committish: bee31293920d834cd3698f00ddcc2402c3164619
- texidocfr = "
-Pour obtenir des ligatures en groupes de @code{3-4-3-2} croches, dans
-une mesure à 12/8, il faudra préalablement annuler les réglages par
-défaut relatifs à 12/8, puis ajouter nos propres règles :
-
-"
- doctitlefr = "Annulation des règles de ligature par défaut"
-
- lsrtags = "rhythms"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
Para tipografiar las barras agrupadas en la forma @code{3-4-3-2}
doctitlede = "Standard-Balkenwerte rückgängig machen"
+%% Translation of GIT committish: bee31293920d834cd3698f00ddcc2402c3164619
+ texidocfr = "
+Pour obtenir des ligatures en groupes de @code{3-4-3-2} croches, dans
+une mesure à 12/8, il faudra préalablement annuler les réglages par
+défaut relatifs à 12/8, puis ajouter nos propres règles :
+
+"
+ doctitlefr = "Annulation des règles de ligature par défaut"
+ lsrtags = "rhythms"
texidoc = "
-To typeset beams grouped @code{3-4-3-2} in 12/8 it is necessary first
+To typeset beams grouped @code{3-4-3-2} in 12/8 it is no longer
+necessary first
to override the default beam endings in 12/8, and then to set up the
-new beaming endings:
+new beaming endings:
"
doctitle = "Reverting default beam endings"
} % begin verbatim
+
\relative c'' {
\time 12/8
% Default beaming
a8 a a a a a a a a a a a
- % Revert default values in scm/auto-beam.scm for 12/8 time
- #(revert-auto-beam-setting '(end * * 12 8) 3 8)
- #(revert-auto-beam-setting '(end * * 12 8) 3 4)
- #(revert-auto-beam-setting '(end * * 12 8) 9 8)
- a8 a a a a a a a a a a a
-
% Set new values for beam endings
- #(override-auto-beam-setting '(end * * 12 8) 3 8)
- #(override-auto-beam-setting '(end * * 12 8) 7 8)
- #(override-auto-beam-setting '(end * * 12 8) 10 8)
+ \overrideBeamSettings #'Score #'(12 . 8) #'end
+ #'((* . (3 4 3 2)))
a8 a a a a a a a a a a a
+
}
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.1
+\version "2.13.4"
\header {
- lsrtags = "rhythms, tweaks-and-overrides"
-
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
texidoces = "
Mediante la especificación del contexto, el efecto de
@code{\\set} destinée à en modifier les valeurs doit se placer après la
commande @code{\\time} :
+"
+ doctitlefr = "Spécification du contexte auquel s'appliquera beatGrouping"
+
+ lsrtags = "rhythms, tweaks-and-overrides"
+
+%% Translation of GIT committish: 5c26e815f2ed54e6c4d022bac10dcc87a9916a29
+ texidoces = "
+Mediante la especificación del contexto, el efecto de
+@code{beatGrouping} puede limitarse al contexto especificado, y
+sobreescribirse los valores establecidos en contextos de niveles más
+altos:
+
+"
+ doctitlees = "Especificar el contexto con beatGrouping"
+
+%% Translation of GIT committish: 0364058d18eb91836302a567c18289209d6e9706
+ texidocde = "
+Wenn der Kontext angegeben wird, kann die Auswirkung von @code{beatGrouping}
+auf den angegebenen Kontext beschränkt werden und die Werte, die in Kontexten
+auf höhrer Ebene angegeben wurden, können verändert werden. Der
+@code{\\set}-Befehl muss @emph{nach} den @code{\\time}-Befehl geschrieben
+werden:
+"
+ doctitlede = "Den Kontext für beatGrouping angeben"
+
+
+%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+ texidocfr = "
+Le fait de spécifier un contexte à @code{beatGrouping} permet d'en
+limiter les effets. Par voie de conséquence, il sera possible
+d'outrepasser les règles définies à un niveau supérieur. La commande
+@code{\set} destinée à en modifier les valeurs doit se placer après la
+commande @code{\time} :
+
"
doctitlefr = "Spécification du contexte auquel s'appliquera beatGrouping"
doctitle = "Specifying context with beatGrouping"
} % begin verbatim
-\score {
- \new Staff <<
- \time 7/8
- \new Voice {
- \relative c'' {
- \set Staff.beatGrouping = #'(2 3 2)
- a8 a a a a a a
- }
- }
- \new Voice {
- \relative c' {
- \voiceTwo
- \set beatGrouping = #'(1 3 3)
- f8 f f f f f f
- }
- }
- >>
-}
+
+\markup{This snippet has been deprecated and will be removed in 2.14}
-%% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
+%% Do not edit this file; it is auto-generated from input/new
%% This file is in the public domain.
-\version "2.13.1"
+%% Note: this file works from version 2.13.4
+\version "2.13.4"
\header {
+%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
+ texidoces = "
+La propiedad @code{measureLength} determina dónde se deben insertar
+líneas divisorias y, con @code{beatLength} y @code{beatGrouping}, cómo
+se deben generar las barras autoomáticas para las duraciones de barra
+y compases para los que no hay ninguna regla definida para los finales
+de barra. Este ejemplo muestra distintas dormas de controlar el
+barrado mediante el establecimiento de estas propiedades. Las
+explicaciones están en forma de comentarios dentro del código.
+
+"
+ doctitlees = "Utilización de beatLength y beatGrouping"
+
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+ texidocde = "
+Die Eigenschaft @code{measureLength} bestimmt, wo Taktstriche eingefügt
+werden sollen und, zusammen mit @code{beatLength} und
+@code{beatGrouping}, wie automtische Balken für Notenlängen und
+Taktarten, für die keine definierten Regeln gefunden werden, gesetzt
+werden sollen. Dieses Beispiel zeigt verschiedene Möglichkeiten,
+die Balken zu kontrollieren, indem man diese Eigenschaften
+beeinflusst. Die Erklärungen werden als Kommentare im Quellcode
+gegeben.
+"
+ doctitlede = "beatLength und beatGrouping benutzen"
+
+%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+ texidocfr = "
+La propriété @code{measureLength} détermine la pulsation et, combinée à
+@code{beatLength} et @code{beatGrouping}, comment générer les ligatures
+automatiques selon les durées et la métrique lorsqu'aucune règle n'a été
+définie. L'exemple commenté qui suit indique différentes façons de
+contrôler les ligatures à l'aide de ces propriétés.
+
+"
+ doctitlefr = "Utilisation conjointe de beatLength et beatGrouping"
+
lsrtags = "rhythms, tweaks-and-overrides"
%% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@code{beatLength} et @code{beatGrouping}, comment générer les ligatures
automatiques selon les durées et la métrique lorsqu'aucune règle n'a été
définie. L'exemple commenté qui suit indique différentes façons de
-contrôler les ligatures à l'aide de ces propriétés.
+contrôler les ligatures à l'aide de ces propriétés.
"
doctitlefr = "Utilisation conjointe de beatLength et beatGrouping"
inserted and, with @code{beatLength} and @code{beatGrouping}, how
automatic beams should be generated for beam durations and time
signatures for which no beam-ending rules are defined. This example
-shows several ways of controlling beaming by setting these properties.
+shows several ways of controlling beaming by setting these properties.
The explanations are shown as comments in the code.
"
doctitle = "Using beatLength and beatGrouping"
} % begin verbatim
-\relative c'' {
- \time 3/4
- % The default in 3/4 time is to beam in three groups
- % each of a quarter note length
- a16 a a a a a a a a a a a
-
- \time 12/16
- % No auto-beaming is defined for 12/16
- a16 a a a a a a a a a a a
-
- \time 3/4
- % Change time signature symbol, but retain underlying 3/4 beaming
- \set Score.timeSignatureFraction = #'(12 . 16)
- a16 a a a a a a a a a a a
-
- % The 3/4 time default grouping of (1 1 1) and beatLength of 1/8
- % are not consistent with a measureLength of 3/4, so the beams
- % are grouped at beatLength intervals
- \set Score.beatLength = #(ly:make-moment 1 8)
- a16 a a a a a a a a a a a
-
- % Specify beams in groups of (3 3 2 3) 1/16th notes
- % 3+3+2+3=11, and 11*1/16<>3/4, so beatGrouping does not apply,
- % and beams are grouped at beatLength (1/16) intervals
- \set Score.beatLength = #(ly:make-moment 1 16)
- \set Score.beatGrouping = #'(3 3 2 3)
- a16 a a a a a a a a a a a
-
- % Specify beams in groups of (3 4 2 3) 1/16th notes
- % 3+4+2+3=12, and 12*1/16=3/4, so beatGrouping applies
- \set Score.beatLength = #(ly:make-moment 1 16)
- \set Score.beatGrouping = #'(3 4 2 3)
- a16 a a a a a a a a a a a
-}
+\markup{This snippet has been deprecated and will be removed in 2.14}
e,1 | % m. 4
%% new section starts here in A minor
- #(revert-auto-beam-setting '(end 1 12 4 4) 1 4)
- #(revert-auto-beam-setting '(end 1 12 4 4) 3 4)
+ \overrideBeamSettings #'Score #'(4 . 4) #'end
+ #'((* . (1 1 1 1))
+ ((1 . 12) . (3 3 3 3)))
\once \override TextScript #'staff-padding = #1.7
\times 2/3 { a8\p^\andantino e' a c a e a, e' a c a e } | % m. 5
sys.stdout.write (r"""
<<
\override Score.BarNumber #'padding = #2.5
- #(override-auto-beam-setting '(end * * * *) 1 4)
+ %#(override-auto-beam-setting '(end * * * *) 1 4)
\set Score.skipBars = ##t
\context StaffGroup <<
\override StaffGroup.Stem #'direction = #UP
+++ /dev/null
-\version "2.12.0"
-\header {
-
- texidoc = "Autobeaming will break beams according to beatGrouping
-if the total length of the beat groups is equal to measureLength.
-Otherwise, it will break beams according to beatLength."
-}
-
-{
- \time 12/16
-
- % default beatLength is 1/16; beatGrouping for this time is '()
- b16 b b b b b b b b b b b % beatlength is used to breatk these beams
- % use beatGrouping to get 1/8 groups
- \set Timing.beatGrouping = #'(2 2 2 2 2 2) % 6*2 = 12 so beatGrouping applies
- b16 b b b b b b b b b b b % beam groups are 1/8
- % use beatLength to get 1/8 groups -- beatGrouping no longer applies
- \set Score.beatLength = #(ly:make-moment 2 16 ) % 12*2/16 = 24/16
- % bad beatGrouping; use
- % beatLength (1/8 notes)
- b16 b b b b b b b b b b b
- % make custom beatGrouping
- \set Timing.beatGrouping = #'(3 1 2) % 6*2/16 = 12/16
- b16 b b b b b b b b b b b
- % change beatLength
- \set Score.beatLength = #(ly:make-moment 3 16 ) % 6*3/16 = 18/16; use beatLength
- b16 b b b b b b b b b b b
- \set Score.beatLength = #(ly:make-moment 4 16 ) % 6*4/16 = 24/16; use beatLength
- b16 b b b b b b b b b b b
-}
\header {
- texidoc = "Beaming patterns obey the @code{beatGrouping} property. "
+ texidoc = "Default beaming patterns can be set for the current time
+signature by @code{\\setBeatGrouping}. "
}
\layout {
ragged-right = ##t
}
-\version "2.12.0"
+\version "2.13.4"
\relative c'' {
\time 5/16
- \set beatGrouping = #'(2 3)
+ \setBeatGrouping #'(2 3)
c8[^"(2+3)" c16 c8]
- \set beatGrouping = #'(3 2)
+ \setBeatGrouping #'(3 2)
c8[^"(3+2)" c16 c8]
}
/* read */
"autoBeaming "
- "autoBeamSettings "
+ "beamSettings "
"beatLength "
"subdivideBeams ",
--- /dev/null
+/*
+ beam-setting-scheme.cc -- Retrieving beam settings
+
+ source file of the GNU LilyPond music typesetter
+
+ Copyright (c) 2009 Carl Sorensen <c_sorensen@byu.edu>
+*/
+
+#include "beam-settings.hh"
+#include "context.hh"
+#include "guile-compatibility.hh"
+
+LY_DEFINE (ly_grouping_rules, "ly:grouping-rules",
+ 3, 0, 0, (SCM settings, SCM time_signature, SCM rule_type),
+ "Return grouping rules for @var{time-signature} and"
+ " @var{rule-type} from @var{settings}.")
+{
+ LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1);
+ LY_ASSERT_TYPE (scm_is_pair, time_signature, 2);
+ LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3);
+
+ SCM grouping_rules = SCM_EOL;
+ if (scm_is_pair (settings))
+ grouping_rules =
+ ly_assoc_get (scm_list_2 (time_signature, rule_type),
+ settings,
+ SCM_EOL);
+ return grouping_rules;
+}
+
+LY_DEFINE (ly_beam_grouping, "ly:beam-grouping",
+ 4, 0, 0, (SCM settings, SCM time_signature, SCM rule_type,
+ SCM beam_type),
+ "Return grouping for beams of @var{beam-type} in"
+ " @var{time-signature} for"
+ " @var{rule-type} from @var{settings}.")
+{
+ LY_ASSERT_TYPE (ly_cheap_is_list, settings, 1);
+ LY_ASSERT_TYPE (scm_is_pair, time_signature, 2);
+ LY_ASSERT_TYPE (ly_is_symbol, rule_type, 3);
+ SCM_ASSERT_TYPE (scm_is_symbol(beam_type) || scm_is_pair(beam_type),
+ beam_type, SCM_ARG4, __FUNCTION__, "symbol or pair");
+ SCM beam_grouping =
+ ly_assoc_get (beam_type,
+ ly_grouping_rules (settings,time_signature,rule_type),
+ SCM_EOL);
+ return beam_grouping;
+}
+
+LY_DEFINE (ly_beat_grouping, "ly:beat-grouping",
+ 1, 0, 0, (SCM context),
+ "Return default beat grouping currently active in @var{context}.")
+{
+ LY_ASSERT_SMOB (Context, context, 1);
+ Context *c = unsmob_context (context);
+ SCM time_signature =
+ c->get_property ("timeSignatureFraction");
+ SCM settings =
+ c->get_property("beamSettings");
+ SCM beat_grouping =
+ ly_beam_grouping (settings,
+ time_signature,
+ ly_symbol2scm ("end"),
+ ly_symbol2scm ("*"));
+ return beat_grouping;
+}
+
(c) 1999--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
-#include "beaming-pattern.hh"
#include "context.hh"
+#include "beam-settings.hh"
+#include "beaming-pattern.hh"
/*
Represents a stem belonging to a beam. Sometimes (for example, if the stem
{
if (start_moment_.grace_part_)
{
- start_moment_.main_part_ = start_moment_.grace_part_;
+ start_moment_.main_part_ = start_moment_.grace_part_;
start_moment_.grace_part_ = 0;
}
}
void
Beaming_pattern::find_rhythmic_importance (Beaming_options const &options)
{
- Moment measure_pos (0);
+ Moment measure_pos (0);
SCM grouping = options.grouping_;
vsize i = 0;
void
Beaming_options::from_context (Context *context)
{
- grouping_ = context->get_property ("beatGrouping");
+ grouping_ = ly_beat_grouping (context->self_scm ());
subdivide_beams_ = to_boolean (context->get_property ("subdivideBeams"));
beat_length_ = robust_scm2moment (context->get_property ("beatLength"), Moment (1, 4));
measure_length_ = robust_scm2moment (context->get_property ("measureLength"), Moment (4, 4));
--- /dev/null
+/*
+ beam-settings.hh -- Prototypes for retrieving beam settings
+
+ source file of the GNU LilyPond music typesetter
+
+ Copyright (c) 2009 Carl Sorensen <c_sorensen@byu.edu>
+*/
+
+#ifndef BEAM_SETTINGS_HH
+#define BEAM_SETTINGS_HH
+
+#include "lily-guile.hh"
+
+SCM ly_grouping_rules (SCM settings, SCM time_sig, SCM rule_type);
+SCM ly_beam_grouping (SCM settings, SCM time_sig, SCM rule_type,
+ SCM beam_type);
+SCM ly_beat_grouping (SCM context);
+#endif // BEAM_SETTINGS_HH
#include "global-context.hh"
#include "engraver.hh"
#include "spanner.hh"
+#include "beam-settings.hh"
#include "translator.icc"
if (now.grace_part_)
return;
- SCM grouping = get_property ("beatGrouping");
+ SCM settings = get_property ("beamSettings");
+ SCM grouping = SCM_EOL;
+ if (scm_is_pair (settings))
+ {
+ SCM time_signature_fraction = get_property ("timeSignatureFraction");
+ grouping = ly_beam_grouping (settings,
+ time_signature_fraction,
+ ly_symbol2scm ("end"),
+ ly_symbol2scm ("*"));
+ }
if (scm_is_pair (grouping))
{
Moment *measpos = unsmob_moment (get_property ("measurePosition"));
programming_error ("last grouping not finished yet");
continue;
}
+ if (grouplen > 1)
+ {
+ grouping_ = make_spanner ("MeasureGrouping", SCM_EOL);
+ grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
- grouping_ = make_spanner ("MeasureGrouping", SCM_EOL);
- grouping_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
-
- stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * beat_length;
- get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_));
+ stop_grouping_mom_ = now.main_part_ + Rational (grouplen - 1) * beat_length;
+ get_global_context ()->add_moment_to_process (Moment (stop_grouping_mom_));
- if (grouplen == 3)
- grouping_->set_property ("style", ly_symbol2scm ("triangle"));
- else
- grouping_->set_property ("style", ly_symbol2scm ("bracket"));
+ if (grouplen == 3)
+ grouping_->set_property ("style", ly_symbol2scm ("triangle"));
+ else
+ grouping_->set_property ("style", ly_symbol2scm ("bracket"));
- break;
+ break;
+ }
}
}
}
"beatLength "
"currentMusicalColumn "
"measurePosition "
- "beatGrouping ",
+ "beamSettings ",
/* write */
""
% Sets the autobeamer to span quarter notes only. Use for fast music.
% TODO: Needs more tweaking
quarterBeaming = {
- #(override-auto-beam-setting '(end * * * *) 1 4 'Staff)
- #(override-auto-beam-setting '(end * * * *) 1 2 'Staff)
- #(override-auto-beam-setting '(end * * * *) 3 4 'Staff)
- #(override-auto-beam-setting '(end * * * *) 4 4 'Staff)
- #(revert-auto-beam-setting '(end 1 32 2 4 ) 1 8 'Staff)
- #(revert-auto-beam-setting '(end 1 32 2 4 ) 3 8 'Staff)
- #(revert-auto-beam-setting '(end 1 32 4 4 ) 1 8 'Staff)
- #(revert-auto-beam-setting '(end 1 32 4 4 ) 3 8 'Staff)
- #(revert-auto-beam-setting '(end 1 32 4 4 ) 5 8 'Staff)
- #(revert-auto-beam-setting '(end 1 32 4 4 ) 7 8 'Staff)
+ \overrideBeamSettings #'Staff #'(4 . 4) #'end
+ #'((* . (1 1 1 1)) ; could omit this and use beatLength
+ ((1 . 32) . (4 4 4 4 4 4 4 4)))
+ \overrideBeamSettings #'Staff #'(2 . 4) #'end
+ #'((* . (1 1))
+ ((1 . 32) . (4 4 4 4)))
}
halfBeaming = {
- #(override-auto-beam-setting '(end * * 2 2) 1 2 'Staff)
- #(override-auto-beam-setting '(end * * 2 2) 2 2 'Staff)
+ \overrideBeamSettings #'Staff #'(2 . 2) #'end
+ #'((* . (1 1))) % could omit this and use beatLength
}
% Reels are in allabreve time with half note beaming.
reelTime = {
\description "A context for displaying fret diagrams."
\consists "Fretboard_engraver"
- \consists "Rest_swallow_translator"
- \consists "Output_property_engraver"
+ \consists "Rest_swallow_translator"
+ \consists "Output_property_engraver"
\consists "Skip_event_swallow_translator"
\consists "Hara_kiri_engraver"
\consists "Separating_line_group_engraver"
\context {
\type "Engraver_group"
\name "Staff"
-
- \consists "Output_property_engraver"
+
+ \consists "Output_property_engraver"
\consists "Bar_engraver"
%% Bar_engraver must be first so default bars aren't overwritten
%% with empty ones.
-
+
\consists "Font_size_engraver"
- \consists "Separating_line_group_engraver"
+ \consists "Separating_line_group_engraver"
\consists "Dot_column_engraver"
\consists "Staff_collecting_engraver"
\consists "Clef_engraver"
\consists "Key_engraver"
\consists "Time_signature_engraver"
- \consists "Ledger_line_engraver"
+ \consists "Ledger_line_engraver"
\consists "Staff_symbol_engraver"
\consists "Collision_engraver"
\consists "Grob_pq_engraver"
createSpacing = ##t
ignoreFiguredBassRest = ##t
\override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4)
-
- %% explicitly set instrument, so we don't get
+
+ %% explicitly set instrument, so we don't get
%% weird effects when doing instrument names for
%% piano staves
instrumentName = #'()
shortInstrumentName = #'()
-
+
\defaultchild "Voice"
\accepts "Voice"
\accepts "CueVoice"
-
+
\description "Handles clefs, bar lines, keys, accidentals. It can contain
@code{Voice} contexts."
\type "Engraver_group"
\name "DrumStaff"
\alias "Staff"
-
+
\remove "Accidental_engraver"
\remove "Ottava_spanner_engraver"
- \remove "Key_engraver"
+ \remove "Key_engraver"
\remove "Piano_pedal_engraver"
\remove "String_number_engraver"
-
+
\description "Handles typesetting for percussion."
\denies "Voice"
clefGlyph = #"clefs.percussion"
clefPosition = #0
- \override Script #'staff-padding = #0.75
+ \override Script #'staff-padding = #0.75
}
\context{
\type "Engraver_group"
-
+
\override VerticalAxisGroup #'minimum-Y-extent = ##f
localKeySignature = #'()
createSpacing = ##t
squashedPosition = #0
\name RhythmicStaff
\alias "Staff"
-
+
\override BarLine #'bar-size = #4
\override VoltaBracket #'staff-padding = #3
- \override StaffSymbol #'line-count = #1
+ \override StaffSymbol #'line-count = #1
\override Stem #'neutral-direction = #UP
\override Beam #'neutral-direction = #UP
-
+
\consists "Output_property_engraver"
\consists "Font_size_engraver"
- \consists "Separating_line_group_engraver"
+ \consists "Separating_line_group_engraver"
\consists "Dot_column_engraver"
\consists "Bar_engraver"
\consists "Staff_symbol_engraver"
\consists "Time_signature_engraver"
\consists "Instrument_name_engraver"
\consists "Axis_group_engraver"
- \consists "Ledger_line_engraver"
-
+ \consists "Ledger_line_engraver"
+
\accepts "Voice"
\accepts "CueVoice"
\defaultchild "Voice"
\consists "Font_size_engraver"
\consists "Pitched_trill_engraver"
- \consists "Output_property_engraver"
+ \consists "Output_property_engraver"
\consists "Arpeggio_engraver"
\consists "Multi_measure_rest_engraver"
\consists "Text_spanner_engraver"
\consists "Dots_engraver"
\consists "Rest_engraver"
\consists "Tweak_engraver"
-
+
%% switch on to make stem directions interpolate for the
%% center line.
% \consists "Melody_engraver"
%% must come before Script_column_engraver.
\consists "New_fingering_engraver"
-
+
\consists "Chord_tremolo_engraver"
\consists "Percent_repeat_engraver"
\consists "Slash_repeat_engraver"
\context{
\Voice
-
+
\name CueVoice
\alias Voice
fontSize = #-4
\type "Engraver_group"
\name GrandStaff
localKeySignature = #'()
-
+
\description "A group of staves, with a brace on the left
side, grouping the staves together. The bar lines of the
contained staves are connected vertically."
\consists "Span_bar_engraver"
\consists "Span_arpeggio_engraver"
- \consists "Output_property_engraver"
+ \consists "Output_property_engraver"
systemStartDelimiter = #'SystemStartBracket
\consists "System_start_delimiter_engraver"
\accepts "DrumStaff"
\accepts "GrandStaff"
\accepts "PianoStaff"
- \accepts "TabStaff"
+ \accepts "TabStaff"
\accepts "Lyrics"
\accepts "ChordNames"
\accepts "FiguredBass"
\accepts "ChoirStaff"
\accepts "StaffGroup"
-
+
\description "Groups staves while adding a bracket on the left
side, grouping the staves together. The bar lines of the contained
staves are connected vertically. @code{StaffGroup} only consists of
\description "Corresponds to a voice with lyrics. Handles the
printing of a single line of lyrics."
-
+
\name "Lyrics"
instrumentName = #'()
shortInstrumentName = #'()
-
+
\consists "Lyric_engraver"
\consists "Extender_engraver"
\consists "Hyphen_engraver"
%% make sure that barlines aren't collapsed, when
%% Bar_engraver is there.
- \override BarLine #'bar-size = #0.1
-
+ \override BarLine #'bar-size = #0.1
+
}
\context {
% FIXME: not sure what the default should be here.
\override VerticalAxisGroup #'staff-affinity = #DOWN
-
- \consists "Rest_swallow_translator"
+
+ \consists "Rest_swallow_translator"
\consists "Skip_event_swallow_translator"
\consists "Tie_engraver"
\consists "Note_name_engraver"
\type "Engraver_group"
\name ChordNames
\description "Typesets chord names."
-
- \consists "Rest_swallow_translator"
- \consists "Output_property_engraver"
+
+ \consists "Rest_swallow_translator"
+ \consists "Output_property_engraver"
\consists "Separating_line_group_engraver"
\consists "Chord_name_engraver"
\consists "Skip_event_swallow_translator"
AncientRemoveEmptyStaffContext = \context {
%% why not add by default?
-
+
\RemoveEmptyStaffContext
\accepts "VaticanaVoice"
\accepts "GregorianTranscriptionVoice"
\context {
\type "Score_engraver"
\name "Score"
-
+
\description "This is the top level notation context. No
other context can contain a @code{Score} context. This context
handles the administration of time signatures. It also makes sure
\consists "System_start_delimiter_engraver"
\consists "Mark_engraver"
\consists "Volta_engraver"
- \consists "Metronome_mark_engraver"
+ \consists "Metronome_mark_engraver"
\consists "Break_align_engraver"
\consists "Spacing_engraver"
\consists "Grace_spacing_engraver"
\consists "Stanza_number_align_engraver"
\consists "Bar_number_engraver"
\consists "Parenthesis_engraver"
-
+
\defaultchild "Staff"
\accepts "FretBoards"
systemStartDelimiter =#'SystemStartBar
drumStyleTable = #drums-style
-
+
melismaBusyProperties = #default-melisma-properties
tieWaitForNote = ##f
clefGlyph = #"clefs.G"
crescendoSpanner = #'hairpin
decrescendoSpanner = #'hairpin
-
+
defaultBarType = #"|"
doubleRepeatType = #":|:"
barNumberVisibility = #first-bar-number-invisible
automaticBars = ##t
-
+
explicitClefVisibility = #all-visible
explicitKeySignatureVisibility = #all-visible
implicitTimeSignatureVisibility = #end-of-line-invisible
-
+
repeatCountVisibility = #all-repeat-counts-visible
-
- autoBeamSettings = #default-auto-beam-settings
+
+ beamSettings = #default-beam-settings
autoBeaming = ##t
autoBeamCheck = #default-auto-beam-check
scriptDefinitions = #default-script-alist
pedalUnaCordaStyle = #'text
%% These are in ordinary italic font, including the *,
-%% but they are unlikely to be used,
+%% but they are unlikely to be used,
%% as the default pedal-style for SostenutoPedal is 'mixed':
-%% i.e. Sost. Ped_____________________
- pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
+%% i.e. Sost. Ped_____________________
+ pedalSostenutoStrings = #'("Sost. Ped." "*Sost. Ped." "*")
pedalSostenutoStyle = #'mixed
- harmonicAccidentals = ##t
+ harmonicAccidentals = ##t
fingeringOrientations = #'(up down)
stringNumberOrientations = #'(up down)
strokeFingerOrientations = #'(right)
-
+
lyricMelismaAlignment = #LEFT
markFormatter = #format-mark-letters
rehearsalMark = #1
subdivideBeams = ##f
extraNatural = ##t
autoAccidentals = #`(Staff ,(make-accidental-rule 'same-octave 0))
- autoCautionaries = #'()
+ autoCautionaries = #'()
printKeyCancellation = ##t
keyAlterationOrder = #`(
)
barCheckSynchronize = ##f
-
+
%% chord names:
chordNameFunction = #ignatzek-chord-names
majorSevenSymbol = #whiteTriangleMarkup
percent-repeat-item-interface
percent-repeat-interface
- ;; need this, as stanza numbers are items, and appear only once.
+ ;; need this, as stanza numbers are items, and appear only once.
stanza-number-interface
)
quotedEventTypes = #'(
instrumentTransposition = #(ly:make-pitch 0 0 0)
verticallySpacedContexts = #'(Staff)
- topLevelAlignment = ##t
-
+
timing = ##t
}
\name "Devnull"
\type "Engraver_group"
-%% don't want to route anything out of here:
+%% don't want to route anything out of here:
\alias "Staff"
\alias "Voice"
\consists "Swallow_engraver"
\alias "Voice"
\consists "Tab_note_heads_engraver"
\consists "Tab_harmonic_engraver"
-
+
\remove "Note_heads_engraver"
\remove "Fingering_engraver"
\remove "New_fingering_engraver"
\name "TabStaff"
\denies "Voice"
\consists "Tab_staff_symbol_engraver"
-
+
\description "Context for generating tablature. [DOCME]"
\accepts "TabVoice"
\defaultchild "TabVoice"
-
+
%% 6 strings
\override StaffSymbol #'staff-space = #1.5
%% Don't draw stems over the tablature figures !
\override Stem #'avoid-note-head = ##t
-
+
%% No accidental in tablature !
\remove "Accidental_engraver"
\remove "Key_engraver"
#(define-music-function (parser location proc mus) (procedure? ly:music?)
(music-map proc mus))
+overrideBeamSettings =
+#(define-music-function
+ (parser location
+ context time-signature rule-type grouping-rule)
+ (symbol? pair? symbol? pair?)
+
+ (_i "Override beamSettings in @var{context}
+for time signatures of @var{time-signature} and rules of type
+@var{rule-type} to have a grouping rule alist
+@var{grouping-rule}.
+@var{rule-type} can be @code{end} or @code{subdivide},
+with a potential future value of @code{begin}.
+@var{grouping-rule} is an alist of @var{(beam-type . grouping)}
+entries. @var{grouping} is in units of @var{beam-type}. If
+@var{beam-type} is @code{*}, grouping is in units of the denominator
+of @var{time-signature}.")
+
+ ;; TODO -- add warning if largest value of grouping is
+ ;; greater than time-signature.
+
+#{
+#(override-beam-setting
+ $time-signature $rule-type $grouping-rule $context)
+#})
overrideProperty =
#(define-music-function (parser location name property value)
reference-note))
+revertBeamSettings =
+#(define-music-function
+ (parser location
+ context time-signature rule-type)
+ (symbol? pair? symbol?)
+
+ (_i "Revert beam settings in @var{context} for time signatures of
+@var{time-signature} and groups of type
+@var{group-type}. @var{group-type} can be @code{end}
+or @code{subdivide}.")
+#{
+ #(revert-beam-setting $time-signature $rule-type $context)
+#})
scaleDurations =
#(define-music-function (parser location fraction music) (number-pair? ly:music?)
(ly:music-compress music
(ly:make-moment (car fraction) (cdr fraction))))
+setBeatGrouping =
+#(define-music-function (parser location grouping) (pair?)
+ (_i "Set the beat grouping in the current time signature to
+@var{grouping}.")
+ (define (default-group-setting c)
+ (let* ((context-time-signature
+ (ly:context-property c 'timeSignatureFraction))
+ (time-signature (if (null? context-time-signature)
+ '(4 . 4)
+ context-time-signature)))
+ (override-property-setting
+ c
+ 'beamSettings
+ (list time-signature 'end)
+ (list (cons '* grouping)))))
+
+ (context-spec-music
+ (make-apply-context default-group-setting)
+ 'Score))
shiftDurations =
while match:
result = result + str[:match.end (1)] + " \markup"
str = str[match.end( 2):]
- # Count matching parentheses to find the end of the
+ # Count matching parentheses to find the end of the
# current markup:
nesting_level = 0
pars = re.finditer(r"[()]",str)
string_or_scheme = re.compile ('("(?:[^"\\\\]|\\\\.)*")|(#\\s*\'?\\s*\\()')
-# Only apply articulation_substitute () outside strings and
+# Only apply articulation_substitute () outside strings and
# Scheme expressions:
def smarter_articulation_subst (str):
result = ''
# Copy the string to output:
result = result + match.group (1)
str = str[match.end(1):]
- else: # Found a Scheme expression. Count
+ else: # Found a Scheme expression. Count
# matching parentheses to find its end
str = str[match.start ():]
nesting_level = 0
return str
-@rule ((1, 9, 3), (_ ("%s misspelling") % "\\acciaccatura") +
+@rule ((1, 9, 3), (_ ("%s misspelling") % "\\acciaccatura") +
", fingerHorizontalDirection -> fingeringOrientations")
def conv (str):
str = re.sub ('accacciatura',
str = re.sub ('soloADue', 'printPartCombineTexts', str)
str = re.sub (r'\\applymusic\s*#notes-to-clusters',
'\\makeClusters', str)
-
+
str = re.sub (r'pagenumber\s*=', 'firstpagenumber = ', str)
return str
str = re.sub (r'#\(paper-set-staff-size', '%Use set-global-staff-size at toplevel\n% #(layout-set-staff-size', str)
return str
-
+
@rule ((2, 3, 23), r'\context Foo = NOTENAME -> \context Foo = "NOTENAME"')
def conv (str):
@rule ((2, 7, 0), 'ly:get-default-font -> ly:grob-default-font')
def conv (str):
- return re.sub('ly:get-default-font', 'ly:grob-default-font', str)
+ return re.sub('ly:get-default-font', 'ly:grob-default-font', str)
@rule ((2, 7, 1), '''ly:parser-define -> ly:parser-define!
while dur > 1 :
dur /= 2
log2 += 1
-
+
den = (1 << dots) * (1 << log2)
num = ((1 << (dots+1)) - 1)
}
""" % (num*count, den)
-
+
str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str)
return str
@rule ((2, 11, 6), _ ("Rename accidental glyphs, use glyph-name-alist."))
def conv (str):
-
+
def sub_acc_name (m):
idx = int (m.group (1).replace ('M','-'))
-
+
return ["accidentals.doublesharp",
"accidentals.sharp.slashslash.stemstemstem",
"accidentals.sharp",
"accidentals.flatflat"][4-idx]
str = re.sub (r"accidentals[.](M?[-0-9]+)",
- sub_acc_name, str)
+ sub_acc_name, str)
str = re.sub (r"(KeySignature|Accidental[A-Za-z]*)\s*#'style\s*=\s*#'([a-z]+)",
r"\1 #'glyph-name-alist = #alteration-\2-glyph-name-alist", str)
## FIXME: standard vs default, alteration-FOO vs FOO-alteration
context = m.group (2)
if not context:
context = ''
-
+
s += (r"%s \override %sTextSpanner #'bound-details #'%s #'text = \markup { \draw-line #'(0 . %s) }"
% (once, context, var, h))
s += '\n'
-
+
return s
-
-
+
+
str = re.sub (r"(\\once)?\s*\\override\s*([a-zA-Z]+\s*[.]\s*)?TextSpanner\s*#'edge-height\s*=\s*#'\(\s*([0-9.-]+)\s+[.]\s+([0-9.-]+)\s*\)", sub_edge_height, str)
return str
"\t(format-metronome-markup text dur count context)\n")
## warning 2/2: fret diagram properties moved to fret-diagram-details
- fret_props = ['barre-type',
- 'dot-color',
+ fret_props = ['barre-type',
+ 'dot-color',
'dot-radius',
'finger-code',
'fret-count',
@rule ((2, 11, 55), "#(set-octavation oct) -> \\ottava #oct,\n\
\\put-adjacent markup axis dir markup -> \\put-adjacent axis dir markup markup")
-def conv (str):
+def conv (str):
str = re.sub (r"#\(set-octavation (-*[0-9]+)\)", r"\\ottava #\1", str)
if re.search ('put-adjacent', str):
stderr_write (NOT_SMART % _ ("\\put-adjacent argument order.\n"))
stderr_write (UPDATE_MANUALLY)
return str
-@rule ((2, 13, 4), _("different settings for vertical layout"))
+@rule ((2, 13, 4),
+ _ ("Autobeaming rules have changed. override-auto-beam-setting and\n\
+revert-auto-beam-setting have been eliminated. \\overrideBeamSettings has been\n\
+added. BeatGrouping has been eliminated.\n\
+Different settings for vertical layout."))
def conv(str):
+ if re.search("override-auto-beam-setting", str):
+ stderr_write ("\n")
+ stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\
+ Autobeam settings are now overriden with \\overrideBeamSettings.\n"))
+ stderr_write (UPDATE_MANUALLY)
+ if re.search("revert-auto-beam-setting", str):
+ stderr_write ("\n")
+ stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\
+ Autobeam settings are now reverted with \\revertBeamSettings.\n"))
+ stderr_write (UPDATE_MANUALLY)
+ str = re.sub(r"\\set\s+#\'beatGrouping", r"\\setBeatGrouping", str)
+ if re.search(r"(\w+\.beatGrouping)", str):
+ stderr_write (NOT_SMART % _(".beatGrouping. \n\
+ beatGrouping with a specified context must now be accomplished with\n\
+ \\overrideBeamSettings.\n"))
+ stderr_write (UPDATE_MANUALLY)
if re.search(r'alignment-offsets', str):
stderr_write("\n")
stderr_write(NOT_SMART % _("alignment-offsets has been changed to alignment-distances: \
# - write rule for bumping major stable version with
#
# _ ("bump version for release")
-#
+#
# as exact description.
;;;;
;;;; (c) 2000--2009 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; specify generic beam end times
-
-;;; format:
-;;;
-;;; function shortest-duration-in-beam time-signature
-;;;
-;;; where
-;;;
-;;; function = begin or end
-;;; shortest-duration-in-beam = numerator denominator; e.g.: 1 16
-;;; time-signature = numerator denominator, e.g.: 4 4
-;;;
-;;; unspecified or wildcard entries for duration or time-signature
-;;; are given by * *
-
-;;; maybe do: '(end shortest-1 16 time-3 4) ?
-
-(define-public default-auto-beam-settings
- `(
- ;; in 2 2 time:
- ;; use beatLength for all except 32nd notes
- ;; end beams with 32nd notes each 1 4 beat
-
- ((end 1 32 2 2) . ,(ly:make-moment 1 4))
- ((end 1 32 2 2) . ,(ly:make-moment 2 4))
- ((end 1 32 2 2) . ,(ly:make-moment 3 4))
-
- ;; in 2 4, 2 8 and 2 16 time:
- ;; use beatLength
-
- ;; in 3 2 time:
- ;; use beatLength for all except 32nd notes
- ;; end beams with 32nd notes each 1 4 beat
-
- ((end 1 32 3 2) . ,(ly:make-moment 1 4))
- ((end 1 32 3 2) . ,(ly:make-moment 2 4))
- ((end 1 32 3 2) . ,(ly:make-moment 3 4))
- ((end 1 32 3 2) . ,(ly:make-moment 4 4))
- ((end 1 32 3 2) . ,(ly:make-moment 5 4))
-
- ;; in 3 4, 3 8 and 3 16 time:
- ;; use beatLength
-
- ;; in 4 2 time:
- ;; use beatLength for all except 16th and 32nd notes
- ;; end beams with 16th notes each 1 4 beat
- ;; end beams with 32nd notes each 1 8 beat
-
- ((end 1 16 4 2) . ,(ly:make-moment 1 4))
- ((end 1 16 4 2) . ,(ly:make-moment 2 4))
- ((end 1 16 4 2) . ,(ly:make-moment 3 4))
- ((end 1 16 4 2) . ,(ly:make-moment 4 4))
- ((end 1 16 4 2) . ,(ly:make-moment 5 4))
- ((end 1 16 4 2) . ,(ly:make-moment 6 4))
- ((end 1 16 4 2) . ,(ly:make-moment 7 4))
-
- ((end 1 32 4 2) . ,(ly:make-moment 1 8))
- ((end 1 32 4 2) . ,(ly:make-moment 2 8))
- ((end 1 32 4 2) . ,(ly:make-moment 3 8))
- ((end 1 32 4 2) . ,(ly:make-moment 4 8))
- ((end 1 32 4 2) . ,(ly:make-moment 5 8))
- ((end 1 32 4 2) . ,(ly:make-moment 6 8))
- ((end 1 32 4 2) . ,(ly:make-moment 7 8))
- ((end 1 32 4 2) . ,(ly:make-moment 8 8))
- ((end 1 32 4 2) . ,(ly:make-moment 9 8))
- ((end 1 32 4 2) . ,(ly:make-moment 10 8))
- ((end 1 32 4 2) . ,(ly:make-moment 11 8))
- ((end 1 32 4 2) . ,(ly:make-moment 12 8))
- ((end 1 32 4 2) . ,(ly:make-moment 13 8))
- ((end 1 32 4 2) . ,(ly:make-moment 14 8))
- ((end 1 32 4 2) . ,(ly:make-moment 15 8))
-
- ;; in 4 4 (common) time:
- ;; use beatLength for all except 32nd notes:
- ;; end beams with 32nd notes each 1 8 beat
-
- ((end 1 32 4 4) . ,(ly:make-moment 1 8))
- ((end 1 32 4 4) . ,(ly:make-moment 2 8))
- ((end 1 32 4 4) . ,(ly:make-moment 3 8))
- ((end 1 32 4 4) . ,(ly:make-moment 4 8))
- ((end 1 32 4 4) . ,(ly:make-moment 5 8))
- ((end 1 32 4 4) . ,(ly:make-moment 6 8))
- ((end 1 32 4 4) . ,(ly:make-moment 7 8))
-
- ;; in 4 8 and 4 16 time:
- ;; use beatLength
-
- ;; in 6 4 time:
- ;; use beatGrouping for all except 16th, 32nd notes
- ;; end beams with 16th or 32nd notes each 1 4 beat
-
-
- ((end 1 16 6 4) . ,(ly:make-moment 1 4))
- ((end 1 16 6 4) . ,(ly:make-moment 2 4))
- ((end 1 16 6 4) . ,(ly:make-moment 3 4))
- ((end 1 16 6 4) . ,(ly:make-moment 4 4))
- ((end 1 16 6 4) . ,(ly:make-moment 5 4))
-
- ((end 1 32 6 4) . ,(ly:make-moment 1 4))
- ((end 1 32 6 4) . ,(ly:make-moment 2 4))
- ((end 1 32 6 4) . ,(ly:make-moment 3 4))
- ((end 1 32 6 4) . ,(ly:make-moment 4 4))
- ((end 1 32 6 4) . ,(ly:make-moment 5 4))
-
- ;; in 6 8 time:
- ;; use beatGrouping for all except 32nd notes
- ;; end beams with 32nd notes each 1 8 beat
-
- ((end 1 32 6 8) . ,(ly:make-moment 1 8))
- ((end 1 32 6 8) . ,(ly:make-moment 2 8))
- ((end 1 32 6 8) . ,(ly:make-moment 3 8))
- ((end 1 32 6 8) . ,(ly:make-moment 4 8))
- ((end 1 32 6 8) . ,(ly:make-moment 5 8))
-
- ;; in 6 16 time:
- ;; use beatGrouping
-
- ;; in 9 4 time:
- ;; use beatGrouping for all except 16th, 32nd notes
- ;; end beams with 16th or 32nd notes each 1 4 beat
-
- ((end 1 16 9 4) . ,(ly:make-moment 1 4))
- ((end 1 16 9 4) . ,(ly:make-moment 2 4))
- ((end 1 16 9 4) . ,(ly:make-moment 3 4))
- ((end 1 16 9 4) . ,(ly:make-moment 4 4))
- ((end 1 16 9 4) . ,(ly:make-moment 5 4))
- ((end 1 16 9 4) . ,(ly:make-moment 6 4))
- ((end 1 16 9 4) . ,(ly:make-moment 7 4))
- ((end 1 16 9 4) . ,(ly:make-moment 8 4))
-
- ((end 1 32 9 4) . ,(ly:make-moment 1 4))
- ((end 1 32 9 4) . ,(ly:make-moment 2 4))
- ((end 1 32 9 4) . ,(ly:make-moment 3 4))
- ((end 1 32 9 4) . ,(ly:make-moment 4 4))
- ((end 1 32 9 4) . ,(ly:make-moment 5 4))
- ((end 1 32 9 4) . ,(ly:make-moment 6 4))
- ((end 1 32 9 4) . ,(ly:make-moment 7 4))
- ((end 1 32 9 4) . ,(ly:make-moment 8 4))
-
- ;; in 9 8 time:
- ;; use beatGrouping for all except 32nd notes
- ;; end beams with 32nd notes each 1 8 beat
-
- ((end 1 32 9 8) . ,(ly:make-moment 1 8))
- ((end 1 32 9 8) . ,(ly:make-moment 2 8))
- ((end 1 32 9 8) . ,(ly:make-moment 3 8))
- ((end 1 32 9 8) . ,(ly:make-moment 4 8))
- ((end 1 32 9 8) . ,(ly:make-moment 5 8))
- ((end 1 32 9 8) . ,(ly:make-moment 6 8))
- ((end 1 32 9 8) . ,(ly:make-moment 7 8))
- ((end 1 32 9 8) . ,(ly:make-moment 8 8))
-
- ;; in 9 16 time
- ;; use beatGrouping
-
- ;; in 12 4 time:
- ;; use beatGrouping for all except 16th, 32nd notes
- ;; end beams with 16th or 32nd notes each 1 4 beat
-
- ((end 1 16 12 4) . ,(ly:make-moment 1 4))
- ((end 1 16 12 4) . ,(ly:make-moment 2 4))
- ((end 1 16 12 4) . ,(ly:make-moment 3 4))
- ((end 1 16 12 4) . ,(ly:make-moment 4 4))
- ((end 1 16 12 4) . ,(ly:make-moment 5 4))
- ((end 1 16 12 4) . ,(ly:make-moment 6 4))
- ((end 1 16 12 4) . ,(ly:make-moment 7 4))
- ((end 1 16 12 4) . ,(ly:make-moment 8 4))
- ((end 1 16 12 4) . ,(ly:make-moment 9 4))
- ((end 1 16 12 4) . ,(ly:make-moment 10 4))
- ((end 1 16 12 4) . ,(ly:make-moment 11 4))
-
- ((end 1 32 12 4) . ,(ly:make-moment 1 4))
- ((end 1 32 12 4) . ,(ly:make-moment 2 4))
- ((end 1 32 12 4) . ,(ly:make-moment 3 4))
- ((end 1 32 12 4) . ,(ly:make-moment 4 4))
- ((end 1 32 12 4) . ,(ly:make-moment 5 4))
- ((end 1 32 12 4) . ,(ly:make-moment 6 4))
- ((end 1 32 12 4) . ,(ly:make-moment 7 4))
- ((end 1 32 12 4) . ,(ly:make-moment 8 4))
- ((end 1 32 12 4) . ,(ly:make-moment 9 4))
- ((end 1 32 12 4) . ,(ly:make-moment 10 4))
- ((end 1 32 12 4) . ,(ly:make-moment 11 4))
-
- ;; in 12 8 time:
- ;; use beatGrouping for all except 32nd notes
- ;; end beams with 32nd notes each 1 8 beat
-
- ((end 1 32 12 8) . ,(ly:make-moment 1 8))
- ((end 1 32 12 8) . ,(ly:make-moment 2 8))
- ((end 1 32 12 8) . ,(ly:make-moment 3 8))
- ((end 1 32 12 8) . ,(ly:make-moment 4 8))
- ((end 1 32 12 8) . ,(ly:make-moment 5 8))
- ((end 1 32 12 8) . ,(ly:make-moment 6 8))
- ((end 1 32 12 8) . ,(ly:make-moment 7 8))
- ((end 1 32 12 8) . ,(ly:make-moment 8 8))
- ((end 1 32 12 8) . ,(ly:make-moment 9 8))
- ((end 1 32 12 8) . ,(ly:make-moment 10 8))
- ((end 1 32 12 8) . ,(ly:make-moment 11 8))
-
- ;; in 12 16 time:
- ;; use beatGrouping
-
- ))
-
-(define (override-property-setting context property setting value)
- "Like the C++ code that executes \\override, but without type
-checking. "
- (ly:context-set-property!
- context property
- (cons (cons setting value) (ly:context-property context property))))
-
-(define (revert-property-setting context property setting)
- "Like the C++ code that executes \revert, but without type
-checking. "
-
- (define (revert-member alist entry new)
- "Return ALIST, with ENTRY removed. ALIST is not modified, instead
-a fresh copy of the list-head is made."
- (cond
- ((null? alist) new)
- ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
- (else (revert-member (cdr alist) entry (cons (car alist) new)))))
-
- (ly:context-set-property!
- context property
- (revert-member (ly:context-property context property) setting '())))
-
-(define-public (override-auto-beam-setting setting num den . rest)
- (ly:export
- (context-spec-music
- (make-apply-context (lambda (c)
- (override-property-setting
- c 'autoBeamSettings
- setting (ly:make-moment num den))))
- (if (and (pair? rest) (symbol? (car rest)))
- (car rest)
- 'Voice))))
-
-(define-public (score-override-auto-beam-setting setting num den)
- (override-auto-beam-setting setting num den 'Score))
-
-(define-public (revert-auto-beam-setting setting num den . rest)
- (ly:export
- (context-spec-music
- (make-apply-context
- (lambda (c)
- (revert-property-setting
- c 'autoBeamSettings
- (cons setting (ly:make-moment num den)))))
- (if (and (pair? rest) (symbol? (car rest)))
- (car rest)
- 'Voice))))
-
;; Determine end moment for auto beaming (or begin moment, but mostly
-;; 0== anywhere). In order of decreasing priority:
+;; 0== anywhere). We only consider the current time signature.
+;; In order of decreasing priority:
;;
-;; 1. end <type> * *
-;; 2. end * * *
-;; 3. end <type> <num> <den>
-;; 4. end * <num> <den>
-;; 5. if 1-4 not specified, begin anywhere, end at time determined by
-;; beatGrouping and beatLength:
-;; if beatGrouping and beatLength are consistent with measureLength,
-;; use beatGrouping to determine end of beams.
-;; if beatGrouping and beatLength are inconsistent with measureLength,
-;; use beatLength to determine end of beams.
+;; 1. end <type>
+;; 2. end *
+;; 3. if 1-2 not specified, begin anywhere, end at beatLength intervals
;;
;; Rationale:
;;
;; [user override]
;; 1. override for specific duration type
-;; 2. generic override
+;; 2. override for all duration types in a time signature.
;;
-;; [to be defined in config file]
-;; 3. exceptions for specific time signature, for specific duration type
-;; 4. exceptions for specific time signature
-;; 5. easy catch-all rule for non-specified measure types
+;; defined in scm/beam-settings.scm:
+;; 1. Default grouping for common time signatures
+;; 2. exceptions for specific time signature, for specific duration type
-(define-public (default-auto-beam-check context dir test)
+(define-public (default-auto-beam-check context dir test-beam)
(define (get name default)
(let ((value (ly:context-property context name)))
(if (not (null? value)) value default)))
(cons (ly:moment-mul (ly:make-moment new-start 1) beat-length)
(ending-moments (cdr group-list) new-start beat-length)))))
- (define (make-end-settings time ending-list moment-den)
- (if (null? ending-list)
- '()
- (cons (cons (append '(end * *) time)
- (ly:make-moment (car ending-list) moment-den))
- (make-end-settings time (cdr ending-list) moment-den))))
-
+ ;; Start of actual auto-beam test routine
+ ;;
+ ;;
;; Don't start auto beams on grace notes
(if (and (!= (ly:moment-grace-numerator (ly:context-now context)) 0)
(= dir START))
#f
- (let* ((beat-length (get 'beatLength (ly:make-moment 1 4)))
- (measure-length (get 'measureLength (ly:make-moment 1 1)))
- (measure-pos (get 'measurePosition ZERO-MOMENT))
- (beat-grouping (get 'beatGrouping '()))
- (settings (get 'autoBeamSettings '()))
- (function (list (if (= dir START) 'begin 'end)))
- ;; Calculate implied time signature based on measureLength
- ;; and beatLength for default value in get
- (num-mom (ly:moment-div measure-length beat-length))
- (num (inexact->exact
- (round (/ (ly:moment-main-numerator num-mom)
- (ly:moment-main-denominator num-mom)))))
- (den (ly:moment-main-denominator beat-length))
- (time-signature-fraction
- (get 'timeSignatureFraction (cons num den)))
- (time (list (car time-signature-fraction)
- (cdr time-signature-fraction)))
- (type (list (ly:moment-main-numerator test)
- (ly:moment-main-denominator test)))
- (pos (if (>= (ly:moment-main-numerator measure-pos) 0)
- measure-pos
- (ly:moment-add measure-length measure-pos)))
- (grouping-moments (ending-moments beat-grouping 0 beat-length))
- ;; Calculate implied measure length from beatGrouping
- ;; and beatLength
- (grouping-length (if (null? grouping-moments)
- ZERO-MOMENT
- (list-ref grouping-moments
- (1- (length grouping-moments)))))
- (lst (list
- ;; Hmm, should junk user-override feature,
- ;; or split this in user-override and config section?
- (append function type '(* *))
- (append function '(* * * *))
- (append function type time)
- (append function '(* *) time)))
- (predefined-setting (first-assoc lst settings)))
- (if (or
- ;; always begin or end beams at beginning/ending of measure
+ (if (= dir START)
+ ;; start anywhere is currently implemented
+ #t
+ (let* ((beat-length (get 'beatLength (ly:make-moment 1 4)))
+ (measure-length (get 'measureLength (ly:make-moment 1 1)))
+ (time-signature-fraction
+ (get 'timeSignatureFraction '(4 . 4)))
+ (measure-pos (get 'measurePosition ZERO-MOMENT))
+ (settings (get 'beamSettings '()))
+ (function (if (= dir START) 'begin 'end))
+ (type (cons (ly:moment-main-numerator test-beam)
+ (ly:moment-main-denominator test-beam)))
+ (pos (if (>= (ly:moment-main-numerator measure-pos) 0)
+ measure-pos
+ (ly:moment-add measure-length measure-pos)))
+ (type-grouping (ly:beam-grouping
+ settings
+ time-signature-fraction
+ function
+ type))
+ (default-grouping (ly:beam-grouping
+ settings
+ time-signature-fraction
+ function
+ '*))
+ (beat-grouping (if (null? type-grouping)
+ default-grouping
+ type-grouping))
+ (grouping-moment (if (null? type-grouping)
+ beat-length
+ test-beam))
+ (grouping-moments (ending-moments
+ beat-grouping 0 grouping-moment)))
+ (if (null? beat-grouping)
+ ;; no rule applies, so end at beatLength
+ (= (ly:moment-main-denominator
+ (ly:moment-div pos beat-length)) 1)
+ ;; otherwise, end at beginning of measure or
+ ;; at specified moment
+ (or
+ ;; start/end at beginning of measure
(= (ly:moment-main-numerator pos) 0)
- (first-member (map (lambda (x) (cons x pos)) lst) settings))
- #t
- (if (= dir START)
- ;; if no entry matches our function + time or type,
- ;; start anywhere
- (not predefined-setting)
- ;; if entry matches our function + time or type, check moment
- (if predefined-setting
- (equal? measure-pos (cdr predefined-setting))
- ;; if measure-length matches grouping-length, use
- ;; grouping moments, else use beat-length
- (if (equal? measure-length grouping-length)
- (member measure-pos grouping-moments)
- (= (ly:moment-main-denominator
- (ly:moment-div pos beat-length)) 1))))))))
+ ;; end if measure-pos matches a specified ending moment
+ (member measure-pos grouping-moments)))))))
--- /dev/null
+;;;; default-beam-settings.scm -- Default auto-beam and subdivide-beam settings
+;;;;
+;;;; source file of the GNU LilyPond music typesetter
+;;;;
+;;;; (c) 2009 Carl Sorensen <c_sorensen@byu.edu>
+
+;;; specify default beaming rules
+
+;;; format:
+;;;
+;;; alist of
+;;; ((time-signature function) . (beam-type . grouping)) entries
+;;;
+;;; where
+;;;
+;;; time-signature = time signature fraction (pair of numbers, (4 .4) )
+;;; function = 'end or 'subdivide (possibly implement 'begin in the future)
+;;; beam-type = '* or (numerator . denominator); e.g. (1 . 16)
+;;; NOTE: numerator is kept in beam-type because of
+;;; tuplets, e.g. (2 . 24) = (2 . 3) * (1 . 8)
+;;; for eighth-note triplets.
+;;; grouping = a list of groups, in units of time signature denominator
+;;; (for default rules) or beam-type (for explicit rules)
+;;;
+
+(define-public default-beam-settings
+ `(
+ ;; in 2 2 time:
+ ;; default: end beams on 1 2 note boundaries
+ ;; end beams with 32nd notes each 1 4 beat
+ (((2 . 2) end) .
+ ((* . (1 1))
+ ((1 . 32) . (8 8 8 8))))
+
+ ;; in 2 4, 2 8 and 2 16 time:
+ ;; default: end beams on beats
+ (((2 . 4) end) . ((* . (1 1))))
+ (((2 . 8) end) . ((* . (1 1))))
+ (((2 . 16) end) . ((* . (1 1))))
+
+ ;; in 3 2 time:
+ ;; default: end beams on beats
+ ;; end beams with 32nd notes each 1 4 beat
+ (((3 . 2) end) .
+ ((* . (1 1 1))
+ ((1 . 32) . (8 8 8 8 8 8))))
+
+ ;; in 3 4 time:
+ ;; default: end beams on beats
+ ;; group 1/8 note beams on measure
+ (((3 . 4) end) .((* . (3))
+ ((1 16) . (4 4 4))
+ ((1 32) . (8 8 8))
+ ((1 64) . (16 16 16))
+ ((1 128) . (32 32 32))))
+
+ ;; in 3 8 and 3 16 time time:
+ ;; default: group on 3
+ (((3 . 8) end) . ((* . (3))))
+ (((3 . 16) end) . ((* . (3))))
+
+ ;; in 4 2 time:
+ ;; default: end beams on beats
+ ;; end beams with 16th notes each 1 4 beat
+ ;; end beams with 32nd notes each 1 8 beat
+ (((4 . 2) end) .
+ ((* . (1 1 1 1))
+ ((1 . 16) . (4 4 4 4 4 4 4 4))
+ ((1 . 32) . (4 4 4 4
+ 4 4 4 4
+ 4 4 4 4
+ 4 4 4 4))))
+
+ ;; in 4 4 (common) time:
+ ;; default: end beams on beats
+ ;; use beatLength for all except 32nd notes:
+ ;; end beams with 32nd notes each 1 8 beat
+ (((4 . 4) end) .
+ ((* . (2 2))
+ ((1 . 32) . (4 4 4 4
+ 4 4 4 4))))
+
+ ;; in 4 8 time:
+ ;; default: group on 1 4 notes
+ (((4 . 8) end) . ((* . (2 2))))
+
+ ;; in 4 16 time:
+ ;; default: group on beats
+ (((4 . 16) end) . ((* . (1 1 1 1))))
+
+ ;; in 6 4 time:
+ ;; default group at 3 4
+ ;; end beams with 16th or 32nd notes each 1 4 beat
+ (((6 . 4) end) .
+ ((* . (3 3))
+ ((1 . 16) . (4 4 4 4 4 4))
+ ((1 . 32) . (8 8 8 8 8 8))))
+
+ ;; in 6 8 time:
+ ;; default: group at 3 8
+ ;; end beams with 32nd notes each 1 8 beat
+ (((6 . 8) end) .
+ ((* . (3 3))
+ ((6 . 8) . (4 4 4 4 4 4))))
+
+ ;; in 6 16 time:
+ ;; default: group at 3 16
+ (((6 . 16) end) . ((* . (3 3))))
+
+ ;; in 9 4 time:
+ ;; default: group at 3 4
+ ;; end beams with 16th or 32nd notes each 1 4 beat
+ (((9 . 4) end) .
+ ((* . (3 3 3))
+ ((1 . 16) . (4 4 4 4 4 4 4 4 4))
+ ((1 . 32) . (8 8 8 8 8 8 8 8 8))))
+
+ ;; in 9 8 time:
+ ;; default: group at 3 8
+ ;; use beatGrouping for all except 32nd notes
+ ;; end beams with 32nd notes each 1 8 beat
+ (((9 . 8) end) .
+ ((* . (3 3 3))
+ ((1 . 32) . (4 4 4 4 4 4 4 4 4))))
+
+ ;; in 9 16 time
+ ;; default: group at 3 8
+ (((9 . 16) end) . ((* . (3 3 3))))
+
+ ;; in 12 4 time:
+ ;; default: group at 3 4
+ ;; end beams with 16th or 32nd notes each 1 4 beat
+ (((12 . 4) end) .
+ ((* . (3 3 3 3))
+ ((1 . 16) . (4 4 4 4 4 4 4 4 4 4 4 4 4))
+ ((12 . 4) . (8 8 8 8 8 8 8 8 8 8 8 8 8))))
+
+ ;; in 12 8 time:
+ ;; default: group at 3 8
+ ;; end beams with 32nd notes each 1 8 beat
+ (((12 . 8) end) .
+ ((* . (3 3 3 3))
+ ((1 . 32) . (4 4 4 4 4 4 4 4 4 4 4 4 4))))
+
+ ;; in 12 16 time:
+ ;; default: group at 3 16
+ (((12 . 16) end) . ((* . (3 3 3 3))))
+
+ ;; in 5 8 time:
+ ;; default: group (3 2)
+ (((5 . 8) end) . ((* . (3 2))))
+
+ ;; in 8 8 time:
+ ;; default: group (3 3 2)
+ (((8 . 8) end) . ((* . (3 3 2))))
+ )) ; end of alist definition
+
+;;; Functions for overriding beam settings
+;;;
+
+(define (overridden-property-alist context property setting value)
+ "Return an alist containing the current @{context} value of
+@code{property} overriden by @code{(setting . value)}. "
+ (cons (cons setting value) (ly:context-property context property)))
+
+(define-public (override-property-setting context property setting value)
+ "Like the C++ code that executes \\override, but without type
+checking. "
+ (ly:context-set-property!
+ context property
+ (overridden-property-alist context property setting value)))
+
+(define (revert-property-setting context property setting)
+ "Like the C++ code that executes \revert, but without type
+checking. "
+
+ (define (revert-member alist entry new)
+ "Return ALIST, with ENTRY removed. ALIST is not modified, instead
+a fresh copy of the list-head is made."
+ (cond
+ ((null? alist) new)
+ ((equal? (car alist) entry) (revert-member (cdr alist) entry new))
+ (else (revert-member (cdr alist) entry (cons (car alist) new)))))
+
+ (ly:context-set-property!
+ context property
+ (revert-member (ly:context-property context property) setting '())))
+
+(define-public (override-beam-setting
+ time-signature rule-type rule . rest)
+ "Override the beam settings for the context in @var{rest},
+for @var{time-signature} and @var{rule-type}, with the
+new rule alist @var{rule}. "
+ (define (make-setting c)
+ (let ((new-settings
+ (overridden-property-alist
+ c
+ 'beamSettings
+ (list time-signature rule-type)
+ rule)))
+ (ly:context-set-property! c 'beamSettings new-settings)))
+
+ (let ((music-to-export
+ (context-spec-music
+ (make-apply-context make-setting)
+ (if (and (pair? rest) (symbol? (car rest)))
+ (car rest)
+ 'Voice))))
+ (ly:export music-to-export)))
+
+(define-public (score-override-beam-setting
+ time-signature rule-type rule)
+ (override-beam-setting
+ time-signature rule-type rule 'Score))
+
+(define-public (revert-beam-setting
+ time-signature rule-type . rest)
+ (ly:export
+ (context-spec-music
+ (make-apply-context
+ (lambda (c)
+ (revert-property-setting
+ c
+ 'beamSettings
+ (list time-signature rule-type))))
+ (if (and (pair? rest) (symbol? (car rest)))
+ (car rest)
+ 'Voice))))
;;;; c++.scm -- implement Scheme frontends to C++ functions
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
;; moved list to end of lily.scm: then all type-predicates are
;; defined.
-(define type-p-name-alist '())
+(define type-p-name-alist '())
(define (match-predicate obj alist)
(if (null? alist)
;;;; define-context-properties.scm -- part of backend documentation
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;; Jan Nieuwenhuizen <janneke@gnu.org>
(procedure? type?)
(string? description)))
(throw 'init-format-error))
-
-
+
+
(if (not (equal? #f (object-property symbol 'translation-doc)))
(ly:error (_ "symbol ~S redefined" symbol)))
-
+
(set-object-property! symbol 'translation-type? type?)
(set-object-property! symbol 'translation-doc description)
(set! all-translation-properties (cons symbol all-translation-properties))
`(
;; TODO FIXME
-
+
(aDueText ,markup? "Text to print at a unisono passage.")
(alignAboveContext ,string? "Where to insert newly created context in
vertical alignment.")
starts or stops the auto beam.")
(autoBeaming ,boolean? "If set to true then beams are generated
automatically.")
- (autoBeamSettings ,list? "Specifies when automatically generated
-beams should begin and end. See @ruser{Setting automatic beam
-behavior} for more information.")
(autoCautionaries ,list? "List similar to @code{autoAccidentals},
but it controls cautionary accidentals rather than normal ones. Both
lists are tried, and the one giving the most accidentals wins. In
are still counted. Bar line generation will resume according to that
count if this property is unset.")
-
+
(barAlways ,boolean? "If set to true a bar line is drawn after
each note.")
(barCheckSynchronize ,boolean? "If true then reset
(bassStaffProperties ,list? "An alist of property settings to
apply for the down staff of @code{PianoStaff}. Used by
@code{\\autochange}.")
- (beatGrouping ,list? "A list of beatgroups, e.g., in 5/8 time
-@code{'(2 3)}.")
+ (beamSettings ,list? "Specifies when automatically generated
+beams should begin and end, as well as beam subdivision behavior.
+See @ruser{Setting automatic beam
+behavior} for more information.")
(beatLength ,ly:moment? "The length of one beat in this time
signature.")
(internalBarNumber ,integer? "Contains the current barnumber.
This property is used for internal timekeeping, among others by the
@code{Accidental_engraver}.")
-
+
(keepAliveInterfaces ,list? "A list of symbols, signifying grob
interfaces that are worth keeping a staff with @code{remove-empty} set
-around for.")
+around for.")
(keyAlterationOrder ,list? "An alist that defines in what order
alterations should be printed. The format is @code{(@var{step}
. @var{alter})}, where @var{step} is a number from 0 to@tie{}6 and
of the system/staff? Set to @code{SystemStartBrace},
@code{SystemStartBracket} or @code{SystemStartBar}.")
(systemStartDelimiterHierarchy ,pair? "A nested list, indicating
-the nesting of a start delimiters.")
+the nesting of a start delimiters.")
(tablatureFormat ,procedure? "A function formatting a tablature
(useBassFigureExtenders ,boolean? "Whether to use extender lines
for repeated bass figures.")
-
+
(verticallySpacedContexts ,list? "List of symbols, containing
context names whose vertical axis groups should be taken into account
for vertical spacing of systems.")
;;; \time
(define-extra-display-method ContextSpeccedMusic (expr parser)
"If `expr' is a time signature set, return \"\\time ...\".
-Otherwise, return #f."
- (with-music-match (expr (music
- 'ContextSpeccedMusic
- element (music
- 'ContextSpeccedMusic
- context-type 'Timing
- element (music
- 'SequentialMusic
- elements ((music
- 'PropertySet
- value ?num+den
- symbol 'timeSignatureFraction)
- (music
- 'PropertySet
- symbol 'beatLength)
- (music
- 'PropertySet
- symbol 'measureLength)
- (music
- 'PropertySet
- value ?grouping
- symbol 'beatGrouping))))))
- (if (null? ?grouping)
- (format #f "\\time ~a/~a~a" (car ?num+den) (cdr ?num+den) (new-line->lily-string))
- (format #f "#(set-time-signature ~a ~a '~s)~a"
- (car ?num+den) (cdr ?num+den) ?grouping (new-line->lily-string)))))
+Otherwise, return #f. Note: default grouping is not available."
+ (with-music-match
+ (expr (music
+ 'ContextSpeccedMusic
+ element (music
+ 'ContextSpeccedMusic
+ context-type 'Timing
+ element (music
+ 'SequentialMusic
+ elements ?elts))))
+ (and
+ (> (length ?elts) 2)
+ (with-music-match ((cadr ?elts)
+ (music 'PropertySet
+ symbol 'beatLength))
+ #t)
+ (with-music-match ((caddr ?elts)
+ (music 'PropertySet
+ symbol 'measureLength))
+ #t)
+ (with-music-match ((car ?elts)
+ (music 'PropertySet
+ value ?num+den
+ symbol 'timeSignatureFraction))
+ (if (eq? (length ?elts) 3)
+ (format
+ #f "\\time ~a/~a~a"
+ (car ?num+den) (cdr ?num+den) (new-line->lily-string))
+ (format
+ #f "#(set-time-signature ~a ~a '(<grouping-specifier>))~a"
+ (car ?num+den) (cdr ?num+den) (new-line->lily-string)))))))
;;; \bar
(define-extra-display-method ContextSpeccedMusic (expr parser)
"part-combiner.scm"
"autochange.scm"
"define-music-properties.scm"
+ "beam-settings.scm"
"auto-beam.scm"
"chord-name.scm"
;;;; music-functions.scm --
;;;;
;;;; source file of the GNU LilyPond music typesetter
-;;;;
+;;;;
;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
-;; (use-modules (ice-9 optargs))
+;; (use-modules (ice-9 optargs))
;;; ly:music-property with setter
;;; (ly:music-property my-music 'elements)
"
(let ((es (ly:music-property music 'elements))
(e (ly:music-property music 'element)))
- (set! (ly:music-property music 'elements)
+ (set! (ly:music-property music 'elements)
(map (lambda (y) (music-map function y)) es))
(if (ly:music? e)
(set! (ly:music-property music 'element)
(define-public (music-filter pred? music)
"Filter out music expressions that do not satisfy PRED."
-
+
(define (inner-music-filter pred? music)
"Recursive function."
(let* ((es (ly:music-property music 'elements))
"Display music, not done with music-map for clarity of presentation."
(display music)
- (display ": { ")
+ (display ": { ")
(let ((es (ly:music-property music 'elements))
(e (ly:music-property music 'element)))
(display (ly:music-mutable-properties music))
;;;
(define (markup-expression->make-markup markup-expression)
"Transform `markup-expression' into an equivalent, hopefuly readable, scheme expression.
-For instance,
+For instance,
\\markup \\bold \\italic hello
==>
(markup #:line (#:bold (#:italic (#:simple \"hello\"))))"
(markup-expression->make-markup obj))
(;; music expression
(ly:music? obj)
- `(make-music
+ `(make-music
',(ly:music-property obj 'name)
,@(apply append (map (lambda (prop)
`(',(car prop)
`(list ,@(map music->make-music obj)))
(;; a pair
(pair? obj)
- `(cons ,(music->make-music (car obj))
+ `(cons ,(music->make-music (car obj))
,(music->make-music (cdr obj))))
(else
obj)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-public (shift-one-duration-log music shift dot)
- " add SHIFT to duration-log of 'duration in music and optionally
- a dot to any note encountered. This scales the music up by a factor
+ " add SHIFT to duration-log of 'duration in music and optionally
+ a dot to any note encountered. This scales the music up by a factor
2^shift * (2 - (1/2)^dot)"
(let ((d (ly:music-property music 'duration)))
(if (ly:duration? d)
(if (= 0 -1)
(set! count (* 2 (quotient count 3))))
-
+
(shift-duration-log music (+ (if seq-arg? 1 0)
(ly:intlog2 count)) dot-shift)
-
+
(if seq-arg?
(ly:music-compress e (ly:make-moment (length (ly:music-property
e 'elements)) 1)))))))
-
-
+
+
(if (pair? es)
(set! (ly:music-property music 'elements)
(map unfold-repeats es)))
(Voice Script font-size -3)
(Voice Fingering font-size -8)
(Voice StringNumber font-size -8)))
-
+
(make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
- (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))))))
+ (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))))))
(define-safe-public (make-voice-props-revert)
(make-sequential-music
(define (ottava-modify context)
"Either reset middleCPosition to the stored original, or remember
old middleCPosition, add OCTAVATION to middleCPosition, and set
-OTTAVATION to `8va', or whatever appropriate."
+OTTAVATION to `8va', or whatever appropriate."
(if (number? (ly:context-property context 'middleCOffset))
(let ((where (ly:context-property-where-defined context 'middleCOffset)))
(ly:context-unset-property where 'middleCOffset)
(define-public (set-octavation ottavation)
(ly:export (make-ottava-set ottavation)))
-(define-public (make-time-signature-set num den . rest)
- "Set properties for time signature NUM/DEN. Rest can contain a list
-of beat groupings "
-
- (define (standard-beat-grouping num den)
+;;; Need to keep this definition for \time calls from parser
+(define-public (make-time-signature-set num den)
+ "Set properties for time signature NUM/DEN."
+ (make-beam-rule-time-signature-set num den '()))
- "Some standard subdivisions for time signatures."
- (let*
- ((key (cons num den))
- (entry (assoc key '(
- ; Simple time signatures
- (( 3 . 8) . (3))
- (( 4 . 8) . (2 2))
- ; Compound time signatures
- (( 6 . 4) . (3 3))
- (( 6 . 8) . (3 3))
- (( 6 . 16) . (3 3))
- (( 9 . 4) . (3 3 3))
- (( 9 . 8) . (3 3 3))
- (( 9 . 16) . (3 3 3))
- ((12 . 4) . (3 3 3 3))
- ((12 . 8) . (3 3 3 3))
- ((12 . 16) . (3 3 3 3))
- ; Some common irregular time signatures
- (( 5 . 8) . (3 2))
- (( 8 . 8) . (3 3 2))
- ))))
-
- (if entry
- (cdr entry)
- '())))
+;;; Used for calls that include beat-grouping setting
+(define-public (set-time-signature num den . rest)
+ "Set properties for time signature @var{num/den}.
+If @var{rest} is present, it is used to make a default
+@code{beamSetting} rule."
+ (ly:export (apply make-beam-rule-time-signature-set
+ (list num den rest))))
+
+(define-public (make-beam-rule-time-signature-set num den rest)
+ "Implement settings for new time signature. Can be
+called from either make-time-signature-set (used by \time
+in parser) or set-time-signature (called from scheme code
+included in .ly file."
+
+ (define (make-default-beaming-rule context)
+ (override-property-setting
+ context
+ 'beamSettings
+ (list (cons num den) 'end)
+ (list (cons '* (car rest)))))
(let* ((set1 (make-property-set 'timeSignatureFraction (cons num den)))
(beat (ly:make-moment 1 den))
(len (ly:make-moment num den))
(set2 (make-property-set 'beatLength beat))
(set3 (make-property-set 'measureLength len))
- (set4 (make-property-set 'beatGrouping (if (pair? rest)
- (car rest)
- (standard-beat-grouping num den))))
- (basic (list set1 set2 set3 set4)))
+ (beaming-rule
+ (if (null? rest)
+ '()
+ (list (make-apply-context make-default-beaming-rule))))
+ (output (cons* set1 set2 set3 beaming-rule)))
(descend-to-context
- (context-spec-music (make-sequential-music basic) 'Timing) 'Score)))
+ (context-spec-music
+ (make-sequential-music output)
+ 'Timing)
+ 'Score)))
(define-public (make-mark-set label)
- "Make the music for the \\mark command."
+ "Make the music for the \\mark command."
(let* ((set (if (integer? label)
(context-spec-music (make-property-set 'rehearsalMark label)
'Score)
(set! (ly:music-property ev 'label) label)
ch))))
-(define-public (set-time-signature num den . rest)
- (ly:export (apply make-time-signature-set `(,num ,den . ,rest))))
-
(define-safe-public (make-articulation name)
(make-music 'ArticulationEvent
'articulation-type name))
'span-direction span-dir))
(define-public (set-mus-properties! m alist)
- "Set all of ALIST as properties of M."
+ "Set all of ALIST as properties of M."
(if (pair? alist)
(begin
(set! (ly:music-property m (caar alist)) (cdar alist))
(define-public (empty-music)
(ly:export (make-music 'Music)))
-;; Make a function that checks score element for being of a specific type.
+;; Make a function that checks score element for being of a specific type.
(define-public (make-type-checker symbol)
(lambda (elt)
- ;;(display symbol)
- ;;(eq? #t (ly:grob-property elt symbol))
(not (eq? #f (memq symbol (ly:grob-property elt 'interfaces))))))
(define-public ((outputproperty-compatibility func sym val) grob g-context ao-context)
;;
(define-public (smart-bar-check n)
- "Make a bar check that checks for a specific bar number.
+ "Make a bar check that checks for a specific bar number.
"
(let ((m (make-music 'ApplyContext)))
(define (checker tr)
(define (delete-prop context)
(let* ((where (ly:context-property-where-defined context 'graceSettings))
(current (ly:context-property where 'graceSettings))
- (prop-settings (filter
+ (prop-settings (filter
(lambda(x) (sym-grob-context? x sym grob context-name))
- current))
+ current))
(new-settings current))
- (for-each (lambda(x)
+ (for-each (lambda(x)
(set! new-settings (delete x new-settings)))
prop-settings)
(ly:context-set-property! where 'graceSettings new-settings)))
(define-public (cue-substitute quote-music)
"Must happen after quote-substitute."
-
+
(if (vector? (ly:music-property quote-music 'quoted-events))
(let* ((dir (ly:music-property quote-music 'quoted-voice-direction))
(main-voice (if (eq? 1 dir) 1 0))
(return-value quote-music))
(if (or (eq? 1 dir) (eq? -1 dir))
-
+
;; if we have stem dirs, change both quoted and main music
;; to have opposite stems.
(begin
(hash-ref quote-tab quoted-name #f)
#f)))
-
+
(if (string? quoted-name)
(if (vector? quoted-vector)
(begin
(if (and (ly:music? m)
(eq? (ly:music-property m 'error-found) #t))
(set! found #t)))
-
+
(for-each signal (ly:music-property music 'elements))
(signal (ly:music-property music 'element))
(lambda (music parser)
(music-map (quote-substitute (ly:parser-lookup parser 'musicQuotes)) music))
-
+
;; switch-on-debugging
(lambda (x parser) (music-map cue-substitute x))
-
+
(lambda (x parser)
(skip-as-needed x parser)
)))
;;;;;;;;;;;;;;;;;
;; lyrics
-(define (apply-durations lyric-music durations)
+(define (apply-durations lyric-music durations)
(define (apply-duration music)
(if (and (not (equal? (ly:music-length music) ZERO-MOMENT))
(ly:duration? (ly:music-property music 'duration)))
(begin
(set! (ly:music-property music 'duration) (car durations))
(set! durations (cdr durations)))))
-
+
(music-map apply-duration lyric-music))
pcontext))
;; same as modern, but cautionary accidentals are printed for all sharp or flat
- ;; tones specified by the key signature.
+ ;; tones specified by the key signature.
((equal? style 'teaching)
(set-accidentals-properties #f
`(Staff ,(make-accidental-rule 'same-octave 0))
`(Staff ,(make-accidental-rule 'same-octave 1)
,teaching-accidental-rule)
context))
-
+
;; do not set localKeySignature when a note alterated differently from
;; localKeySignature is found.
;; Causes accidentals to be printed at every note instead of
(define-public (mmrest-of-length mus)
"Create a mmrest of exactly the same length as MUS."
-
+
(let* ((skip
(make-multi-measure-rest
(ly:make-duration 0 0) '())))
(if (pair? evs)
(ly:music-property (car evs) 'pitch)
#f)))
-
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-public (extract-named-music music music-name)
(extract-named-music elt music-name)
(if (null? elts)
'()
- (map (lambda(x)
+ (map (lambda(x)
(extract-named-music x music-name ))
elts)))))
'())))