lilypond-devel
[Top][All Lists]
Advanced

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

Re: Adds incipit section to NR (issue 108270043 by address@hidden)


From: Phil Holmes
Subject: Re: Adds incipit section to NR (issue 108270043 by address@hidden)
Date: Thu, 21 Aug 2014 11:20:58 +0100

----- Original Message ----- From: <address@hidden> To: <address@hidden>; <address@hidden>; <address@hidden>; <address@hidden>; <address@hidden>
Cc: <address@hidden>; <address@hidden>
Sent: Wednesday, August 20, 2014 9:40 PM
Subject: Re: Adds incipit section to NR (issue 108270043 by address@hidden)


On 2014/08/20 08:17:01, email_philholmes.net wrote:
>> ly/property-init.ly:303: ragged-last = ##f
>> wouldn't we also want system-count = 1 here?
>>
>> https://codereview.appspot.com/108270043/
>
> Possibly. I'd be happy to add that prior to push.
>
> --
> Phil Holmes


Actually, I've just checked.  System-count has no effect: the incipit
is
always a single line.

Take the following example:

\layout {
  indent = 3\cm
}

\new Staff \with {
  instrumentName = "Tenor"
}
{
  \incipit \relative c' { \time 6/1 \partial 1*2 e1 d \bar "|" c d e d c
e }
  \relative c' { \time 6/8 \partial 4 e8( d) c( d e d c e) | d2. }
}

Without the system-count restriction, its reaction to the small indent
is quite out of line.

I'd concluded something similar yesterday - but it was difficult to check since I was on the motorbike at the time!

The difference between our two pices of music used to check the effect is that you included a bar line, allowing Lily somewhere to break the line: I hadn't. In practice, whether the system-count = #1 is there or not makes no difference to whether acceptable output is produced. Because of http://code.google.com/p/lilypond/issues/detail?id=766 both look poor. I've attached examples of both: I believe it's worth adding the line and will do so, but it's rather like "putting lipstick on a pig".

This example shows some more problems: Outcommenting the assignment to
indent leads to a strange error message.  Outcommenting the assignment
to instrumentName lets the incipit disappear completely.

Not convinced the error message is strange: "error: unknown escaped string: `\indent' line-width = \indent". So clearly it is complaining that where we assign the value of line-width to the variable \indent, that variable doesn't exist. It seems we have three options.

a) Document the needs to set indent explicitly
b) Re-use the rather ugly '(or (false-if-exception (- indent incipit-width)) (* 0.5 indent))) syntax to set indent to a default for incipits c) If \indent does not exist, use the default value of indent set in paper-defaults. I'd assume this will need the same code as b)

c) would seem best, if I can get it working?

As to the incipit disappearing: I assume that this happens because we're over-riding the code that sets instrument name, but since we never tell Lily that there is an instrument name, she never calls that code. This can be fixed by using instrumentName = "". It's a bit ugly, but unless there is a better answer, then this should be documented.

Now taking your last reply into account

Don't agree at all.  I'd accept it if you proposed an alternative that

left aligned the instrument name as a possible option, but as it is, I

believe right alignment is the correct option here.  It should require
an
override to change that.  Don't accept this change should delay
pushing
this patch.

I think that our basic disagreement here has more or less grown over the
history of this patch which makes it somewhat sad that nobody else
chimed in.

I'll pick up on the right/left alignment issue first. I believe I concluded right-aligned to be the correct answer because we are effectively reusing the \indent value to set the width of the incipit, including instrument name. Now, if someone wishes to have the first line actually indented, this makes it impossible. See the 3rd image attached as an example.

See? The instrument name ("Altus") is stuck to the left margin and it's impossible to adjust its position. Right align it, however, and the first line can be indented to the value desired (with a little experimentation). The fourth image shows this. This is surely far better?

I think it boils down to a mismatch between your original intent
reflected in the patch title "Adds incipit section to NR" and the course
I am trying to take it.  To me it looks like you want a section in the
NR (rather than some snippet) that produces an incipit like the one you
can see in your scores.  And it would appear that everything which
happened in between is a distraction and an annoyance to you since it
does not actually change the image that appears while causing additional
work.

Not at all. I wanted a section in the NR that shows how to do incipits. Period. No-one else had picked this up and so we have the shitty state that currently exists. A section that just says "TBC". What help is that?

I did not try to recreate the incipits I see in my current scores: almost all of those use modern notation, which seems wrong to me - they probably do it because of the inability to use mensural. What I actually did was take the code for incipits that already existed (http://lsr.di.unimi.it/LSR/Snippet?id=582 and regression/incipt.ly), remove some code that seemed over-complex to me, fix the layout issues and go with that. I personally find the result pleasing and do now use it, but there has never been any attempt on my part to slavishly recreate incipits "like the one you can see in your scores".

As to my occasional irritation. I am driven solely by my desire to improve Lilypond, and particularly currently the documentation for ancient music. I believe that this can be an incremental process: if what I have proposed is better than the status quo ante, then I believe it should be pushed and then subsequently improved where not perfect. This is the basis of Agile development: make incremental improvements, let everyone (not just developers who understand the output from a review cycle) see the result, and improve further. I took on board wholeheartedly the need to create an incipit command and implemented one. That was over a week ago. If constructive comments had been made then, I could have pushed this and started work on the "Ancient and modern from one source" section, which also says TBC and is thus similarly useless. However, that will require incipits, and so I can't start. Similarly, if my patch were in the code base, you could have shown code for review that would have improved it, as opposed to simply disagreeing with what I had proposed.

However, we are changing from what was "just a snippet" into
functionality built into LilyPond.  In a snippet, hardwiring some
instrument alignment for the outcome desired for a particular graphic is
quite fine: the user who wants a different alignment can just change the
snippet code.  But when we are creating built-in functionality for
LilyPond, we don't want decisions hardwired into code that is no longer
user-maintained.  We also don't want surprising changes of defaults.
The last proposals of mine were for
a) changing the normal instrumentName placement to the default placement
without incipit

See my comment above. I explained why I did this, but it apparently remains wrong simply because it's not the default.

b) giving the \incipit command the facility to conveniently override
such defaults with a context modification
The intended graphic end result after all this effort would indeed be
exactly the same result you already have, but with the alignment choices
differing from the default explicitly specified by the code.

There's nothing wrong in changing a poor default to a good one, and then allowing the user to restore the poor one.

Now obviously one can commit and document one interface now and fix
stuff up afterwards.  But then that kind of documentation patchwork is
done by different authors and checked in and translated at different
times.

I would prefer to get stuff as correct and complete at the first go as
we can manage.  Of course, once you throw up your hands in disgust, the
work we can hope to get achieved from one author in one go is over.  And
naturally, there is not much of a point to exhaust your enthusiasm for
LilyPond over a single issue.  I'd still be glad if we could get the
code and documentation at least to a state where we don't need to touch
the translatable part in the NR (example use and description) any more
for a large variation of different applications, even if it will fall to
my lot to do further work on the \incipit definition in property-init.ly
itself in order to have it work in more situations.


https://codereview.appspot.com/108270043/

As I explained above, I believe in a kind of "push and show" approach. I am severely discouraged by continual "this is wrong, no it's not" bickering. I (as you may note today) can recover my enthusiasm despite this, but I find it wearing, as I know others do. I believe we need to work from a standpoint that we accept the view of the creator of the patch unless there is _proof_ that what is being proposed is wrong in terms of code quality or other damage to the code base. The two you cited above (missing indent, missing incipit) are examples of proof that there is something wrong and I will work to get rid of them. "I think the instrument name should be on the left" is not.

All the best,

--
Phil Holmes

Attachment: IncipitTest8.png
Description: PNG image

Attachment: IncipitTest8.png
Description: PNG image

Attachment: IncipitTest7.png
Description: PNG image

Attachment: IncipitTest7.png
Description: PNG image


reply via email to

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