Re: [frogs] Re: tablature: ties and harmonics (issue1669041)

2010-06-30 Thread Marc Hohl

Carl Sorensen schrieb:

[...]

http://codereview.appspot.com/1669041/diff/26001/27004#newcode130
scm/define-grob-properties.scm:130: (bracket-width ,number? Width of
the harmonic angle bracket.)
Why do we need bracket-width?  Why can't we just use the pre-existing
width property?
  

Hm, Neil proposed to use a more descriptive name for this property, IIUC.
Done.



Well, if we want to have this be part of the parenthesis-interface, then we
may want to go ahead with bracket-width.
  

Ok, done.
  
[...]

If instead of making the whiteout and the stencil different stencils, we
combined them, then parenthesize-stencil would work great.  But this might
not be possible if we need to have the stencil and the whiteout on separate
layers.  As an alternative, parenthesize-stencil could be modified to take
white-padding as an argument.  There's nothing that says we can't modify
scm/stencil.scm so that it works better for tablature.  It's much better,
IMO, to have one general-purpose piece of code than to have two separate
special-purpose code chunks.
  

So I tried to extend the parenthesize-stencil function in scm/stencil.scm.
It compiles without error, but the regression file is cluttered up.

I feel that this is not the right approach, either. I still don't understand
why I have to shift the TabNoteHead #'layer at all. As far as I see it,
HarmonicParenthesesItem #'stencils is a list of stencils, containing the
left and the right angle bracket, which are placed either side of the
TabNoteHead #'stencil. So the order in which the stancils are placed
should not change anything at all, but if the TabNoteHead #'stencil is set
*before* the HarmonicParenthesesItem #'stencils, it seems that some
whitespace occurs between the angle brackets, overriding the
already placed TabNoteHead.
If on the other hand the whiteout would not appear, we could just use the
parenthesize-tab-note-head function defined in scm/tablature.scm.
This function could detect whether we have a harmonic and in this case
would place the parentheses just further apart.

Furthermore, I have a bad feeling to misuse your time reviewing my patch
for error seeking issues, but I am stuck here. I like the general idea of
not defining the same functionality over and over again, but on the 
other hand,

the parenthesize-stencil function in scm/stencil.scm does not seem to
be used anywhere else ...

Thanks in advance,

Marc



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


Re: Vertical spacing regression !?

2010-06-30 Thread Boris Shingarov

On 06/30/2010 01:04 AM, David Kastrup wrote:



until after line-breaking. Also, the vertical collision avoidance means
that in { c1^long long markup c1^long long markup }, we cannot
calculate the height of the second bar without considering the first bar
too (and the answer will change if they are on different lines).
 

Maybe I am dull, but we need the line heights (or skyline) for a given
line breakpoint sequence, and a given line breakpoint sequence has a
given skyline for each line.
   
Correct.  And there is O(2^N) breakpoint sequences for N possible 
breakpoint places (roughly, for N bars); so we need O(2^N) 
heights/skylines and page breakings.  The dynamic programming algorithm 
deals with this complexity, but even though there are less than O(2^N) 
actual configurations to calculate a demerit score for, it is still 
prohibitively expensive to perform a full layout every time we need a 
demerit score.



Maybe the problem can be alleviated by not associating a fixed line
height/skyline with each bar, but something that is dependent on the
current breakpoint sequence being considered.
   
Not sure what you mean.  We do not and can not have a fixed line height 
/ skyline for each bar -- as Joe just explained.  For example, consider 
music in the G clef; if a particular bar comes after a line break, it 
will have a clef, making the bar much taller.  So I am not sure what you 
have in mind here... something else that I do not see?


Originally, the skyline was approximated by its bounding rectangle.  In 
other words, there was only one measurement: the line height.  About a 
year ago, to address the problem with G clefs, Joe added the distinction 
between begin- and rest-of-line, for inter-staff, intra-system 
space.  (So instead of one point we have two).  This worked reasonably 
well for music with many staves per system; but for music on one staff 
(e.g. instrument parts, or monody) this does no good, because all the 
space is inter-system.  So about two months ago I introduced the 
begin/rest distinction for inter-system space (i.e. for computing 
pure-height of a whole system).  This still left some unaddressed things 
like 1062, which is what today's discussion is about.


Boris


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


Re: Vertical spacing regression !?

2010-06-30 Thread Joe Neeman
On Wed, 2010-06-30 at 07:04 +0200, David Kastrup wrote:
 Joe Neeman joenee...@gmail.com writes:
 
  On Tue, 2010-06-29 at 20:23 +0200, Arno Waschk wrote:
  can't we have correct heights say for every bar (which must be computed 
  later anyway) with clever caching so we have them ready when the final 
  layout is made?
  No. For example, we don't know if a bar will have its clef displayed
  until after line-breaking. Also, the vertical collision avoidance means
  that in { c1^long long markup c1^long long markup }, we cannot
  calculate the height of the second bar without considering the first bar
  too (and the answer will change if they are on different lines).
 
 Maybe I am dull, but we need the line heights (or skyline) for a given
 line breakpoint sequence, and a given line breakpoint sequence has a
 given skyline for each line.

No, we don't compute the full skyline for a sequence of breakpoints,
because doing so would require performing the full horizontal layout
first. My point is that it isn't possible to get _completely_ accurate
height estimates unless we do the complete layout for every possible
line-breaking configuration.

Cheers,
Joe



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


Re: Vertical spacing regression !?

2010-06-30 Thread Joe Neeman
On Mon, 2010-06-28 at 06:34 -0400, Boris Shingarov wrote:
 On 06/27/2010 01:25 PM, Joe Neeman wrote:
  On Sun, 2010-06-27 at 06:56 -0400, Boris Shingarov wrote:
 
   This was discussed on this list only a few weeks ago.  I think we 
  are on
   our way to get rid of global page*line breaking.
 
  Although I am happy to have an option to do full line-breaking before
  page-breaking, I am very much against getting rid of the line and
  page-breaking interaction. For example, if we did that then we would
  have to scrap the new vertical layout since it relies on being able to
  stretch the systems after the pages are determined. And while I have a
  personal bias against scrapping the vertical layout (since I wrote it),
  I do think that it is a big improvement over the previous layout
  algorithm and I have heard comments to that effect on the lists too.
  Also, the page-turn-breaker can't function without some interaction
  between line- and page-breaking.
 I understand the bad effects of divorcing line- from page-breaking.  
 Another one (of those which I personally care about) is that it will 
 negate the window/orphan handling feature I added.  At least to my 
 users, this is important.  And yes, I do agree that the new layout 
 algorithm *is* a big improvement over the previous one.
 
 But what do we do about the height estimation problems?

For one thing, we can add an option to do the full horizontal layout
first. system-count used to have this effect, so it isn't even very hard
(see issue 325).

   No matter how 
 important the positive effects of line/page-breaking interaction are, a 
 score with staves cut at the bottom, is unusable.

Agreed. There used to be a feature that would detect an overfull page
and try to lay it out again without any padding between staves, but it
didn't make it into the new page layout algorithm. It could be
reinstated.

   And a score with the 
 opposite problem, is equally unusable.

I don't entirely agree with this one. Unless you have ragged-bottom=##t,
underfilling the page by a single system is hardly noticeable (whereas
overfitting by a single system is, of course).

   Can we realistically hope to fix 
 enough bugs so that real publications will look usable?

I have seen real publications that use 2.12 (which also used
height-estimation). There are workarounds (like the
page-breaking-between-system-spacing variable) and there could be more
workarounds (like an option for doing the horizontal layout first). And
the complaints from the lists have died down a lot compared to when the
page-breaking*line-breaking was first introduced (2.9, IIRC), so I think
we are converging on something that works consistently.

   I don't know.  
 I started working on the estimations because the user's book suffered 
 the problem.  I fixed five, and pulled your fixes for a few.  And yet 
 the book is still suffering the same problem.  I know what causes it 
 *now*, but I do not know if this is going to be the last one *for this 
 book*, and I am now facing problems of customer value when talking about 
 fixing height estimation bugs.
 
 So what are we going to do, keep fixing these bugs, under the theory 
 that there is only finite number of them?  One thing that makes me 
 nervous is that a lot of the time the fixes involve increase of 
 computational complexity.  We are moving from simple height estimation 
 to more and more complex height estimation; can it be that as we 
 approach being more and more correct in our estimation, the complexity 
 also approaches that of full layout?

We are still very far from full layout. As long as we avoid horizontal
spacing (and all the layout that it requires), I think we're ok.

Cheers,
Joe



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


Re: authors+contributors list

2010-06-30 Thread Benkő Pál
 Any new / new-ish contributors, please check:
  http://lilypond.org/website/authors.html

 The basic breakdown is:
 - if you have git access, you're a developer
 - if you don't, you're a contributor
 - developers shouldn't appear in the contributor list
 - developers can pretty much pick their own title/description/email/web

 AFAIK, we haven't been keeping track of this for the past 4-5 months,
 so I expect to have a few gaps.

I'm listed in both Current contributors (as Pál Benkő) and in
Previous Contributors (as Pal Benko),  someone please
remove the latter one.

p

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


Re: authors+contributors list

2010-06-30 Thread Graham Percival
On Wed, Jun 30, 2010 at 10:59:54AM +0200, Benkő Pál wrote:
 
 I'm listed in both Current contributors (as Pál Benkő) and in
 Previous Contributors (as Pal Benko),  someone please
 remove the latter one.

Actually, that's fine -- Previous contributors is for anybody who
worked on stuff before 2.13, while Current is for anybody who did
stuff for 2.13.

I'll try to think of how to clarify this on the page.

Cheers,
- Graham

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


Re: Vertical spacing regression !?

2010-06-30 Thread David Kastrup
Joe Neeman joenee...@gmail.com writes:

 On Wed, 2010-06-30 at 07:04 +0200, David Kastrup wrote:
 Joe Neeman joenee...@gmail.com writes:
 
  On Tue, 2010-06-29 at 20:23 +0200, Arno Waschk wrote:
  can't we have correct heights say for every bar (which must be computed 
  later anyway) with clever caching so we have them ready when the final 
  layout is made?
  No. For example, we don't know if a bar will have its clef displayed
  until after line-breaking. Also, the vertical collision avoidance means
  that in { c1^long long markup c1^long long markup }, we cannot
  calculate the height of the second bar without considering the first bar
  too (and the answer will change if they are on different lines).
 
 Maybe I am dull, but we need the line heights (or skyline) for a given
 line breakpoint sequence, and a given line breakpoint sequence has a
 given skyline for each line.

 No, we don't compute the full skyline for a sequence of breakpoints,
 because doing so would require performing the full horizontal layout
 first. My point is that it isn't possible to get _completely_ accurate
 height estimates unless we do the complete layout for every possible
 line-breaking configuration.

But a lot of line-break configurations share lines.  And even more
configurations share starting measures, so things that appear only at
the beginning of a line don't need recalculation for every
configuration.

I see an ugly factor (basically O(n l) where l is the maximum line
length in measures, and n the number of measures), but it appears to me
that _if_ one properly shares information (namely using a shortest path
traversal linear programming algorithm), it is, for a fixed value of l,
basically a constant after all.

And that means something that you can hope to wait for.

-- 
David Kastrup

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


Re: Vertical spacing regression !?

2010-06-30 Thread Joe Neeman
On Wed, 2010-06-30 at 13:41 +0200, David Kastrup wrote:
 Joe Neeman joenee...@gmail.com writes:
 
  On Wed, 2010-06-30 at 07:04 +0200, David Kastrup wrote:
  Joe Neeman joenee...@gmail.com writes:
  
   On Tue, 2010-06-29 at 20:23 +0200, Arno Waschk wrote:
   can't we have correct heights say for every bar (which must be computed 
   later anyway) with clever caching so we have them ready when the final 
   layout is made?
   No. For example, we don't know if a bar will have its clef displayed
   until after line-breaking. Also, the vertical collision avoidance means
   that in { c1^long long markup c1^long long markup }, we cannot
   calculate the height of the second bar without considering the first bar
   too (and the answer will change if they are on different lines).
  
  Maybe I am dull, but we need the line heights (or skyline) for a given
  line breakpoint sequence, and a given line breakpoint sequence has a
  given skyline for each line.
 
  No, we don't compute the full skyline for a sequence of breakpoints,
  because doing so would require performing the full horizontal layout
  first. My point is that it isn't possible to get _completely_ accurate
  height estimates unless we do the complete layout for every possible
  line-breaking configuration.
 
 But a lot of line-break configurations share lines.  And even more
 configurations share starting measures, so things that appear only at
 the beginning of a line don't need recalculation for every
 configuration.
 
 I see an ugly factor (basically O(n l) where l is the maximum line
 length in measures, and n the number of measures),

Ok, but if l is 10 then that's still 10 times as much layout time as
before.

It isn't just a matter of running time, though. There are plenty of
side-effects in the layout step (for example, grobs which get
destroyed). If we really wanted to try multiple layouts, someone would
have to go through the whole backend code to remove these side-effects.

Cheers,
Joe



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


Re: authors+contributors list

2010-06-30 Thread David Kastrup
Graham Percival gra...@percival-music.ca writes:

 On Wed, Jun 30, 2010 at 10:59:54AM +0200, Benkő Pál wrote:
 
 I'm listed in both Current contributors (as Pál Benkő) and in
 Previous Contributors (as Pal Benko),  someone please
 remove the latter one.

 Actually, that's fine -- Previous contributors is for anybody who
 worked on stuff before 2.13, while Current is for anybody who did
 stuff for 2.13.

 I'll try to think of how to clarify this on the page.

Oops.  I thought that the idea was not to duplicate listings.  I already
changed the entry, but if it is to be changed back, it seems like a good
idea to correct the spelling.

Incidentally, I have my doubts that Benkő will be rendered properly in
the printed PDF manual, but it would appear that it looks fine in HTML
and in info (inside of Emacs).

-- 
David Kastrup


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


Re: authors+contributors list

2010-06-30 Thread David Kastrup
Benkő Pál benko@gmail.com writes:

 Any new / new-ish contributors, please check:
  http://lilypond.org/website/authors.html

 The basic breakdown is:
 - if you have git access, you're a developer
 - if you don't, you're a contributor
 - developers shouldn't appear in the contributor list
 - developers can pretty much pick their own title/description/email/web

 AFAIK, we haven't been keeping track of this for the past 4-5 months,
 so I expect to have a few gaps.

 I'm listed in both Current contributors (as Pál Benkő) and in
 Previous Contributors (as Pal Benko),  someone please
 remove the latter one.

Done.

-- 
David Kastrup


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


Re: Vertical spacing regression !?

2010-06-30 Thread David Kastrup
Joe Neeman joenee...@gmail.com writes:

 It isn't just a matter of running time, though. There are plenty of
 side-effects in the layout step (for example, grobs which get
 destroyed). If we really wanted to try multiple layouts, someone would
 have to go through the whole backend code to remove these
 side-effects.

As I said: I was just putting out my spontaneous thoughts.  If I was
responsible manager, I'd declare make it so and rush out before
anybody clubs me.

Instead I am in the position of doomsayer.  And if you say typesetting
a complex score with 100 pages will take a week for the final, good
pass, then the obvious reply is that letting it done manually will
require two months.  So an expensive good option is still worth a lot,
as long as the expense is not ridiculous.

As long as the expense remains close to linear to the size of the task,
one can manage it by throwing heavier iron at it when time is important.

What you label as these side-effects sounds like something that is
going to come back and bite us, anyway.

So much for my gut feelings.

-- 
David Kastrup


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


Re: authors+contributors list

2010-06-30 Thread Graham Percival
On Wed, Jun 30, 2010 at 02:01:06PM +0200, David Kastrup wrote:
 
 Oops.  I thought that the idea was not to duplicate listings.  I already
 changed the entry, but if it is to be changed back, it seems like a good
 idea to correct the spelling.

Yes, please change it back, and fix the spelling.  Sorry about the
uncertainty here.

 Incidentally, I have my doubts that Benkő will be rendered properly in
 the printed PDF manual, but it would appear that it looks fine in HTML
 and in info (inside of Emacs).

I remember being told that texinfo 4.12 supported unicode and that
we should insert accented characters normally (without using
tex-like \'a notation).  I confess that I've never tried looking
at the actual pdf output.

Cheers,
- Graham

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


Re: authors+contributors list

2010-06-30 Thread David Kastrup
Graham Percival gra...@percival-music.ca writes:

 On Wed, Jun 30, 2010 at 02:01:06PM +0200, David Kastrup wrote:
 
 Oops.  I thought that the idea was not to duplicate listings.  I already
 changed the entry, but if it is to be changed back, it seems like a good
 idea to correct the spelling.

 Yes, please change it back, and fix the spelling.  Sorry about the
 uncertainty here.

Done.

-- 
David Kastrup


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


Re: Vertical spacing regression !?

2010-06-30 Thread Kieren MacMillan
Hi David,

 Instead I am in the position of doomsayer.  And if you say typesetting
 a complex score with 100 pages will take a week for the final, good
 pass, then the obvious reply is that letting it done manually will
 require two months.  So an expensive good option is still worth a lot,
 as long as the expense is not ridiculous.

I agree... but if we're trying to woo the masses, we're competing against 
FinSib, with their almost instantaneous spacing redraws.
Of course, as long as it's a switch, which can be flipped on when one has the 
luxury of running the compilation overnight, it's no problem IMO.

Cheers,
Kieren.


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


Re: [frogs] Re: tablature: ties and harmonics (issue1669041)

2010-06-30 Thread Carl Sorensen



On 6/30/10 1:48 AM, Marc Hohl m...@hohlart.de wrote:

 Carl Sorensen schrieb:
 [...]
 http://codereview.appspot.com/1669041/diff/26001/27004#newcode130
 scm/define-grob-properties.scm:130: (bracket-width ,number? Width of
 the harmonic angle bracket.)
 Why do we need bracket-width?  Why can't we just use the pre-existing
 width property?
  
 Hm, Neil proposed to use a more descriptive name for this property, IIUC.
 Done.

 
 Well, if we want to have this be part of the parenthesis-interface, then we
 may want to go ahead with bracket-width.
  
 Ok, done.
  
 [...]
 If instead of making the whiteout and the stencil different stencils, we
 combined them, then parenthesize-stencil would work great.  But this might
 not be possible if we need to have the stencil and the whiteout on separate
 layers.  As an alternative, parenthesize-stencil could be modified to take
 white-padding as an argument.  There's nothing that says we can't modify
 scm/stencil.scm so that it works better for tablature.  It's much better,
 IMO, to have one general-purpose piece of code than to have two separate
 special-purpose code chunks.
  
 So I tried to extend the parenthesize-stencil function in scm/stencil.scm.
 It compiles without error, but the regression file is cluttered up.

Can you tell me what you mean by the regression file is cluttered up?  Can
you tell me which examples fail the regression test for graphical output?
(The changes that indicate different amounts of memory don't bother me a
bit).

 
 I feel that this is not the right approach, either. I still don't understand
 why I have to shift the TabNoteHead #'layer at all. As far as I see it,
 HarmonicParenthesesItem #'stencils is a list of stencils, containing the
 left and the right angle bracket, which are placed either side of the
 TabNoteHead #'stencil. So the order in which the stancils are placed
 should not change anything at all, but if the TabNoteHead #'stencil is set
 *before* the HarmonicParenthesesItem #'stencils, it seems that some
 whitespace occurs between the angle brackets, overriding the
 already placed TabNoteHead.

Have you looked at the list of stencils created by
parenthesis-item::calc-parentehesis-stencils grob

and 

map stencil-whiteout (parenthesis-item::calc-parentehesis-stencils grob) to
see how they differ?

Sometimes lists get reversed during LilyPond processing.  Perhaps this is
happening to this list.  You might see what happens if you reverse the list
of stencils



 If on the other hand the whiteout would not appear, we could just use the
 parenthesize-tab-note-head function defined in scm/tablature.scm.
 This function could detect whether we have a harmonic and in this case
 would place the parentheses just further apart.
 
 Furthermore, I have a bad feeling to misuse your time reviewing my patch
 for error seeking issues, but I am stuck here.

I don't view it as a misuse of time.  But right now I'm very busy, so I may
not get to it very quickly

 I like the general idea of
 not defining the same functionality over and over again, but on the
 other hand,
 the parenthesize-stencil function in scm/stencil.scm does not seem to
 be used anywhere else ...

Parenthesize-stencil will be used for the new chord namer, so we need to
keep it in stencil.scm and keep the current functionality.


Thanks,

Carl


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


Patch for issue #1116 (one stencil in fill-line) (issue1689041)

2010-06-30 Thread joeneeman

Are you still waiting for someone to review this? If so, here are a
couple minor things:


http://codereview.appspot.com/1689041/diff/2001/3001
File scm/define-markup-commands.scm (right):

http://codereview.appspot.com/1689041/diff/2001/3001#newcode848
scm/define-markup-commands.scm:848: X RIGHT fill-space line-stencils)))
These two set!s could be written more concisely as
(set! line-stencils
  (stack-stencils-padding-list
   X RIGHT fill-space empty-stencil)))

http://codereview.appspot.com/1689041/diff/2001/3001#newcode850
scm/define-markup-commands.scm:850: (if ( word-count 1)
I know there aren't many comments in the code, but that doesn't mean you
can't add one...

http://codereview.appspot.com/1689041/show

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


Re: tablature: ties and harmonics (issue1669041)

2010-06-30 Thread n . puttock

On 2010/06/30 07:48:12, marc wrote:


So I tried to extend the parenthesize-stencil function in

scm/stencil.scm.

It compiles without error, but the regression file is cluttered up.


I can't test this.  Would you mind uploading another version here which
includes all the changes since the first patch set?


I feel that this is not the right approach, either. I still don't

understand

why I have to shift the TabNoteHead #'layer at all. As far as I see

it,

HarmonicParenthesesItem #'stencils is a list of stencils, containing

the

left and the right angle bracket, which are placed either side of the
TabNoteHead #'stencil. So the order in which the stancils are placed
should not change anything at all, but if the TabNoteHead #'stencil is

set

*before* the HarmonicParenthesesItem #'stencils, it seems that some
whitespace occurs between the angle brackets, overriding the
already placed TabNoteHead.


You added the default for 'whiteout to HarmonicParenthesesItem in your
first patch.  It applies the whiteout to the total extent: the two
brackets plus the space between.

I don't know why grobs with the same layer sometimes swap places, but
there's nothing we can do about it apart from change 'layer to ensure
visibility, unless you remove 'whiteout for the angle brackets.

Cheers,
Neil

http://codereview.appspot.com/1669041/show

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