scorify-music mit einstellbarer Staffsize, geht das? Ja, es geht

Begonnen von Manuela, Freitag, 15. Mai 2026, 11:55

Vorheriges Thema - Nächstes Thema

Manuela

Bei einem score kann man mit \layout die Staffsize einstellen. Geht das mit der Funktion scorify-music analog, und wenn ja, wie? Die Zeile mit der Größenangabe ist auskommentiert, da sie eine Fehlermeldung verursacht.

\version "2.26.0"

mus = \relative {
  c''4 c c c
}

\paper {
  tagline = ##f
}

meinscore =
%Musikfunktion für transponierbaren Score
#(define-music-function (m p)
   (ly:music? ly:pitch?)
   #{
     <<
       \new Staff
       <<
         \new Staff="up"
         <<
           \new Voice
           {
             \voiceOne
             \key $p \major
             \transpose c $p $m
           }
           \new Voice
           {
             \voiceTwo
             \transpose c' $p $m
           }
         >>
       >>
     >>
   #}
   )

\bookpart {
  #(for-each
    (lambda (p)
      (add-score
       (scorify-music (meinscore mus p)
                      ;(layout-set-staff-size 15)
                      )))
    (music-pitches #{ { c } #}))
}
Danke für eure Hilfe
viele Grüße
-- Manuela

harm6

Hallo Manuela,

zu hoffen `scorify-music` erlaube einfach zusätzliche Argumente ist doch etwas überoptimistisch. ;)
Tatsächlich, überführt `scorify-music` die music ins score-Format, sonst nichts.
Wenn du einen score-header oder ein score-layout/midi haben willst so musst du das gesondert einführen.
Für layout/midi haben wir `ly:score-add-output-def!`

Allerdings ist dein Wunsch #(layout-set-staff-size ...) einzufügen insoweit problematisch, als das dieser Befehl folgende Variablen modifiziert:
'text-font-size, 'output-scale, 'staff-height, 'staff-space, 'line-thickness und 'blot-diameter
Das in scheme nachzustellen ist schon möglich, einfacher ist aber LilyPond-Syntax zu verwenden.

Führt zu:

\version "2.26.0"

mus = \relative {
  c''4 c c c
}

meinScore =
%Musikfunktion für transponierbaren Score
#(define-music-function (m p)
   (ly:music? ly:pitch?)
   #{
      \new Staff
         <<
           \new Voice
           {
             \voiceOne
             \key $p \major
             \transpose c $p $m
           }
           \new Voice
           {
             \voiceTwo
             \transpose c' $p $m
           }
         >>
   #}
   )

\bookpart {
  #(for-each
    (lambda (p)
      (let* ((sc (scorify-music (meinScore mus p))))
        (ly:score-add-output-def!
          sc
          #{ \layout { #(layout-set-staff-size 15) } #})
        (add-score sc)))
    (music-pitches #{ { c } #}))
}

Ich persönlich verwende `layout-set-staff-size` nie, ist mir zu buggy, stattdessen `magnifyStaff` oder `staffSize` aus dem wiki.

HTH,
  Harm



Manuela

#2
Danke Harm für deine rasche Antwort. Ich werde es mit deiner Lösung probieren, meine Scores sind nicht so überkompliziert, hoffentlich wirken sich die Bugs daher nicht aus.

Update: funktioniert zumindest für meine Zwecke bestens, nochmals herzlichen Dank.
Danke für eure Hilfe
viele Grüße
-- Manuela