lilypond-user
[Top][All Lists]
Advanced

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

Re: Constructive Criticism and a Question


From: Frédéric Chiasson
Subject: Re: Constructive Criticism and a Question
Date: Mon, 18 Dec 2006 11:30:00 -0500

Jonathan «puts the finger» on an interesting topic.

While most of the basic commands for note entry are quite intuitive (and that's a good thing!), there are some commands that the syntax seems counter-intuitive for a composer or a simple musician.

For example, the command \times. Normally, we only write one number for tuplets, but in contemporary music, it is common to write a ratio to clarify the actual duration of the tuplet. For a triplet, we can write "3", but we can also write "3 : 2" over the note. It says "3 notes in the duration of 2" (I know most of you know that, but it is to explain the syntax. Also my English syntax might be bad). It is useful to make the difference between "7 : 8" and "7 : 4", for example. Some contemporary composers even write "7 : (quarter note figure)" to say "7 notes in a quarter note duration"

But the \times function demands for a triplet to write "2/3". I know it might seem logical to ask for the fraction of the note. But in fact, for a composer, it is far more intuitive to write "3/2" or even better, "3:2" than "2/3" for a triplet. Writing "2/3" for a 3:2 tuplet is not a big problem, but what about 10:7?

Also, for simple note entry, I think you should put MORE freedom for the possible order to write all the symbols. For example you want to put a eighth note at c# one octave higher, you want to make an octave check and make sure the sharp appears. We could write it in many ways

cis'!=''8       cis'!8=''       c8is!'=''       cis8'=''!       cis'8!=''    etc.

But LilyPond accepts only one way of writing it ... and I don't remember which one! And I didn't find any syntax rule about the exact order of the commands in the user manual. To put a syntax rule in the user manual would be good, but to make the compiler more flexible would be even better.

Finally, it would be a good thing to revise the grammar of the functions in LilyPond by composers and musicians who are NOT programmers to make the LilyPond language more intuitive, so the learning curve would be less steep. That would be a great thing to do for an eventual LilyPond 3.0. And I would be willing to give some of my free time for that!

Regards,

Frédéric Chiasson






2006/12/18, Mats Bengtsson < address@hidden>:


Jonathan Henkelman wrote:
>
> Ay - I hear you there.  I have been considering taking on this project, and I
> still need to figure out if I have time before I get myself in over my head
> and unable to keep up with the commitment others might have made to me.  A
> couple of questions I have been pondering in this regard:
>
> 1) Since I am fairly new to Lilypond, are there folks out there that would be
> willing to aid me in the likely event of confusion (I assume this group will
> do).
>
Of course!
> 2) If/when inconsistencies in the language turn up - as I'm sure they will -
> is there an interest amoung the programmers to correct these?
>
Since the parser is implemented using lex and bison, there shouldn't be any
formal inconsistencies. At second thought, larger and larger parts of
the syntax
is now implemented as Scheme functions, but they too have a formal
syntax check.
However, I'm sure you can find lots of language constructs that are
confusing.

Note that the syntax and semantics has evolved over the years and still is.
Many of these changes have in my opinion made the syntax more consequent
and simpler.

> 3) A complaint I have seen both commonly on this archive and also on
> the "todo" list of the co-ordinators for lilypond, is to try and make the
> learning curve a bit less steep.  One logical outcome of a document of this
> type is that it can be used to "clean up" the language - i.e. fulfilling this
> last goal.  Is there any interest on the part of the programmers/organizers to
> undertake this task should I ever get this doc completed.  I envision a
> process whereby the basic notation of lilypond stays the same (obviously), but:
>
> - perhaps some command forms would be dropped,
> - perhaps users would be forced into less freedom in the syntax
>
This is one concern I have raised a couple of times. There are lots of
optional
constructs, which often confuses new users. They certainly save some typing
and perhaps lower the initial threshold a bit for new users. However, I
think the
reduced number of key strokes only is significant in small test examples
(which
is what the main developers mostly do, and myself and other who help on the
mailing list) but not in any real world typesetting.
> - perhaps come commands would be morphed to fit into a framework that more
> closely matches other commands.
> - any changes would idealy be changeable in input scripts using some sed/diff
> routines to update routines would be automated (no point in unnecessarily
> agravating the end user)
>
That's what convert-ly does.
> Some examples:
> As I can see it now, there are numerous ways to create contexts.  In fact if I
> understand correctly, most commands create contexts.  One example I saw in the
> archive explicly used the context command in all (most?) of these cases.
> Perhaps either forcing the use of context everywhere a context is being
> created, or eliminating its use altogether as it is basically implied
> everywhere would be helpful
>
See "Creating contexts". Use \new if you want to make sure to get a new
unique
context. Use \context if you want to add on to an already existing one.
However,
you can use \context to create a new context if you manually make sure
that the
identifier is unique, so there's a flexibility that may cause confusion.
> I have been banging my head against the \combineparts routine.  Mats suggested
> a different form using polyphonic notation which does the task just as
> nicely.  \combineParts does not (to my naive eyes seem to fit the same form as
> the other commands (e.g. \new Staff, \new Voice etc.) Differences such as this
> make the learning curve steeper.
>
If you search the mailing list archives, you will find lots of
discussions on the
\partcombine function. The general conclusion is that it often doesn't
do what
you want to do and that it's impossible to support since the
implementation is
too complex. However, there are plans to reimplement it from scratch.
> I think in the end Lilypond would be a cleaner language, but as always happens
> when trying to eliminate legacy code there is always someones toes being
> stepped on...
>
> What do people think about this...
>
> [snip established and reported error]
>
>
>>> Finally, is the web interface for posting to this archive the most
>>>
> straight
>
>>> forward method?  I tried posting this yesterday, but it got lost in the
>>> ether.  Is there perhaps an email address I can send the post to, where it
>>> will get sent back for validation etc.
>>>
>> I believe the email address is at the bottom of every message on the
>> list: lilypond-user <at> gnu.org
>>
>
> Not on my web based threaded client (Loom?).  I feel like such a newbie, but I
> can't find it on the FAQ or anywhere else...  I can post to gmane.test, but
> how would I post to followup without using the web interface (i.e. to avoid
> the top-post checking in cases when I am not actually top-posting...)
>
See www.lilypond.org -> Documentation or www.lilypond.org -> About for
links to the mailing list archives and administration pages where you can
subscribe to the mailing lists and after that use your ordinary email
client to
send emails to the lists.

   /Mats


_______________________________________________
lilypond-user mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/lilypond-user


reply via email to

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