I hope you also know about the tupletSpannerDuration property, described at http://lilypond.org/doc/v2.2/Documentation/user/out-www/lilypond/Tuplets.html which saves lots of typing if you have long runs of triplets.
/Mats
Erik Sandberg wrote:
On Thursday 02 September 2004 01.17, N�mo wrote:
Hello,
speaking about reduction, can I propose one more time my idear about lighter syntax for tuplet, something like a macro ? Here is the link to my last post : http://lists.gnu.org/archive/html/lilypond-devel/2004-02/msg00114.html
Since "{ }" are used for music expression and "[ ]" for manual beam why not use "#" or any other sign, or nothing (ok, I know, frog eater have strange idear :o) ?
To resume, something like that :
a8 #2/3# r b d g b a8 g16 #6/7# a f d r b g Or that a8 2/3 r b d g b a8 g16 6/7 a f d r b g
would stand's for
\times 2/3 {a8 r b} \times 2/3 {d g b} a8 \times 6/7 {g16 a f d r b g}
I have been thinking about this too.
What you ask for is really very close to the current syntax a8*2/3; but with triplet brackets added automagically. What you suggest is to add information in the note duration about whether it is a triplet and the triplet fraction. However, my guess is that the coders don't want to touch the definition of duration if they don't really have to.
Also, there are some problems; e.g. things like \times 2/3 {c8 c16 c c8} wouldn't be possible to notate, but \times could of course be used for those occasions.
I have an alternative suggestion of how to do this kind of triplet shorthand:
Some scheme code could be written that converts things like {a8*2/3 b c d8} to \times 2/3 {a8 b c} d8. I.e. something like
\tupletify {a8*2/3 b c d8}, or even better, {bla bla bla \tupletifyOn a8*2/3 b c d8 \tupletifyOff R1*4 }
I can try a quasi-formal definition of what the tupletification would do:
For each note, detect its tuplet fraction A/B. This could e.g. be done by comparing the actual duration (1/12 for a8*2/3) with the duration it looks like it has; i.e. 1/8 for a8*2/3. Take the fraction Actual/Visual duration and reduce it to A/B s.t. gcd(A,B)=1.
Or, take this method if it's possible to implement: just check how the duration of each note was written syntactically; iff the factor was written on the form a8*A/B, A,B integers, this note would be considered a tuplet with A/B as its fraction. So if you write it like a8*1*2/3, it would not be considered a tuplet.
Now when this is done, take each maximal sequence of notes with the same fraction A/B, and create the equivalent of \times A/B around it.
Sadly, I don't know if this stuff would be possible to do today in Lilypond; I am not a scheme hacker myself. Hackers / Nicolas, does this stuff sound reasonable in any way?
The only problem I see is for syntax highlighting (and time coding).
This would not be a problem with my version, if it is realistic.
Erik
_______________________________________________ lilypond-devel mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/lilypond-devel
-- ============================================= Mats Bengtsson Signal Processing Signals, Sensors and Systems Royal Institute of Technology SE-100 44 STOCKHOLM Sweden Phone: (+46) 8 790 8463 Fax: (+46) 8 790 7260 Email: [EMAIL PROTECTED] WWW: http://www.s3.kth.se/~mabe =============================================
_______________________________________________ lilypond-devel mailing list [EMAIL PROTECTED] http://lists.gnu.org/mailman/listinfo/lilypond-devel
