lilypond-devel
[Top][All Lists]
Advanced

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

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


From: Karl Hammar
Subject: Re: Ancient notation: spacing, ligatures, bar lines: some ideas...
Date: Thu, 3 Jan 2008 18:38:18 +0100 (CET)

Till:
> Hi all, who are interested in Ancient notation.

I am.

> 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).

If the notes are note are not aligned to each other (syncroniced on the
time axis) then we must more manually specify where to put them, 
time-wise. I think it is good to skip such layouts for the moment.

> 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

I have used

  \override Score.SpacingSpanner #'base-shortest-duration = #(ly:make-moment 1 
1)
  \override Score.SpacingSpanner #'common-shortest-duration = #(ly:make-moment 
1 4)

but it did not help much.
        
> 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,

Seems so.

>  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 

Yes, the empty bar line seems to take some space. In

 http://aspodata.se/noter/victoria/o_quam_gloriosum/motet/

it does so anyhow, but that might be because of the barnumbers.

> 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.

\cadensaOn is not a good solution, I use \set Score.defaultBarType = ""

One way to do it would be to have loong measures without bars:

 % get rid of the bars
 \set Score.defaultBarType = ""

 % set the mensuration sign manually
 \set Staff.timeSignatureFraction = #'(2 . 2)

 % use what ever long measures you want
 \time 2/1

> 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.

I see no other way if you use it in a score, what would you otherwise 
do (i.e. if you want the notes to line up)?

In a single voice you could write it like

  music = \relative c' {
   d\breve*1/8 d\longa*1/16 b\breve*1/8 b\longa*1/16
  }

then they get shorter, but it is very annoying.
That might be a way to get all notes to take up the same space?

> 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.

I assume you are using a single voice 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.

The thing to do this would be to space the notes according to their 
graphical size not their "time"-size. And a possible way to do that would
be to assign them the same timevalue. But that would only work single 
voices unless you pad with a lot of \skip's.

One way would also be to simulate the movable type print process, have 
some scans and stack them along the x-axis like lego.

But, anyhow I am satisfied with the result in

 http://aspodata.se/noter/binchois/

(Yes I could done the editor accidentals smarter.)

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

In you example (attached in your following mail), why don't you use

 #(set-accidental-style 'forget)

and what do the

 \override Staff.Accidental #'glyph-name-alist = 
#alteration-mensural-glyph-name-alist

do?

Regards,
/Karl






reply via email to

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