[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Vaticana ligatures / spacing / other...
From: |
Juergen Reuter |
Subject: |
Re: Vaticana ligatures / spacing / other... |
Date: |
Thu, 17 Nov 2005 04:20:14 +0100 (CET) |
On Thu, 17 Nov 2005, Han-Wen Nienhuys wrote:
...
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.
I tried a similar approach long time ago around 1.9.x, but I failed, since
I would have needed to duplicate much code around the note head engraver
(e.g. handling of articulation scripts, ...). However, lily has changed a
lot since then; hence, it may be worth trying again.
For engravers, code reuse through shared super classes has always had bad
results. So, derive the engraver directly from the Engraver class.
Well, the original idea was to have not only a vaticana engraver, but also
a medicea engraver, a gothic neumes (hufnagel) engraver, maybe even an
adiastematic neumes engraver, etc. In that case, the amount of code reuse
would have been rather tremendously.
Please notice the idea of stacked abstraction layers. Gregorian chant
notation exists in a plethora of notational styles. If you write down the
same piece once in Vaticana style and once in gothic neumes, the
non-professional reader possibly would not even recognize that it is the
same piece of music. However, the syntax was designed to be the same for
all common notational styles, such that you e.g. can switch between them
by just adding/removing a proper engraver to/from the voice context
(though this has not been proven so far since the gothic neumes engraver
has not yet been implemented). This goal is achieved by internally
breaking down complex neumes into primitive ones, e.g. porrectus into
flexa+pes, or epiphonus into pes+deminutum. The intention is to share
this approach between all Gregorian chant notation flavours. The shared
super classes reflect this intention of hierarchical abstraction.
Btw. (off-topic), I also intended to implement the Gregorian square neumes
ligatures table (cp. lily v2.7.16 manual Sect. 7.7.10.2) slilghtly
generalized as scheme functions, such that you e.g. can say "\porrectus {
a b c }" which will translate to "\[ a \flexa g \pes b \]". A "\ligature"
command that internally produces "\[" and "\]" is already defined in
ly/gregorian-init.ly.
I think this is the major task that you should focus on. The rest of your
items are comparatively simple.
What about the spacing *between* ligature items? Even with packed and
raggedright options, lily's spacing engine heavily depends on note
durations, while neumes per se do not have any fixed duration.
Michael Welsh Duggan wrote:
...
Breaking: when typesetting chant notation, we should be allowed to
break after any note or ligature,
This should already work (assuming it's not currently broken):
"get_score_engraver ()->forbid_breaks ()" in
Ligature_engraver::process_music () forbids breaks within ligatures
(although Coherent_ligature_engraver may be a more apropriate place for
it); and "Score.timing = ##f" and "Score.barAlways = ##t" allows breaks
anywhere else.
but with preference on the breath
marks. (Actually, ideal would be to try to only break on word
boundaries, but there's no simple representation for that right now.
Something to think about later, I guess...)
This requires far more work, afaics. Btw., interaction between lyrics and
breath marks is also required for correct aligning of directive signs like
versus, responsio, etc. Maybe the stanza number engraver can be
generalized to handle such things; conceptually, stanza numbers are
strongly related.
Ligature melismata: the ligature should act as automatic melismata for
purposes of setting text.
In general, this is difficult to accomplish: usually, there may be at
most one syllable per ligature; however, there may be multiple ligatures
per syllable. Hence, you would still have to tell which ligatures belong
to a single syllable.
Punctum-mora stacking: Punctum-mora (dots) should stack nicely.
Right. This task is similar to the accidental engraving: you have to
collect all dots and put them behind the ligature aligned in a column.
For mensural music, however, you often find the dots printed above the
ligature. So, in general, you should be able to easily switch between
these two modes plus the conventional mode of dot engraving.
Accidental engraving: Should act as mentioned in the TODO in
coherent-ligature-engraver.cc.
I tried to write an according patch two months ago, but unfortunately I
failed. I guess the main problem is that my code can deliver the
accidentals in a bunch only after the ligature has finished, while lily
seems to require the accidentals to be announced much earlier. I also had
to duplicate some amount of private data structures and code of the
accidentals related engravers...
Greetings,
Juergen
- Stemless music with slurs, Michael Welsh Duggan, 2005/11/14
- Re: Stemless music with slurs, Mats Bengtsson, 2005/11/15
- Re: Stemless music with slurs, Michael Welsh Duggan, 2005/11/15
- Re: Stemless music with slurs, Juergen Reuter, 2005/11/15
- Re: Stemless music with slurs, Juergen Reuter, 2005/11/15
- Re: Stemless music with slurs, Han-Wen Nienhuys, 2005/11/15
- Vaticana ligatures / spacing / other..., Michael Welsh Duggan, 2005/11/16
- Re: Vaticana ligatures / spacing / other..., Han-Wen Nienhuys, 2005/11/16
- Re: Vaticana ligatures / spacing / other...,
Juergen Reuter <=
- Re: Vaticana ligatures / spacing / other..., Han-Wen Nienhuys, 2005/11/17
- Re: Stemless music with slurs, Han-Wen Nienhuys, 2005/11/15
- Re: Stemless music with slurs, Michael Welsh Duggan, 2005/11/15
- Re: Stemless music with slurs, Juergen Reuter, 2005/11/15
- Re: Stemless music with slurs, Michael Welsh Duggan, 2005/11/15
- Re: Stemless music with slurs, Han-Wen Nienhuys, 2005/11/16
- Re: Stemless music with slurs, Han-Wen Nienhuys, 2005/11/16
- Re: Stemless music with slurs, Michael Welsh Duggan, 2005/11/16