On 5/21/18, 10:02 PM, "lilypond-devel on behalf of metachromatic" <lilypond-devel-bounces+c_sorensen=byu....@gnu.org on behalf of metachroma...@gmail.com> 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 fix. 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 generation. 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. <snip> 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, Carl _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel