lilypond-devel
[Top][All Lists]
Advanced

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

Ancient notation: spacing, ligatures, bar lines: some ideas...


From: Till Rettig
Subject: Ancient notation: spacing, ligatures, bar lines: some ideas...
Date: Fri, 07 Dec 2007 22:33:01 +0200
User-agent: Thunderbird 2.0.0.6 (X11/20071022)

Hi all, who are interested in Ancient notation.

I started now some trial how to improve the spacing of the notes. The goal is to have an even spacing where each note head regardless of their length takes up just the same space. Visible signs in the score as accidentals, clefs and lyrics should influence the spacing, though, as well as alignment of more than one system (even though this is quite rare in mensural music, it should be possible). To acchieve this I started removing the spaces that get added to a notehead according to its duration. I came up with those properties:

       \override SpacingSpanner #'spacing-increment = #0
\override SpacingSpanner #'common-shortest-duration = #(ly:make-moment 1 1) \override SpacingSpanner #'base-shortest-duration = #(ly:make-moment 4 1)
       \override SpacingSpanner #'shortest-duration-space = #1
The first means, that longer notes than the smallest won't get more spacing around them (ie it gets increased by 0). The next three properties, though, I was not so sure about what they do. As I understand I get quite close spacing when assigning the common-shortest-duration to a long note. But it seems a whole is the longes note it can handle, I don't see any changes in the layout when assigning it for instance to 4/1. The next property didn't seem to have much influence on spacing in this case -- can it just be ommitted, or did I understand this wrong? The last, I understand, sets the space the shortest note takes, to 1, that is to one notehead-width plus some amount left and right. I would understand that if my common-shortest-duration is a whole that this whole gets assigned the 1. But, as you can see from the attached file: The first semibreves (wholes) are much wider spaced than the smaller note values further on. When switching on the bar lines they reveal quite a lot of space they take up. This might be the reason why the semibreves get spaced so widely. But there are also bigger and smaller gaps between notes of different duration. They show better in the example whith normal note heads, but are still present in the mensural examples as well. Yet they become more obvious when using a barline instead of the "empty barline". Is this some space added to each bar? Something about centering notes in bars? I don't understand where this space comes from.

Speaking of barlines: There are three ways avoiding bar lines, as I see it.
1. Remove the engraver. This is not a good solution, because sometimes there have to be inserted bar lines, for instance at the end of a piece. 2. Switch on Cadenza. There are two problems with this approach: First we don't have any breaks anymore. I thought of a funktion that enquires the last bar number of the engraved piece and sets then in regular spaces invisible bar lines, for instance repeating the pattern {\skip 1*4 \bar " "} n/4 times, if the measures are a whole long. The other, bigger problem, are ligatures: they get really ugly squeezed when switching on Cadenza. What can we do there? 3. The approach from now. In addition the space bar lines take should be reduced. This again interferes with the cases when we actually need barlines. They should then get (automatically) added additional space.

Another problem are ligatures (and to some extent also ligature brackets). If I understand the underlying techniques right, ligatures get produced from legal note durations. Their duration is known to the spacing engine and they get accordingly space around them. But since ligatures are drawn as one graph of closely realted heads, the additional space that is counted to fit normallly between noteheads gets accumulated at the end of the ligature. In addition, the space which the barlines would normally take gets still added to the space (since ligatures are normally long notes, they use quite a lot of bars). So my naïve idea would be to count the amount of space of all ligature heads minus the real head-width and subtract this amount from the space of the ligature. Unfortunately I know too few about programming to already provide some code here.

Well, another problem of the ligatures is their behaviour inside a Cadenza. They take up too few space so other notes start protruding them. This happens only, when the changed spacing values presented above are used. If used with the normal spacing engine, ligatures work out fine. But: when not using "zero-spacing" the spacing is again too wide. This means that we cannot use Cadenza at the moment to display tightly spaced notes containing ligatures.

Actually, also the ligature brackets in the normal notation get badly cruched by the tight spacing: suddenly they appear in some cases to be too short and won't cover all the notes actually included in the ligature. Hopefully somebody has some hints at what I could look to make ligatures behave correctly. Juergen, do you have time reading the list?

If assuming that my ideas about the spacing engine are correct I thought to implement the tight spacing somehow into the MensuralStaff which automatically should call mensural voice -- there could be differently named staves and voices containing the different notation style that are available for ancient notation.

I hope you can bear my unprofessional approach, I am only learning how things work inside of lilypond.

Greetings
Till




reply via email to

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