Autor Thema: Echte Verkleinerung einer Systemgruppe  (Gelesen 3369 mal)

Matti

  • Member
Echte Verkleinerung einer Systemgruppe
« am: Donnerstag, 25. März 2010, 06:43 »
Guten Tag!

Nach langem Wälzen der Nachschlagewerke möchte ich hier mal wieder eine Frage stellen.

Habe ein Lied für Chor (Chorsystem mit 4 Systemen für SATB) und Klavier.

Möchte der Pianistin aus Platz- und aus Lesbarkeitsgründen eine Version machen, wo der Chor kleiner gedruckt ist als das Klavier.

Habe nach einem ähnlichen Befehl wie dem übergeordneten #(set-global-staff-size xy) gesucht, womit ich die Größe von bestimmten Systemen oder Systemgruppen ändern kann. Bin leider nicht fündig geworden.

Bei den Schnippseln fand ich
\with { fontSize = #-3  \override StaffSymbol #'staff-space = #(magstep -3) } ,
was prinzipiell funktioniert.
Aber leider wird hierbei vertikal kein Platz eingespart.
Dann müßte ich jetzt weitersuchen, wie man Systemabstände beeinflußt...

Gibt es einen einfacheren Weg?

Viele Grüße

Matti


Radler

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #1 am: Donnerstag, 25. März 2010, 09:34 »
Ich arbeite immer mit "stichnoten"
smaller =
{
\set fontSize = #-3
\override Stem #'length-fraction = #0.8
\override Beam #'thickness = #0.384
\override Beam #'length-fraction = #0.8
}
stichnoten =
{
\set Voice.midiInstrument = "glockenspiel"
\smaller
%\stemDown
%\stemNeutral
%\stemUp
      \set Score.skipBars = ##t
}
[...]
\new Voice \relative c''
{
\stichnoten
\Msopran
}
\new Voice \relative c''
{
\stichnoten
\Malt
}
[...]


Hilft Dir das?

Grüße von Radler

RobUr

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #2 am: Donnerstag, 25. März 2010, 10:35 »
Die Stichnoten-Variante setzt lediglich die Notenköpfe/-hälse/-fähnchen usw. kleiner/kürzer, beeinflusst aber weder Linienabstand noch Zeilenhöhe.

Der Ansatz per \with { fontSize = #-3  \override StaffSymbol #'staff-space = #(magstep -3) }
ist gut; jetzt kann man diese Anweisung um \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
ergänzen, um die vertikale Ausdehnung der betroffenen Zeile zu ändern. Mit den Werten kann man ein wenig experimentieren; default ist (-4 . 4). Achtung: LyricText wird als eigene Zeile behandelt! Wenn also der vertikale Abstand zwischen zwischen Zeile und Liedtext geändert werden soll, am besten auch die Ausdehnung von LyricText anpassen: \override LyricText #'minimum-Y-extent = #'(y . y)
Grüße, Robert

Matti

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #3 am: Donnerstag, 25. März 2010, 17:52 »
Dankeschön für Eure Antworten!!
Habe Deinen Rat, Robert, aufgegriffen.

Bei großen Werten "greifen" die Befehle zwar, d.h. die Chorstimmen lassen sich beliebig weit auseinanderzerren.
Das Gegenteil funktioniert leider nicht; mit kleinen Werten oder Nullen bleiben die Abstände immer mindestens so groß wie ursprünglich.

Fehlt u.U. noch eine Anweisung, daß die global-definierten Abstände außer acht gelassen werden mögen?

Oder hab ich bei der Plazierung des WITH irgendetwas falsch gemacht???  ::)

#(set-global-staff-size 20)
\book {
  \paper { ... }
  \bookpart {
    \header { ... }
    \score {
      <<
        \new ChoirStaff {
          \with {
            fontSize = #-3
            \override StaffSymbol #'staff-space = #(magstep -3)
            \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 0)
            \override LyricText #'minimum-Y-extent = #'(0 . 0)
          }
          { << { ... Hier SATB-Noten- & -Text-Systeme ... } >>
          }
        }
        \new PianoStaff { << { ... Hier Klaviersysteme ...} >> }
      >>
    } % SCORE
  } % BOOKPART
} % BOOK

Viele Grüße
Matti

himatt

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #4 am: Donnerstag, 25. März 2010, 19:19 »
Hallo Matti,
deine Werte sind wohl falsch. Habe genau das Gleiche kürzlich erledigt:

\new PianoStaff \with {
fontSize = #-3
\override StaffSymbol #'staff-space = #(magstep -3)
\override StaffSymbol #'thickness = #(magstep -3)
\override DynamicText #'font-size = #-2
}

        \new Staff = "oben" \with {
\override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 8)
}
{ << \Global  \GlobalChor \GlobalChorScript \rH >> }
        \new Dynamics = "Dynamics_pf" \GlobalChorDynamik
        \new Staff = "unten" \with {
\override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
}  
{ << \Global  \GlobalChor \GlobalChorScript \lH >> }
... nur umgekehrt ... in der Partitur die Klavierstimme klein. DynamikText für kleinere Dynamikanweisungen in der Stimme...
Matthias
« Letzte Änderung: Donnerstag, 25. März 2010, 19:44 von himatt »

RobUr

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #5 am: Freitag, 26. März 2010, 01:23 »
Hallo Matti,

etwas grundsätzliches vorab (bitte als gutgemeinten Ratschlag auffassen, ist nicht böse gemeint): es wäre spitzenmäßig und äußerst zeitsparend, wenn dein gewissenhaft und sorgfältig minimalisierter „Strukturcode“ ad hoc lauffähig wäre! Also am besten die Auslassungspunkte/-blöcke (die zwar wir, aber längst nicht Lily, interpretieren können) künftig ebenfalls mit „minimal music“ ;) füllen. Eine Versionsangabe ist auch ultranützlich! Ich darf bereits comper in den Startlöchern erahnen, um – zu Recht – auf die grundlegend überarbeitete vertical spacing engine ab v2.13.x hinzuweisen.

Du überschreibst die VerticalAxisGroup für ChoirStaff als ganzes. Das schert die jeweiligen Staves innerhalb des ChoirStaff offensichtlich einen feuchten Kehrricht ;) Die Lösung dafür sieht auf den ersten Blick furchtbar kompliziert aus, aber unterm Strich ist es das, was Lily im Hintergrund stillschweigend interpretiert:
\version "2.12.3"

music = \relative { c d e f }
text = \lyricmode { c d e f }

\book {
%\paper { ... }
\bookpart {
%\header { ... }
\score {
<<
\new ChoirStaff \with {
fontSize = #-3
\override StaffSymbol #'staff-space = #(magstep -3)
}{
<<
\new Staff = "Sopran" \with {
\override VerticalAxisGroup #'minimum-Y-extent = #'(-2 . 2)
%\override LyricText #'minimum-Y-extent = #'(0 . 0)
}{
<<
\new Voice \music
\new Lyrics \text
>>
}
\new Staff = "Alt" \with {
\override VerticalAxisGroup #'minimum-Y-extent = #'(-2 . 2)
%\override LyricText #'minimum-Y-extent = #'(0 . 0)
}{
<<
\new Voice \music
\new Lyrics \text
>>
}
>>
}
\new PianoStaff { << { \music } >> }
>>
} % SCORE
} % BOOKPART
} % BOOK

Zwei wesentliche Sachen sind gegenüber deinem Beispiel geändert:
  • Das \with-Konstrukt schließt sich ohne (öffnende) geschweifte Klammer an die \new <abc>-Deklaration an. Ergo entfällt auch die schließende Klammer (siehe Beispiel von Matthias „himatt“: genau hinschauen).
  • Die VerticalAxisGroup ist pro Staff innerhalb des Systems verändert. Es ist eben nicht so, dass Elterneigenschaften in Lily immer an Kinder vererbt werden. Vielleicht wird es irgendwann einmal konsequent in Lily umgesetzt, andererseits behalten wir die gezielte Kontrolle über gewisse Mechanismen, ohne alles Nachfolgende rekursiv übernommen zu wissen. Diese Verfahrensweise findet sich ebenfalls in Matthias’ Beispiel.

Es geht folglich um die passende „Lokalanästhesie“: den Hebel \with an der rechten Stelle mit einer wirksamen Dosis \override anzusetzen. Dann ist die O.P. geglückt und der Patient … :-X

Grüße und weiterhin frohes Schaffen, Robert

Matti

  • Member
Re:Echte Verkleinerung einer Systemgruppe
« Antwort #6 am: Freitag, 26. März 2010, 06:39 »
Tach Robert, Patient lebt. 8)

Dein Hinweis zur With-Plazierung war zum Ziel führend, wie auch das Prinzip, zuerst ein System zu eröffnen, bevor man darin dann eine Stimme eröffnet (um dann das With vernünftig dazwischenzubekommen).

Gleich eine ausgearbeitete Lösung zu erhalten, hatte ich gar nicht erwartet. :D Sonst hätte ich meinen Code-Rumpf vorher lauffähig gemacht. Nächstes mal bin ich schlauer.

10000 Dank & ein schönes Wochenende!

Matti