lilypond-user
[Top][All Lists]
Advanced

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

Re: Aleatoric / modern notation


From: David Nalesnik
Subject: Re: Aleatoric / modern notation
Date: Sun, 21 Jul 2013 13:32:48 -0500

Hi,

Attached is a substantially revised and enlarged version of the frameEngraver functions.  I’ve included plenty of comments to make it clear what I’m thinking, and how to use the various commands and possibilities for overrides.

Once again, thanks to Mike Solomon for his help!

ADDITIONS:

(1) I’ve added a bracket which can hold an optional item of text.  The most obvious use for this is to indicate timing, either through clock time or a note markup.

(2) Both the timing bracket and the extender line with arrow are breakable across lines.  The frame itself is not.  Note that the arrow won't be drawn if the line is very short.

(3) It is usable at different staff sizes.  I’m not sure I handled the scaling of the bracket text in the best way--suggestions and corrections welcome.

ISSUES:

I’ve driven myself nuts trying to resolve the following problems (as the file number hints).  In fact, I should probably admit that the solutions completely elude me :(  If anyone can help, I will be eternally grateful!

(1) Vertical spacing is handled well with short examples, but it breaks down when page breaks are needed.   Try changing the number of repetitions of the example: you’ll get page overflows, and Lily will compress the music.  The skylines seem to be fine (uncomment the option setting at the top): why won’t Lily respect them?  I’ve tried adding a grob which groups the Frame, FrameExtender, and FrameBracket to no avail (one difficulty here--and I’m guessing--is that these three grobs are a mix of inside- and outside-staff objects).   I think I need to add pure print functions.  I don’t know how to do that.

(2) Uncomment the piano dynamic.  Notice that the box will enlarge to accommodate it, but the dynamic will be pushed aside.  How do I make the skylines of the box “porous”?  Also, note that if you change the dynamic to "f", not enough space is reserved.

FURTHER PLANS: 

Once the basic architecture is settled, I’ll add stubs--spacing objects--which will greatly improve the horizontal spacing.  Uncomment the line changing the bar-line style: this will demonstrate the need for spacers.  Currently, you can get better horizontal spacing by separating \frameExtenderEnd and \frameStart using small spacer rests.  (I haven't done that in the example.)

DISCLAIMER:

At this stage, this is all “meddling with internals,” as there is no accepted way to add grobs, interfaces, etc. properly within an .ly file.  There can be consequences of bleed-over across sessions when you run lilypond on a group of files, one or more of which contains these definitions.  For example, you’ll probably get warnings about redefinition of added properties if you type

lilypond file1.ly file2.ly

where both files include the definitions of the new engraver.  The first file has added them, so the second file appears to be redefining them.  Those warnings could be ignored, or you could run the files individually.

The fix for this is to distribute the added code (minus functions like “add-grob-description,” which are already there in some form) to the relevant files in the code base.  Maybe someday …

Hope this is helpful,
David

Attachment: frameEngraver21.png
Description: PNG image

Attachment: frameEngraver21.ly
Description: Binary data


reply via email to

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