gregorio icon indicating copy to clipboard operation
gregorio copied to clipboard

new way of specifying inter-syllable stretching

Open eroux opened this issue 8 years ago • 8 comments

Currently we have tons of different values with different stretchings, combined in many different ways, compared in many different ways, etc. and the final output has a stretching which can more or less not be predicted, at least by the end user. The idea here would be to just use dimen for all these values, but introduce their stretching counterparts, specified as skips with a main value of 0. The different algorithm would just work with the non-stretching values, and, just after the final skip they compute, add the corresponding stretching value asked by the user. This would make things a bit more complex to set up, but way more predictable and coherent. What do you think?

eroux avatar Feb 15 '16 08:02 eroux

I don't quite understand the proposal. To me, it sounds no better than defining them as they are now (as skips) and casting to dimension when doing computations, but I'm sure I'm missing something.

henryso avatar Feb 15 '16 13:02 henryso

That would be something like that yes, but it would improve coherence, for instance now we define a different stretching for spacearoundmaior and interwordspacetext... who knows which one will be used when? One of them certainly, maybe a combination of both, maybe sometimes one sometimes the other depending on the configuration... I don't even know myself...

eroux avatar Feb 15 '16 13:02 eroux

(I'm talking about a case like *(;) here)

eroux avatar Feb 15 '16 13:02 eroux

How would it be different if you define a dimension and a skip (with 0 base value) for those things? I think I'm beginning to get a feel for what you're trying to fix, but maybe a concrete example for something like *(;) showing how the old versus new systems interact would help show what you are proposing?

henryso avatar Feb 15 '16 13:02 henryso

It would be the same kind of things I did for intersyllablespacestretchhyphen in https://github.com/gregorio-project/gregorio/pull/924/files yes.

In the example *(;), there are two kind of space, the one between the bars and the one between the text, we can specify them separately. But only one same rubber should be added before all the spacings, and after all the spacings. There are many advantages:

  • now you can really specify the rubber you want around bars, and you know it's really this one that will be used
  • applying it once before and once after makes the output really perfect, if you have different rubbers for text and notes, the alignment will be messed and all the calculations will be wrong if the line needs to be stretched

Right now I don't know how it works, I think it takes the rubber of spacearoundmaior before and the one from interwordspacetext after, but it depends on the configuration...

eroux avatar Feb 15 '16 13:02 eroux

Ok, so to sum it up, you suggest we use multiple dimensions to build up a "base" and apply a single skip to it. Makes sense to me. Thanks.

henryso avatar Feb 15 '16 13:02 henryso

Exactly yes

eroux avatar Feb 15 '16 13:02 eroux

How many cases are there which warrant different stretches? My think-out-loud list has one for between syllables and one for between words, but doesn't differentiate between bars and notes. Should there be a differentiation between bars and notes? If so, is notes->bar the same as bar->notes? Also, bars usually come in singletons, so would bar->bar really be needed?

rpspringuel avatar Jun 03 '16 02:06 rpspringuel