Größe der Staffs verändern

Begonnen von hotte, Samstag, 27. März 2021, 19:48

« vorheriges - nächstes »

hotte

Liebe Leute,
neues Projekt - neue Schwierigkeiten.
Ich habe ein Score geschrieben mit drei Systemen, wobei das oberste System Normalgröße haben soll und die beiden unteren verkleinert dargestellt werden müssen.
Mein Code funktioniert leider nicht.

\version "2.18.2"
\language "deutsch"

\score {
  <<
    \new Staff {
      \relative c'' { c4 c c c }
    }
    \new Staff {
      <<
        \new Voice = "Sop" {
          \set fontSize = #-3
          \override StaffSymbol.staff-space = #(magstep -3)
          \override StaffSymbol.thickness = #(magstep -3)
          \relative c'' { g4 g g g }
        }
        \new Lyrics \lyricsto "Sop" {
          \set fontSize = #-3
          { A B C D }
        }
      >>
    }
    \new Staff {
      \set fontSize = #-3
      \override StaffSymbol.staff-space = #(magstep -3)
      \override StaffSymbol.thickness = #(magstep -3)
      \clef "bass"
      \relative c { c4 c c c }
    }
  >>
}


Die FontSize-Funktion klappt aber die beiden magstep-Befehle nicht.
Wahrscheinlich habe ich nur einen Knick im Gehirn, aber ich komme nach sehr langem suchen nicht auf den Fehler und bin mal wieder auf Hilfe angewiesen.
Danke und viele Grüße
hotte

harm6

Du mußt die grobs im richtigen Context ansprechen.
StaffSymbol lebt natürlich im Staff.
Für fontSize gilt ähnliches, Du willst sicherlich auch die grobs auf Staff-level verändern

Dazu gibt es zwei Möglichkeiten, die hier weniger gute ist:
  \set Staff.fontSize = #-3
  \override Staff.StaffSymbol.staff-space = #(magstep -3)
  \override Staff.StaffSymbol.thickness = #(magstep -3)
weniger gut, weil Du den Staff ja schon von Anfang an verändert haben möchtest. So wie der override momentan platziert ist wird aber erst der Staff geschaffen und danach verändert.

Hier kann in seltenen Fällen auch issue 34 ins Spiel kommen:

<<
  \new Staff {
    \set Staff.fontSize = #-3
    \override Staff.StaffSymbol.staff-space = #(magstep -3)
    \override Staff.StaffSymbol.thickness = #(magstep -3)
    \relative c { c4 c c c }
  }
  \new Staff {
    \relative c { \grace b8 c4 c c c }
  }
>>


Besser ist es in solchen Fällen die Setzungen in den \with-Block des Staff zu setzen, dann sind sie direkt im richtigen Context, er wird schon so geschaffen und keine Gefahr von issue 34 (zumindest nicht durch diese property-Setzungen) und context-properties brauchen kein \set ...

Auch mache Dir Gedanken über die Klammern, die haben doch eine Bedeutung, setze sie nicht willkürlich.
Drüberhinaus sollte man nur dann einen neuen Lyrics-Context aus einem Voice-Context in einem Staff-Context initiieren, wenn es wirklich nötig ist, zumindest in diesem minimal ist es das nicht. Übrigens auch sonst gaaaanz selten.

Also:

\version "2.18.2"

\language "deutsch"

\score {
  <<
    \new Staff
      \relative c'' { c4 c c c }
     
    \new Staff
      \with {
        fontSize = #-3
        \override StaffSymbol.staff-space = #(magstep -3)
        \override StaffSymbol.thickness = #(magstep -3)
      }
      \new Voice = "Sop"
        \relative c'' { g4 g g g }
         
    \new Lyrics
      \with {
        fontSize = #-6
      }
      \lyricsto "Sop" { A B C D }

    \new Staff
      \with {
        fontSize = #-3
        \override StaffSymbol.staff-space = #(magstep -3)
        \override StaffSymbol.thickness = #(magstep -3)
      }
      \relative c { \clef "bass" c4 c c c }
  >>
}


Ob fontSize im Lyrics-Context die beste Wahl ist weiß ich ehrlich gesagt nicht. Ich geh idR über LyricText.font-size

Und Du solltest wirklich auf die neueste stable upgraden, 2.18.2 ist bereits zwei Generationen zurück...

Gruß,
  Harm

hotte

Danke Harm!

Das sieht auch viel einfacher aus und funktioniert natürlich einwandfrei.
Warum denkt man immer zu kompliziert als es sein muss?
Manchmal mache ich mir das alles schwerer als es sein muss.

Herzliche Grüße

hotte