lilypond-user
[Top][All Lists]
Advanced

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

Re: measures per system


From: David Nalesnik
Subject: Re: measures per system
Date: Fri, 21 Dec 2012 14:43:51 -0600

Hi Kieren,

On Fri, Dec 21, 2012 at 11:43 AM, Kieren MacMillan
<address@hidden> wrote:

> I'll be testing it heavily in the next day or so, and will report back.
> So far (with a couple quick tests on my current big score), it seems amazing!

Good to hear!

>> or have suggestions for improvements.
>
> First, a [incomplete] list of possible use cases, and notes (or questions) 
> about their possible solution using the current pair of engravers:
>
> Use Case #0: Let Lily determine all breaks.
> Solution: don't use either of your engravers.  ;)

Well, that's no fun :)

>
> Use Case #1: Fix bars-per-system, but let Lily determine systems-per-page.
> Solutions: use b-p-l engraver, or use b-p-l-s-p-p with '((4 5 4 2) (3 4 5) 
> (4*6)), both with line-break-permissions = ##f and page-break-permission 
> unset.
>
> Use Case #2: Fix bars-per-page, but let Lily determine bars-per-line and 
> systems-per-page.
> Solution: use b-p-l-s-p-p with '((50) (20) (42)) and page-break-permissions = 
> ##f and line-break-permission unset.
> [This, by the way, is very cool!]
>
> Use Case #3: Fix bars-per-line and systems-per-page.
> Solution: Use b-p-l-s-p-p engraver "fully" with line- and 
> page-break-permissions = ##f.

Yup, this all seems right to me--if a bit intricate!  I think usage
will be a bit simpler if both of these engravers are rolled into one.
I've attached a rough attempt at doing this, which should hopefully do
everything that the individual engravers do.

So, if you want to control just measures per system then write a
layout block like this:

\layout {
  \context {
    \Staff
    \consists #(bars-per-line-systems-per-page-engraver '(4))
  }
}

This will create a layout of 4 bars per line.  (The old rules apply
here too.  You can specify a list of line-lengths.  If this list adds
up to the length of your piece, you've specified the length of every
line.  If it's shorter, the pattern will repeat.)

If you want to control measures per line and systems per page, add
parentheses within your list.  With this option, every number must be
grouped.

So, an example \layout block for this option:

\layout {
  \context {
    \Staff
    \consists #(bars-per-line-systems-per-page-engraver '((4*3) (5 4 3) (2)))
  }
}

As soon as the list is exhausted, LilyPond will take over with
automatic line-breaking and pagination; there is no
pattern-replication here.

>
> Use Case #4: Let Lily determine bars-per-line, but fix systems-per-page.
> Solution: ??
>
> Can this last use case -- which is subtly but critically different from Use 
> Case #2 -- be done with the current engravers? If not, I think there should 
> be a systems-per-page engraver that could work independently of the 
> bars-per-line engraver, so that one could say
>
> \layout {
>   \context {
>     \Score
>     \consists #(systems-per-page-engraver
>     '(5 4 6 5 3 4)
>   }
> }
>
> and not have to fuss with the bars-per-line breakdown within the systems. 
> Does that make sense?

Yes, and this would be great...but I don't know how it could be
implemented with Scheme.  I'm guessing that this would need to be done
in C++, but I don't know for sure.

Best,
David

Attachment: bars-per-line-systems-per-page-engraver2.ly
Description: Binary data


reply via email to

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