lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Adjusting layout to bigger notes


From: Abraham Lee
Subject: Re: Adjusting layout to bigger notes
Date: Tue, 23 May 2023 11:41:19 -0600

Hey, Jakob!

On Tue, May 23, 2023 at 8:57 AM Jakob Pedersen <jakobp@vivaldi.net> wrote:
Dear Abraham and Xavier

Thank you for this! I must have read the documentation wrong.

That – unfortunately – causes new problems, because my project is in different files and scores in different bookparts.

I'm getting a warning: set-global-staff-size: not in toplevel scope error when compiling. That's with the size set in the top-level doc layout block. Same if I add it to the actual score document.

If I add anything to the actual score layout block, it ignores my top-level document layout, which isn't practical, but can be fixed, I suppose, by editing the score files.

Have I organised my score badly? I have attached my top-level document and a score document.

My apologies for not including this in the first email. I didn't think it could be a problem with the file(s) structure.

Best wishes,
Jakob

On 23.05.2023 15.58, Abraham Lee wrote:
Hi, Jakob!

On Tue, May 23, 2023 at 7:44 AM Jakob Pedersen <jakobp@vivaldi.net> wrote:
Greetings!

I'm writing some chorales for playing hymns on the organ. I've chosen a larger staff size to improve readability.

Having adjusted #(layout-set-staff-size ##) to 26, I'm noticing some less-than-fortunate side effects.

The key signature is very, very close to the clef, and the notes are too close to the bar line.



Is there an elegant way to adjust this to the larger staff size?

A minimal example:

\version "2.24.1"
\language "deutsch"

global = {
  \key f \major
  \time 3/2
}

rightOne = \relative c' {
  \global
f4 g f2 c | d4 e f2 a |
}

rightTwo = \relative c' {
  \global
c2 c a | b a c |
}

leftOne = \relative c {
  \global
a'4 g a2 a | f4 g c,2 f |
}

leftTwo = \relative c {
  \global
f4 e f2 f | b,4 g f2 f |
}

\score {
  \new PianoStaff <<
    \new Staff = "right" <<
      \new Voice = "soprano" {
        \voiceOne << \rightOne >>
      }
      \new Voice = "alto" {
        \voiceTwo << \rightTwo >>
      }
    >>
    \new Staff = "left" <<
      \clef bass
      \new Voice = "tenor" {
        \voiceOne << \leftOne >>
      }
      \new Voice = "bass" {
        \voiceTwo << \leftTwo >>
      }
    >>
  >>
 
  \layout {
    #(layout-set-staff-size 26)
  }
 
}


Best wishes,

Jakob

layout-set-staff-size is intended to resize an individual staff within a group of others at a default size. In your case, you've resized (but not respaced) all the Staffs relative to the implicit default 20 pt staff height, which is why things got cramped. What you want to do instead is put this command near the top of your file:

#(set-global-staff-size 26)

This changes the default staff size and respaces accordingly. By doing this, you can then remove the layout-set-staff-size command completely as it is no longer necessary.

Hope that helps,
Abraham 


I looked at your files and obviously I didn't explain the solution very well lol. Let me try again. And in fairness, the manual doesn't fully explain any of the usage details I explain below.

The set-global-staff-size command does have some conditions and implications for use. As you discovered, it's a "top level" command, meaning that it can only be applied to an entire \book and not to an individual \bookpart or \score. Also, it needs to be called outside any \layout block.

So, here's how I would restructure the files you provided:

%<-----------------------------------scorebook.ly------------------------------------------
\version "2.24.1"

#(set-global-staff-size 26)  % <----- put it here

\header {
  tagline = ##f
}

\include "hymn.ly"

\paper {
  #(set-paper-size "a4landscape")
}

\layout {
  indent = 0.0
  \context {
    \Score
    \remove "Bar_number_engraver"
  }
  % don't put it here
}

% A hymn begins here
% \bookpart { ... etc. }

% This hymn begins here
  \bookpart {
       
    \header {
      title = "123. This a hymn"
      composer = \markup { \vspace #1.5 Something German ~1550 }
    }
   
    \hymnscore
       
  }

% Another hymn begins here
% \bookpart { ... etc. }

%<-----------------------------------hymn.ly------------------------------------------

\version "2.24.1"
\language "deutsch"

global = {
  \key f \major
  \time 3/2
}

rightOne = \relative c' {
  \global
f4 g f2 c | d4 e f2 a |
}

rightTwo = \relative c' {
  \global
c2 c a | b a c |
}

leftOne = \relative c {
  \global
a'4 g a2 a | f4 g c,2 f |
}

leftTwo = \relative c {
  \global
f4 e f2 f | b,4 g f2 f |
}

hymnscore = \score {
  \new PianoStaff <<
    \new Staff = "right" <<
      \new Voice = "soprano" {
        \voiceOne << \rightOne >>
      }
      \new Voice = "alto" {
        \voiceTwo << \rightTwo >>
      }
    >>
    \new Staff = "left" <<
      \clef bass
      \new Voice = "tenor" {
        \voiceOne << \leftOne >>
      }
      \new Voice = "bass" {
        \voiceTwo << \leftTwo >>
      }
    >>
  >>
 
  \layout {
    % don't put it here either, or anywhere else in this file
  }
}

%<------------------------------------------------------------------------------------------------

Some other things to note about using set-global-staff-size as you continue to expand the hymnal with multiple sections (not that you'll likely have a score with this drastically different staff sizes, but just for example):

1. This DOES NOT work (the last call takes precedence because they're both within the same implicit \book):

#(set-global-staff-size 26)
\score { ... }

#(set-global-staff-size 13)
\score { ... }

2. This DOES NOT work either (same reason as #1, they're both implicitly within the same \book, so that last call gets applied to both):

#(set-global-staff-size 26)
\bookpart {
  \score { ... }
}

#(set-global-staff-size 13)
\bookpart {
  \score { ... }
}

3. This DOES work because they're in separate \book blocks (but now you have separate output files instead of them being in the same one):

#(set-global-staff-size 26)
\book {
  \score { ... }
}

#(set-global-staff-size 13)
\book {
  \score { ... }
}

I hope that has made it more clear about when/how/why to use this command.

Best,
Abraham

@Devs (if any are reading through this), to the point of the OP's original question, and related to what's described in Section 2 of https://lilypond.org/doc/v2.24/Documentation/notation/setting-the-staff-size, this is not entirely accurate to say you can use layout-set-staff-size for individual scores. I mean, yes, layout-set-staff-size can be used, but the layout engine still horizontally spaces things as if it was whatever the global staff size is (as shown by the OP's picture). For small size changes, or decreasing the size, like changing it to 18 vs a global 20, then it's not so noticeable, but a big change, or going up in size, like changing it to 26 with a global 20, then the spacing issue becomes considerably more apparent. I am not a Dev and I have no idea what's required to fix this behavior, but not being able to cleanly adjust the staff size of individual book parts or scores within the same \book is a long-standing complaint I've had. I've worked around it by creating separate \book blocks and then spliced them together later, but it's a hassle. Why not just have it do the right/expected thing from the beginning? Thanks for all you do! LP continues to be my go-to engraver and I thank you for keeping it running!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]