[Top][All Lists]

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

Re: Microrhythm

From: Carl Sorensen
Subject: Re: Microrhythm
Date: Tue, 22 May 2018 16:41:44 +0000
User-agent: Microsoft-MacOutlook/10.d.0.180513

On 5/21/18, 10:02 PM, "lilypond-devel on behalf of metachromatic" 
<address@hidden on behalf of address@hidden> wrote:
      Different percentages of microrhythm will require correspondingly
    larger tuplets, and, due to the bad design decision to represent
    rhythms internally in Lilypond as integers, you'll soon run out of
    integers to represent extremely large tuplets as the microrhythm
    fraction changes. This is a fatal flaw in Lilypond's design which of
    course no one has ever bothered to fix and never will lift a finger to
      The solution from the point of view of the progammers is to hurl
    insults at people like me who point out the design flaw. The solution
    from the point of view of users is to abandon Lilypond and use a MIDI
    editor to change the number of MIDI ticks in each microrhythm note,
    bypassing Lilypond's limitation of integer internal representation of
    durations. Standard stuff. As always, users regard programmers as a
    form of damage, and route around them.

The only person in this conversation I see hurling insults is you.

LilyPond is not intended as a MIDI editor.  It's reason for being is to create 
printed output.  The MIDI output is explicitly defined as being largely 
intended to help in validating that the music is entered correctly.

If you would like LilyPond to function better as a MIDI editor, I'm sure that 
patches to resolve the "fatal flaw" would be carefully considered for inclusion 
in LilyPond.
       BTW, it's trivial in Lilypond to get the program to print out
    entirely irrational time signatures or note values with square root
    (or third root, or whatever) appended. Turn the time signature off and
    then enter code to get Lilypond to print the radical sign with
    appropriate numbers inside, etc, while approximating irrational time
    signature and/or note values with a large integer ratio. The same
    problem applies, however -- Lilypond does OK if you use one or two
    irrational tuplet values, like (say) 3 in the time of the square root
    of 11, or the square root of 17 in the time of the cube root of 71,
    but if you include more than a handful of different such irrational
    values you quickly run out of integers with which to represent such
    numbers internally within Lilypond, and the program barfs and says
    "moment not increasing. Aborting interpretation" and halts.  Since
    this is a major bug, naturally it has never been addressed, and
    obviously it never will be addressed by any of the Lilypond
    programmers. Standard, usual, typical, and quotidian.

You may not realize it, but this paragraph shows that LilyPond does what it is 
intended to do -- generate printed output, even with non-traditional music.   
And non-traditional music is somewhat outside of LilyPond's core goal, which is 
to automatically generate music according to best engraving practices for 
common period music.

And for my personal interests in LilyPond, fixing the "major bug" of failing to 
work with large irrational tuplet values and time signatures is completely 
uninteresting.  I'd much rather spend my limited time working on things that I 
personally believe are much more significant in meeting LilyPond's key goal.  
For example, my next two projects are improving single-stem tremolos and trying 
to make the autobeaming algorithm match up better with the human rules for beam 

I first got started in LilyPond development because I wanted fret diagrams, and 
they didn't exist in LilyPond.  Rather than complaining about the developers 
who wouldn't implement them, I jumped in and developed fret diagrams, first as 
a markup, and then as a real element of LilyPond, with contexts and engravers.

If you want to change the fundamental internal representation so that it can 
work with large irrational time signatures and tuplet values, please go ahead 
and do so.  As long as the code your write meets LilyPond standards, I'm sure 
it will eventually get accepted.  And if it doesn't meet the standards, you'll 
get help modifying it to make it meet the standards.

      And here's the Lilypond code for getting irrational duration rests
    (square root of 3: 1 and the square root of 7:1, in this case)
    approximated by the large integer ratios 1351/780 and 1307/494, which
    are accurate to about 1 part in 10,000, in combination with
    conventional quarter notes.  You can use a simple rational
    approximation program to approximate any desired irrational value,
    like the square root of 71, using large integer ratios within
    Lilypond. It would be nice if this process of rational approximation
    could be done inside Lilypond -- it's a simple version of Euclid's
    algorithm and could certainly be made into a simple scheme function.
    Printing out the irrational tuplets and/or irrational time signature
    is a really simple scheme function that would take some basic user
    input (like "Square root of which number for tuplet?") and spit out
    the appropriate values inserted in the code below. Since none of the
    programmers will ever lift a finger to do it,  I'll see if I can write
    such a scheme function if I get time. Doesn't sound very hard (fatal
    last words!).

It seems to me like 1 part in 10,000 is certainly more accurate than is needed. 
 But I'm an engineer, so I regularly work with approximations and am not 
bothered by undetectable differences.

Why should any "LilyPond programmer" "lift a finger" to do work that you want, 
instead of work that they want?  Or for that matter, to do work that you want 
instead of doing something other than work on LilyPond?  As far as I can see, 
you've offered nothing except castigation to those programmers.  Have you 
offered to pay somebody to make the changes you'd like?  Have you asked anybody 
what it would take to get them interested in attacking your problem (and it is 
your problem, not theirs)?  Browbeating of volunteers seldom works, in my 
experience.  There's an old English saying "You get more flies with honey than 
vinegar".  You've tried vinegar, but I haven't seen any honey.

Hoping that the relationship can be reset,


reply via email to

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