Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: harm6 am Mittwoch, 8. Juni 2011, 02:08
-
Hallo zusammen,
nachdem ich gerade das upgrade gemacht habe bin ich auf folgendes Problem gestoßen: Ich finde keinen Befehl mehr, der die Bebalkung auch beim Taktwechsel von 2/2 zu 3/2 auf die Viertel begrenzt. Die Befehle \set Timing.baseMoment = #(ly:make-moment 1 4) und \set Timing.beatStructure = #'(1 1 1 1) wirken nur bis zum Taktwechsel und der alte Befehl \set Staff.beatLength = #(ly:make-moment 1 4) wirkt nicht mehr !!
\version "2.14.0"
\relative c' {
\time 2/2
\set Timing.baseMoment = #(ly:make-moment 1 4)
\set Timing.beatStructure = #'(1 1 1 1)
%\set Staff.beatLength = #(ly:make-moment 1 4) % funktioniert nicht mehr !!
a8 a a a a a a a
\time 3/2
a a a a a a a a a a a a
\break
\time 2/2
a8^\markup { "gewünscht!!"} [a] a a a [a] a a
\time 3/2
a a a [a] a a a [a] a a a [a]
}
Wie kann man das regeln ohne bei jedem Taktwechsel neu definieren zu müssen?
Gruß,
Harm
P.S. Ich finde übrigens auch keine html-big-page der NR für 2.14.0 !
-
Hallo Harm,
zumindest mit der NR kann ich dir helfen:
http://lilypond.org/doc/v2.14/Documentation/notation-big-page.html
http://lilypond.org/doc/v2.14/Documentation/notation-big-page.de.html
bzw. im entpackten tar-Archiv (http://lilypond.org/download/binaries/documentation/lilypond-2.14.0-1.documentation.tar.bz2) unter /lilypond-2.14.0-1.documentation/share/doc/lilypond/html/offline-root/Documentation/notation-big-page.html
Und siehe: bei der Suche nach beatLength stößt man auf den lapidaren Hinweis:
[…] is deprecated as of 2.13.5 and will be removed in 2.14
Es muss also anders gehen :-\
Grüße, Robert
-
Hallo Robert,
vielen, vielen Dank für die Hinweise auf big-page-Dateien.
Ich muß gestehen, daß ich etwas genervt war als ich 5 min nach erfolgreichem upgrade auf obiges Problem stieß und dann keine big-page finden konnte. Normalerweise kann man sich ausgehend von http://lilypond.org/manuals.html (http://lilypond.org/manuals.html) zur gewünschten big-page-Datei durchklicken (bei den Internals klappt das ja auch!!). Ich habe heute in entspannterem Zustand noch mal eine google-Suche gestartet mit <lilypond 2.14.0 big-page> als Eingabe ... ohne Erfolg!
Da ich sie nun habe ist das Arbeiten sehr viel leichter geworden !
Aber jetzt zum eigentlichen Problem:
Das beste was mir einfiel war das Erscheinungsbild einer jeden Taktart zu definieren und auszulagern:
\version "2.14.0"
timeSignaturSettings = {
\overrideTimeSignatureSettings
#'(2 . 2) % timeSignatureFraction
#'(1 . 4) % baseMomentFraction
#'(1 1 1 1) % beatStructure
#'() % beamExceptions
\overrideTimeSignatureSettings
#'(3 . 2) % timeSignatureFraction
#'(1 . 4) % baseMomentFraction
#'(1 1 1 1 1 1) % beatStructure
#'() % beamExceptions
}
\new Voice
\relative c' {
\timeSignaturSettings
\time 2/2
a8 a a a a a a a
\time 3/2
a a a a a a a a a a a a
\revertTimeSignatureSettings #'(2 . 2)
\time 2/2
a a a a a a a a
}
Aber gegenüber dem alten \set Staff.beatLength = #(ly:make-moment 1 4) aus 2.12.3 ist das ein Mordsaufwand, den ich gerne vermeiden würde !!
Grüße,
Harm
P.S. Wenn ich versuche ein 2.12.3-file mit \set Staff.beatLength = #(ly:make-moment 1 4) zu konvertieren, erscheint im log:
Applying conversion: 2.13.0, 2.13.1, 2.13.4, 2.13.10, 2.13.16, 2.13.18, 2.13.20, 2.13.29,
Not smart enough to convert beatLength. Use baseMoment and beatStructure.
Please refer to the manual for details, and update manually.2.13.31, 2.13.36, 2.13.39, 2.13.40, 2.13.42, 2.13.44, 2.13.46, 2.13.48, 2.13.51, 2.14.0
Das hat nach dem ersten Amusement durchaus einen großen Nervfaktor. >:(
-
Hallo Harm!
Normalerweise kann man sich ausgehend von http://lilypond.org/manuals.html zur gewünschten big-page-Datei durchklicken …
Hast du den Link details of Notation (http://lilypond.org/notation.html) rechts neben „syntax reference“ bemerkt? Dort findest du alle drei Varianten (split/big/PDF) ;)
Übrigens war ich gestern recht irritiert, woher du Lily 2.14 hast! Ich habe meine gebookmarkte Lily-Seite wiederholt aufgerufen, den Cache geleert usw. usf. – es wollte partout kein Hinweis auf die neue Stable auftauchen ??? Und nach einigem Suchen musste ich feststellen, dass mein Lesezeichen auf den URL http://lilypond.org/web/ verwies, auf den beim Anlegen des Lesezeichens umgeleitet wurde! Falls also wer anders ebenfalls sein Bookmark vor einigen Jahren angelegt hat: der neue (hoffentlich dauerhafte) Einstieg ist http://lilypond.org/!
Übrigens kann ich nur empfehlen, die Dokumentation komplett runterzuladen. Wenn man mal ohne Breitband- oder auch ganz ohne Verbindung dasitzt, hat man eine lokale Kopie.
Sorry, dass ich zum eigentlichen Problem noch nichts beisteuern kann – ich muss mich erstmal mit 2.14 beschäftigen …
Viele Grüße, Robert
-
Hallo Robert,
den details-of-Notation-Link habe ich tatsächlich vorher noch nie wahrgenommen! :-[
Nochmals ein großes Dankeschön für den Hinweis.
Daß 2.14.0 veröffentlicht ist, habe ich gemerkt als ich auf Old Nabble unterwegs war und dort Anfragen mit dieser Version kamen. Dann habe ich eben danach gesucht, ein Lesezeichen hatte ich mir nie gesetzt. ;)
Noch eine etwas seltsame Information zum (erweiterten) Themenkreis:
Wenn ich versuche ein file mit dem alten Befehl #(score-override-auto-beam-setting '(end 1 8 4 4) 1 4) zu konvertieren erscheint im log:
Not smart enough to convert override-auto-beam-setting.
Autobeam settings are now overriden with
\overrideBeamSettings.
Aber soweit ich weiß gibts den Befehl \overrideBeamSettings in 2.14.0 nicht (ich habe ihn zumindest nirgendwo in der Doku gefunden. Nur in Manuals zu 2.13.x taucht er mal auf!!)
Gruß,
Harm
-
Hallo Harm,
folgende Anmerkung in der NR gibt zu Denken:
When the time signature is changed, default values of Timing.baseMoment, Timing.beatStructure, and Timing.beamExceptions are set. Setting the time signature will reset the automatic beaming settings for the Timing context to the default behavior.
Dies führt uns dazu, die beamExceptions aus scm/time-signature-settings.scm für 3/2-Takte überschreiben zu müssen:
\overrideTimeSignatureSettings
#'(3 . 2) % timeSignatureFraction
#'(1 . 2) % baseMomentFraction
#'(2 2 2) % beatStructure
#'(
(end . ;entry for end of beams
( ;start of alist of end points
((1 . 32) . (8 8 8 8 8 8)) ;from time-signature-settings.scm
((1 . 8) . (2 2 2 2 2 2)) ;new rule for 1/8 beams -- end each 1/4
))) % beamExceptions
Das dürfte dein Problem lösen.
Übrigens gab es schon immer Huddeleien mit convert-ly … Da wird noch viel nachgebessert werden ;)
Viele Grüße, Robert
-
Ach so: die 2/2-Takte sind ja auch betroffen:
\version "2.14.0"
\relative c' {
\time 4/4
\overrideTimeSignatureSettings
#'(3 . 2) % timeSignatureFraction
#'(1 . 2) % baseMomentFraction
#'(2 2 2) % beatStructure
#'(
(end . ;entry for end of beams
( ;start of alist of end points
((1 . 32) . (8 8 8 8 8 8)) ;from time-signature-settings.scm
((1 . 8) . (2 2 2 2 2 2)) ;new rule for 1/8 beams -- end each 1/4
))) % beamExceptions
\overrideTimeSignatureSettings
#'(2 . 2) % timeSignatureFraction
#'(1 . 4) % baseMomentFraction
#'(2 2) % beatStructure
#'(
(end . ;entry for end of beams
( ;start of alist of end points
((1 . 32) . (8 8 8 8)) ;from time-signature-settings.scm
((1 . 8) . (2 2 2 2)) ;new rule for 1/8 beams -- end each 1/4
))) % beamExceptions
\time 2/2
\repeat unfold 8 { a8 }
\time 3/2
\repeat unfold 12 { a8 }
\break
\time 2/2
\repeat unfold 8 { a8 }
\time 3/2
\repeat unfold 12 { a8 }
}
Wichtig ist, dass eine beliebige Taktart (im Codebeispiel 4/4, aber es ginge auch mit 3/128 o.ä.) bereits aufgerufen sein muss, um den TimeSignature-Context anzulegen. Anschließend können alle Ausnahmen definiert werden.
Viele Grüße, Robert
-
Ich nochmal … sehe gerade, dass du mit \overrideTimeSignatureSettings ja schon zugange warst. Aber was genau willst du, wenn du die Settings für 2/2-Takte gleich wieder widerrufst?
-
Hallo Robert,
vielen Dank für Deine Hilfe! Hier noch ein paar Anmerkungen:
Aber was genau willst du, wenn du die Settings für 2/2-Takte gleich wieder widerrufst?
Der Widerruf steht einzig und allein da, weil ich mir und anderen verdeutlichen will, wie man \overrideTimeSignatureSettings wieder abstellt.
Wichtig ist, dass eine beliebige Taktart (im Codebeispiel 4/4, aber es ginge auch mit 3/128 o.ä.) bereits aufgerufen sein muss, um den TimeSignature-Context anzulegen. Anschließend können alle Ausnahmen definiert werden.
Das ist nicht ganz vollständig! Es geht auch in dem man einen Context explizit anlegt z.B. \new Voice { ... } (siehe Code-Beispiel).
\version "2.14.0"
\new Voice {
\relative c' {
\overrideTimeSignatureSettings
#'(3 . 2) % timeSignatureFraction
#'(1 . 2) % baseMomentFraction
#'(2 2 2) % beatStructure
#'(
(end . ;entry for end of beams
( ;start of alist of end points
((1 . 32) . (8 8 8 8 8 8)) ;from time-signature-settings.scm
((1 . 8) . (2 2 2 2 2 2)) ;new rule for 1/8 beams -- end each 1/4
))) % beamExceptions
\overrideTimeSignatureSettings
#'(2 . 2) % timeSignatureFraction
#'(1 . 4) % baseMomentFraction
#'(2 2) % beatStructure
#'(
(end . ;entry for end of beams
( ;start of alist of end points
((1 . 32) . (8 8 8 8)) ;from time-signature-settings.scm
((1 . 8) . (2 2 2 2)) ;new rule for 1/8 beams -- end each 1/4
))) % beamExceptions
\time 2/2
\repeat unfold 8 { a8 }
\time 3/2
\repeat unfold 12 { a8 }
\break
\time 2/2
\repeat unfold 8 { a8 }
\time 3/2
\repeat unfold 12 { a8 }
}
}
Ansonsten fällt mir nichts mehr ein um dem Problem beizukommen. Und obwohl es wirklich schön ist zu sehen was man mit \overrideTimeSignatureSettings so alles anstellen kann, finde ich es durchaus bedauerlich, daß man bis zu 20 Code-Zeilen braucht um ein Ergebnis zu erzielen welches in 2.12.3 mit einer Zeile erreichbar war.
Grüße,
Harm
-
Hallo Harm!
Es geht auch in dem man einen Context explizit anlegt z.B. \new Voice { ... }
Aha! Das ist ja meist der Fall, wenn man \score { ... } definiert. In Testdateien mache ich das aber nicht, deswegen fiel’s mir auf.
Der Widerruf steht einzig und allein da, weil ich mir und anderen verdeutlichen will, wie man \overrideTimeSignatureSettings wieder abstellt.
Okay.
Und obwohl es wirklich schön ist zu sehen was man mit \overrideTimeSignatureSettings so alles anstellen kann, finde ich es durchaus bedauerlich, daß man bis zu 20 Code-Zeilen braucht um ein Ergebnis zu erzielen welches in 2.12.3 mit einer Zeile erreichbar war.
Bedauerlich, ja. Viele Sachen sind dafür flexibler geworden, wofür man eben etwas mehr Code braucht.
Viele Grüße, Robert