Michael Welsh Duggan wrote:
I am coming up to a point where I am going to be needing to use
LilyPond to typeset a great deal of Editio Vaticana-style chant
notation.  I have been reading the associated code in preperation for
delving in and making some fixes, but I wanted to see what work
Juergen might already have on this outside of CVS before I started
reinventing the wheel.  Some of these may already be working; I have
not tested all of them in the current version.  Also note: my interest
in typesetting chant notation is in the nature of a hobby -- I should
not be considered an expert.  As a result, any suggestions below may
be the result of my misunderstanding of "the way things are really
supposed to be".  I certainly do not mind being corrected.

The current ligature code has not been reviewed by Jan and me at all, and it's ancient. It's not a good guide for implementing more functionality. I think it will be quicker to restart from scratch, and simply borrow the code bits that you might need.

Ligature spacing: as has been mentioned before, coherent ligatures (at
least of the vaticana variety) should act like a single un-breakable
paper column, but should not receive extra spacing based on the number
of notes within the ligature.  I am interested in getting this
working.  I can start with the TODO notes in
coherent-ligature-engraver.cc.

You should create a new ligature engraver. It should acknowledge all the relevant notes/neume item grobs. The engraver creates an Item at the start of the ligature. The Item is an X axis-group, and all neumes/notes are added to the Item as children. The item determines the positioning of its X-children (see eg. Dot_column::calc_positioning_done). In a first version, it can put the children in a row.

For engravers, code reuse through shared super classes has always had bad results. So, derive the engraver directly from the Engraver class.

I think this is the major task that you should focus on. The rest of your items are comparatively simple. If you want, I can also implement the above as a sponsored feature, or lay-out a framework for you to put complex positioning rules in.

--
 Han-Wen Nienhuys - [EMAIL PROTECTED] - http://www.xs4all.nl/~hanwen


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to