How to control vertical spacing in the middle of a piece? \new StaffGroup \with { \override StaffGrouper.staff-staff-spacing.padding = 10 } % It's OK << \new Staff { c' c' c' c' \break \override StaffGrouper.staff-staff-spacing.padding = 30 % It isn't work c' c' c' c' } \new Staff { c' c' c' c' c' c' c' c' } >>
пт, 1 февр. 2019 г. в 11:41, Павел Буданов <budanov.pa...@gmail.com>: > It really helped me, I am very grateful to you. Would you like to change > the vertical spacing chapter > <http://lilypond.org/doc/v2.18/Documentation/learning/vertical-spacing> > in the learning manual? You were able to explain a lot of things in plain > language. > > пт, 1 февр. 2019 г. в 05:54, Aaron Hill <lilyp...@hillvisions.com>: > >> On 2019-01-31 9:11 am, Павел Буданов wrote: >> > I've solved this problem partially with for lower contexts, but i >> > can't find the necessary properties for upper contexts. Can you help >> > me? >> > >> > \new StaffGroup >> > << >> > \new Dynamics { s2.\< s4\ff } >> > \new Lyrics \lyricmode { Ly4 -- ric ly -- ric } >> > \new Staff \with >> > { \override VerticalAxisGroup.staff-staff-spacing = >> > #'((basic-distance . 20) (padding . 0.5)) } >> > { a'4 a' a' a' } >> > \new Staff { d'4 d' d' d' } >> > \new Lyrics \with >> > { >> > \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = >> > #'((basic-distance . 10) (padding . 0.5)) >> > \override VerticalAxisGroup.nonstaff-nonstaff-spacing = >> > #'((basic-distance . 10) (padding . 0.5)) >> > } >> > \lyricmode { Ly4 -- ric ly -- ric } >> > \new Dynamics { s2.\< s4\ff } >> > >> >> >> Be sure to examine the output of LilyPond for warnings, not just errors: >> >> > warning: staff-affinities should only decrease >> >> This is telling you that you need to manually adjust >> VerticalAxisGroup.staff-affinity. By default, Dynamics uses a >> staff-affinity of CENTER (0) as it typically appears between two staves, >> whereas Lyrics uses UP (1) as it typically appears below a staff. Your >> upper Lyrics context is trying to locate its "relatedstaff" above, but >> there is none to be found. You will need to set its staff-affinity to >> DOWN (-1). (You could leave the two Dynamics contexts set to CENTER >> staff-affinity; but it arguably better to also explicitly set them to >> UP/DOWN based on where they appear.) >> >> There is a second issue that unfortunately there is no warning for. You >> are setting basic-distance but not minimum-distance as well. By >> omitting minimum-distance from the spacing alist, you are using the >> default value of zero. LilyPond only attempts to honor basic-distance, >> but will collapse down to minimum-distance if needed (and often a little >> too eagerly). If you tried to set only basic-distance for the upper >> contexts, you may find that it has no effect. >> >> It may be easier to see what it going on by only using padding, although >> a combination of basic-distance, minimum-distance, padding, and >> stretchability is often required to get the most out of the flexible >> spacing system. Consider the following: >> >> %%%% >> \version "2.19.82" >> >> % Forcibly reset all default spacing variables to zero. >> \layout { >> \context { \Dynamics >> \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #'(()) >> \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #'(()) >> \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing = #'(()) >> } >> \context { \Lyrics >> \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #'(()) >> \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #'(()) >> \override VerticalAxisGroup.nonstaff-unrelatedstaff-spacing = #'(()) >> } >> \context { \Staff >> \override VerticalAxisGroup.default-staff-staff-spacing = #'(()) >> \override VerticalAxisGroup.staff-staff-spacing = #'(()) >> } >> } >> >> \new StaffGroup << >> \new Dynamics \with { >> % Dynamics is above Staff. >> \override VerticalAxisGroup.staff-affinity = #DOWN >> % Spacing between this Dynamics and the following Lyrics. >> \override VerticalAxisGroup.nonstaff-nonstaff-spacing = >> #'((padding . 2)) >> } >> { s2.\< s4\ff } >> \new Lyrics \with { >> % Lyrics is above Staff. >> \override VerticalAxisGroup.staff-affinity = #DOWN >> % Spacing between this Lyrics and the following Staff. >> \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = >> #'((padding . 3)) >> } >> \lyricmode { Ly4 -- ric ly -- ric } >> \new Staff \with { >> % Spacing between this Staff and the following Staff. >> \override VerticalAxisGroup.staff-staff-spacing = >> #'((padding . 5)) >> } >> { a'4 a' a' a' } >> \new Staff { d'4 d' d' d' } >> \new Lyrics \with { >> % Lyrics is below Staff. >> \override VerticalAxisGroup.staff-affinity = #UP >> % Spacing between this Lyrics and the preceding Staff. >> \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = >> #'((padding . 3)) >> % Spacing between this Lyrics and the following Dynamics. >> \override VerticalAxisGroup.nonstaff-nonstaff-spacing = >> #'((padding . 2)) >> } >> \lyricmode { Ly4 -- ric ly -- ric } >> \new Dynamics \with { >> % Dynamics is below Staff. >> \override VerticalAxisGroup.staff-affinity = #UP >> } >> { s2.\< s4\ff } >> >> >> %%%% >> >> Play around with the various padding amounts in the snippet. It should >> hopefully be clear which spacing variable affects what spacing. >> Generally speaking, spacing is done top to bottom, so spacing is almost >> always below an item. The exception is when a non-staff has its related >> (or unrelated) staff above it. >> >> Once you have a good feel for that, set padding to a large negative >> number (e.g. -100) and then experiment with setting minimum-distance as >> well. The negative padding will permit overlap, so it is easier to see >> how minimum-distance works. You should notice that you need larger >> values for minimum-distance than you did with padding to achieve a >> similar spacing. That is because minimum-distance is measured not from >> the extents/skylines of the content but from the reference point for >> each context. The Notation Reference lists these unique reference >> points. >> >> After that, basic-distance works the same as minimum-distance in terms >> of being measured from the reference points. Just remember that since >> LilyPond only tries to respect the basic-distance, you may need to rely >> more on minimum-distance in practice. >> >> Hope some of this helps. >> >> -- Aaron Hill >> >> _______________________________________________ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user >> >
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user