lilypond-devel
[Top][All Lists]
Advanced

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

Re: brainstorming a really smart system engraver


From: David Kastrup
Subject: Re: brainstorming a really smart system engraver
Date: Wed, 27 Aug 2014 22:02:44 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (gnu/linux)

Janek Warchoł <address@hidden> writes:

> Hi Kieren,
>
> 2012-12-14 14:47 GMT+01:00 Kieren MacMillan <address@hidden>:

[...]

>> Ultimately, I would like to have Lilypond choose the correct number
>> of staves so that horizontal and vertical spacing is optimal, using
>> partcombine (or 'partexplode'?), cueing, etc., to accomplish its
>> task.
>>
>> I realize this is an AI nightmare and well outside Lilypond's
>> current scope. So as a half-measure, I would love to be able to tag
>> certain sections as "requires X staves", and then have Lilypond
>> choose the least number of required staves based on system/line
>> breaking. As I [manually] change the line breaks, the systems would
>> automagically "expand" or "contract" as necessary/possible to
>> accommodate the new layout. Unfortunately, the current tagging
>> system is insufficient to do this, as far as I can tell.
>>
>> Can anyone think of a reasonably easy way to implement this feature?
>> If so, I'll be happy to sponsor it.
>
> I think that issue 3518 (pushed recently) does just this:
> https://code.google.com/p/lilypond/issues/detail?id=3518

It doesn't do the automatic "AI nightmare" part.  However, it provides
the low level machinery for pulling in the "maximally required" number
of staves between automatic or manual line breaks, where the requirement
is determined by working with keep-alive-interfaces and tags on the
various staff variants.

It's a solid framework for a solid part of the job.  Now a framework is
not a user interface, but an experienced LilyPond user should be able to
derive a good solution for him- or herself.

The important thing to note is that this framework does _not_ require
manual tampering with line breaks to arrive at "correct" results.
Manual tampering might still make sense in order to not have a "divisi
explosion" take more lines than necessary, like when a divisi passage
begins close to the end of a line.  But at least all lines not actually
containing divisi material will not be split, and every line containing
divisi material will.

-- 
David Kastrup



reply via email to

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