Ganztakpausen als Balken

Begonnen von chf, Donnerstag, 27. Februar 2025, 14:27

« vorheriges - nächstes »

chf

Liebe Freunde,


{
  \override MultiMeasureRestNumber.stencil =
  #(lambda (grob)
    (let* ((expand-limit (ly:grob-property grob 'expand-limit 10))
           (txt (ly:grob-property grob 'text))
           (txt-number (string->number txt)))
      (if (and (> txt-number 1) (<= txt-number expand-limit))
          (begin
            (ly:grob-set-property! (ly:grob-parent grob Y) 'transparent #t)
            (ly:grob-set-property! grob 'Y-offset 2.45)
            (ly:stencil-combine-at-edge
              (ly:stencil-aligned-to
                (ly:text-interface::print grob)
                X
                CENTER)
              Y
              DOWN
              (ly:stencil-aligned-to
                (grob-interpret-markup grob
                  #{
                      \markup
                        \override #'(multi-measure-rest-number . #f)
                        \override #'(multi-measure-rest . #t)
                        \rest #txt
                  #})
                X
                CENTER)
              1.45))
          (ly:text-interface::print grob))))

\compressEmptyMeasures
 
R1*11 }
Funktioniert wunderbar ...

Leider bekomme ich in bei meinen Anwendungsversuchen aber eine Fehlermeldung, die ich nicht deuten kann:

In procedure string->number in expression (string->number txt):
Wrong type argument in position 1 (expecting string): (#<procedure line-markup (layout props args)> ((#<procedure override-markup (layout props new-prop arg)> (baseline-skip . 2.5) (#<procedure center-column-markup (layout props args)> ((#<procedure line-markup (layout props args)> (#)) (#<procedure line-markup (layout props args)> (#)))))))


Gibt es Abhilfe?
Oder eine andere Möglichkeit, den Balken zu erzwingen?

Gruß Christa

Manuela

Wie schaut dein Anwendungsbeispiel aus? Und was soll \override MultiMeasureRestNumber.stencil bewirken, ich sehe keinen Unterschied im Ergebnis, wenn ich den Override weglasse.
Danke für eure Hilfe
viele Grüße
-- Manuela

Lilysetter

#2
\version "2.25.6"{
  \override MultiMeasureRest.expand-limit = #0
  \compressEmptyMeasures
  R1*12 R1*11 R1*10 R1*9 R1*8 R1*7 R1*6 R1*5 R1*4 R1*3 R1*2  R1*1 R1
  }
Ergebnis siehe Anhang.
Default ist, dass zwischen 2 und 10 Takten Kirchenpausen gedruckt werden, ab 11 Balkenpausen.
Steht alles im Handbuch: "Die Erscheinung von Pausentakten ¨andern".

Der von Christa gepostete Code bringt folgenden Fehler, wenn die Pausenlänge <= 10 (Defaultwert) ist (vermutlich weil dann Kirchenpausen gedruckt werden sollten):
C:/ProgramFiles/lily2256/share/lilypond/2.25.6/ly/init.ly:66:2: Fehler: falscher Typ für Argument 1; duration erwartet, "10" gefunden
#
 (let ((book-handler (if (defined? 'default-toplevel-book-handler)
C:/ProgramFiles/lily2256/share/lilypond/2.25.6/ly/init.ly:66:2: Fehler: Guile signaled an error for the expression beginning here
#
 (let ((book-handler (if (defined? 'default-toplevel-book-handler)
In procedure reverse!: Wrong type argument in position 1: ("10" . #f)

chf

Danke für eure Antworten!

An Lilysetter:

Dein code funktioniert offensichtlich auch in \version ""2.22.0".
Wunderbar!