Deutsches Lilypond Forum (Archiv)

Allgemein => Fragen zu Funktionen => Thema gestartet von: trulli am Samstag, 7. Februar 2015, 17:55

Titel: Vertical Spacing innerhalb der Akkolade
Beitrag von: trulli am Samstag, 7. Februar 2015, 17:55
Hallo Leute,

in diesem Tabulatur-Beispiel möchte ich den Abstand zwischen 1. und 2. Stimme vergrößern. Ich dachte, das ginge mit \override VerticalAxisGroup in der \layout-Umgebung. Was mache ich falsch?

\version "2.18.0"


upper =  \relative c' {
         \set Staff.instrumentName = "1"
         g a b c                   
            }
               
lower =  \relative c {
         \set Staff.instrumentName = "2"
         g a b c
            }
 
 
\score {
 \new StaffGroup
 <<
    \new TabStaff = "tab" << \tabFullNotation \override Staff.Clef #'stencil = ##f
      \context TabVoice = "upper tab"  \upper
    >>
   
    \new TabStaff = "tab" << \tabFullNotation \override Staff.Clef #'stencil = ##f
      \context TabVoice = "lower tab"  \lower
    >>
  >>
 
  \layout {
  \context {
    \TabStaff
    \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #20
  }
}

}

Danke und Grüße von Trulli
Titel: Re: Vertical Spacing innerhalb der Akkolade
Beitrag von: harm6 am Samstag, 7. Februar 2015, 18:46
Hallo trulli,

versuch mal:

\version "2.18.0"

%% vielleicht zusätzlich:
\paper {
  %system-system-spacing.basic-distance = #20
}

upper =  \relative c' {
         \set Staff.instrumentName = "1"
         g a b c
         \break
         g a b c
            }
               
lower =  \relative c {
         \set Staff.instrumentName = "2"
         g a b c
         g a b c
            }

\score {
  \new StaffGroup <<
    \new TabStaff = "tab" << \tabFullNotation \override Staff.Clef #'stencil = ##f
      \context TabVoice = "upper tab"  \upper
    >>
   
    \new TabStaff = "tab" << \tabFullNotation \override Staff.Clef #'stencil = ##f
      \context TabVoice = "lower tab"  \lower
    >>
  >>
 
  \layout {
    \context {
      \TabStaff
      \override VerticalAxisGroup.staff-staff-spacing.basic-distance = #15
    }
  }
}

Aber ich muß auch jedes mal in die NR schauen und ausprobieren was klappt ...

Ist zwar nicht das aktuelle Problem, aber es gibt einen schönen Pfuschzettel (http://lilypond.1069038.n5.nabble.com/attachment/164161/0/vertical-spacing-paper-variables.pdf) für paper-Variablen, den ich nicht vorenthalten will (kommt von hier (http://lilypond.1069038.n5.nabble.com/Reduce-vertical-space-between-score-s-td165406.html#a165411)).
Als png auch im Anhang.


Gruß,
  Harm
Titel: Re: Vertical Spacing innerhalb der Akkolade
Beitrag von: trulli am Samstag, 7. Februar 2015, 19:20
Hallo harm,

ja, system-system.spacing kenne ich, es vergrößert die Abstände zwischen den Akkoladen. Ich suche aber die Abstandsvergrößerung innerhalb der Akkoladen. Irgendwie funktioniert das hier nicht nicht:

\layout {
    \context {
      \TabStaff
      \override VerticalAxisGroup.staff-staff-spacing.basic-distance = #15
    }
  }

Weißt du warum? Oder funktioniert das bei dir?

LG von Trulli
Titel: Re: Vertical Spacing innerhalb der Akkolade
Beitrag von: RobUr am Samstag, 7. Februar 2015, 20:14
Hallo Trulli,

es funktioniert, wenn du die ganze Liste definierst:
\context {
\TabStaff
\override VerticalAxisGroup.staff-staff-spacing = #'(
(basic-distance . 9) ; default: 9
(minimum-distance . 15) ; default: 8
(padding . 1) ; default: 1
)
}

Gruß, Robert
Titel: Re: Vertical Spacing innerhalb der Akkolade
Beitrag von: harm6 am Samstag, 7. Februar 2015, 20:14
Hmm, der Befehl:

\override VerticalAxisGroup.staff-staff-spacing.basic-distance = #15
in 2.18.0 ausgeführt, gibt mir folgende Warnung:

Zitat
Warnung: Typprüfung für »staff-staff-spacing« gescheitert; Wert »((basic-distance . 15) . #<unpure-pure-container #<primitive-procedure ly:axis-group-interface::calc
 :
 :
taff-staff-spacing> #<primitive-procedure ly:axis-group-interface::calc-pure-staff-staff-spacing> >)« muss vom Typ »list« sein
Warnung: Typprüfung für »staff-staff-spacing« gescheitert; Wert »((basic-distance . 15) . #<unpure-pure-container #<primitive-procedure ly:axis-group-interface::calc
 :
 :
taff-staff-spacing> #<primitive-procedure ly:axis-group-interface::calc-pure-staff-staff-spacing> >)« muss vom Typ »list« sein

in 2.19.15 gibts keine Warnung und er tut was er soll.

In 2.18.0 versuch mal:

\override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 35))
mit verschiedenen Werten. Klappt bei mir.
Vielleicht sollte man dann aber die ganze Liste angeben, d.h. mit Einträgen für padding, minimal-distance und stretchability. Es gab ein paar vereinfachende Änderung in der Art und Weise wie nested-properties zu modifizieren sind. Und ich kann mich nicht mehr daran erinnern wann das kam...

Gruß,
  Harm

Titel: Re: Vertical Spacing innerhalb der Akkolade
Beitrag von: trulli am Sonntag, 8. Februar 2015, 00:12
Hallo Rob und harm,

vielen Dank, beide Lösungen klappen.

Ich war irgendwie auf dem Holzweg, weil ich hier (http://www.lilypond.org/doc/v2.18/Documentation/notation/flexible-vertical-spacing-within-systems) die folgende Lösung gefunden hatte, die aber interessanterweise keine Klammern hat und dieses "default" dazwischen:
\override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
Das "default" war offenbar Schuld, dass es bei mir gar keine Warnung gab.

Im gleichen Abschnitt steht auch
\override VerticalAxisGroup.default-staff-staff-spacing =
    #'((basic-distance . 10)
       (minimum-distance . 9)
       (padding . 1)
       (stretchability . 10))

Funktioniert nicht. Aber ohne default läuft es. Offenbar ein Schreibfehler.

@harm
Ich habe die erste Schreibweise (ohne default) mit 2.19.0 probiert - klappte nicht. Tatsächlich funktioniert es erst bei 2.19.15.

Die Magie des Codes...   ::)

Grüße von Trulli