Wechseltaktart

Begonnen von chf, Mittwoch, 11. August 2021, 19:56

« vorheriges - nächstes »

chf

Liebe Freunde,


\version "2.22.0"
#(define ((custom-time-signature one two three four) grob)
   (grob-interpret-markup grob
                          (markup #:override '(baseline-skip . 0) #:number
                                  (#:line ((#:column (one two))
                                           (#:column (three four))
                                           )))))
\relative {
\time 2/4
g2
\override Score.TimeSignature.stencil = #(custom-time-signature "3" "4" "2" "4" )

\repeat volta 2 {\time 3/4 e'4 \override Score.TimeSignature.stencil = ##f f g \time 2/4 g f e d8 f}
\alternative {{\time 3/4 g4 e2} {\time 2/4 g4 e}}
}


wieder einmal weiß ich mir keinen Rat...
In dieser Kurzfassung ist alles gut, doch:
im Gesamtkontext werden zwar die Takte richtig dargestellt, aber die Taktart erscheint nicht.
Wo liegt der Hund begraben?

Gruß Christa

Arnold

Hallo Christa,

ohne es probiert zu haben:
das liegt wohl am Konzept (design philosophy des Programms), wann die override-Befehle ausgeführt werden (bzw. ihre Wirkung zeigen) - welches von unserer gewohnten Text/Sprach-Syntax abweicht.

Ich stelle mir das so vor, daß alle »Anweisungen« (von NoteEvent bis Override-Event) für einen Zeitschritt (z. Bsp. eine Halbe nach Beginn) erst gesammelt werden, und dann (neu sortiert) abgearbeitet werden.
Es ist also unerheblich, in welcher Reihenfolge solche Kommandos wie \time, \key, \override, ... hintereinander stehen.

In deinem Beispiel werden also das override von Zeile 11, der Start der Wiederholung, das Time von Zeile 13 und das nächste ovverride in Zeile 13 »konsolidert« ausgeführt, womit das override von Zeile 13 dasjenige von Zeile 11 überschreibt!

Ich nehme mal an, wenn Du in Zeile 11 den Stencil auf ##f setzen würdest, in Zeile 13 den Stencil einmalig auf deine Kombinationsfunktion (damit wird der Dauerzustand nicht mehr überschrieben), würde das Ergebnis passen.
Logisch identisch wäre das (fast) damit, einfach nur ein \once vor dem Override in Zeile 11 zu setzen, aber dann erkennt man die Absicht dahinter nicht mehr so gut.

% ...
\override Score.TimeSignature.stencil = ##f

\repeat volta 2 {
  \once \override Score.TimeSignature.stencil = #(custom-time-signature "3" "4" "2" "4" )
  \time 3/4
  e'4 f g
  \time 2/4
  g4 f
  e4 d8 f
}
%...


Arnold

chf

Danke, Arnold!

Nach einer Nacht Schlaf kam die Erkenntnis, dass ich einen falschen Eintrag im layout übersehen hatte...
Betriebsblindheit oder Alter?