Re: Suggestion: Use non powers of 2 for tuplets

2021-03-27 Thread Christian Masser
Thanks for that lengthy answer, David!

Of course it's easy for me to find pros and cons without having the
responsibility over such a big project. At the end of the day it's you devs
that watch over the sanity and compatibility of Lilypond - and that's good
this way. After all I just wanted to point out some potential positive side
aspects where I saw the negative ones well covered, because I (still) think
the idea has at least potential. :)

@Martín:

> Except when it wouldn’t be easy to notate that way. In a 4/5 time what can 
> easily be notated as \tuplet 5/4 { c2 d4 e4 } (an incomplete tuplet, which is 
> what I would expect to see in print) would have to be notated as "c2,5 d5 e5" 
> using this other notation. Other irrational time signatures would need such 
> decimal numbers for some note values as well. It doesn’t seem to be more 
> practical to deal with decimals than just writing what you intend Lilypond to 
> print, in your case "c2 \tuplet 3/2 {d4 e }".
>
> When having multiple ways to do things it's always easy to find examples
where one way is superior to the other. This in itself does not necessarily
lead to one way being worse than the other. (And yes, "c2.5" doesn't make
sense at all, even though it would be a mathematically well defined length.)

Anyway, that's more than I ever wanted to say on this topic. Hope you all
have a nice weekend!

All the best
Christian

Am Sa., 27. März 2021 um 00:16 Uhr schrieb David Kastrup :

> Christian Masser  writes:
>
> > Hi David!
> >
> > Fully understanding that you would probably be the one that would
> > (have or not have to) implement this mess,
>
> No, that isn't it.  I am not really all that conservative: there have
> been loads of stuff I squeezed into the existing syntax, usually trying
> to make sure that it fits logically there.
>
> But LilyPond's concept of durations is solidly married to notational
> conventions that are rooted in powers of two.  It is somewhat
> normatively rooted in classical conventions (which means that the
> representation for things like chant is overly rhythmically rigid and it
> doesn't reflect the ambiguities of mensural notation) but in the end the
> graphical symbols it picks for representing note lengths are tightly
> related to the input, and the internal representation of music, again,
> is both representative of the input and the graphical output.
>
> > instead of trying to answer every single question you asked, I'd like
> > to make a technical proposal of how those notes could be
> > rendered. (And just for context: I very well understand, that Lilypond
> > has to display music for other people to play, and I'm one of those
> > guys that will try 10-20 different versions of a bar if I get the
> > feeling that my idea isn't clearly put to paper - so I do understand
> > that there's a difference between "c4. c4." and "\tuplet 2/3 { c4 c4
> > }" ).
> >
> > The major problem behind the concept of single tuplet-parts like "c6" -
> or
> > in the syntax we have right now: "\times 2/3 { c4 }" - is, that our
> western
> > music has no common consensus of how to write unfinished tuplets. The way
> > I've seen these written was with a "unfinished" bracket above it. (So the
> > small line at the right end of the bracket was missing.) If you're
> > interested in it, I should have a picture of the corresponding bars
> > somewhere.
> >
> > My proposal would be:
> > a) Display a note with length x using the largest base-2-note smaller
> than
> > it. For example: c3 would be displayed using c2, c5/6/7 using c4,
> > c9/10/11/etc. using c8 and so on.
> > b) Display them with an open bracket above the note, showing the
> > corresponding number above it, no groupings unless
> > c) Use '[' and ']' to manually group those notes. Maybe(!) automise
> > grouping whenever note values add up to a base-2-value. (Or for example,
> if
> > the time signature is quarter based, auto-group only when a multiple of a
> > quarter is reached. Semi-quaver based? Auto-group only when a multiple
> of a
> > semi-quaver is reached.)
>
> Again: it is not LilyPond's job to invent notation.  If you have a
> notation system and want to give LilyPond the capability of reflecting
> parts of it in the input, one can see what would be required for making
> music functions et al flexible enough to deal with a reasonable input
> representation.
>
> But I would consider it a mistake to nail this into a hardwired syntax
> with a meaning not rooted in existing conventions.  What are we going to
> do when conventions come into being that clash with what LilyPond has
> chosen to do?
>
> > I'm sure there are questions and corner cases I haven't thought about,
> > but in general this would seem to me as a very sane default way to
> > render these elements and I - personally and subjectively - would
> > consider it a meaningful addition to Lilypond.
>
> I wouldn't.  This is much more invasive than the
> Completion_heads_engraver and we had tons of back-and-forth 

Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Carl Sorensen


On 3/26/21, 5:41 PM, "lilypond-user on behalf of Valentin Petzel" 
 wrote: 

Your points about beaming and grouping are reasonable, but the idea is not 
replacing tuplet with such a notation, but making such notation easier. And 
there are many cases where the default grouping by beat structure is pretty 
much what you want. In the worst case one can simply group the notes 
manually, 
which is still much faster than doing lots of different tuplets and hiding 
the 
Brackets (if you do a piece that frequently changes between division 2 and 
division 3 this takes a stupid amount of time!)

You could easily write your own music function to write in division 3.

\inThree {c8 c c}

Or \"in3"{c8 c c}

Or \in³{c8 c c}

Your function could do whatever you would like to do about hiding brackets or 
anything else you wanted to do.

And it wouldn't require rewriting LilyPond's parser.  Or hardwire 
non-conventional notation into LilyPond's core.

Carl




Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Valentin Petzel  writes:

> I’m not really sure why you’d call it invasive. It would change
> nothing about the way Lilypond works, but just add power to the input
> language.

The input language is a comparatively direct representation of the music
expressions, so you are not adding power to the input language but are
declaring a part of the input language that is to bypass LilyPond's
concept of music.

> Your points about beaming and grouping are reasonable, but the idea is
> not replacing tuplet with such a notation, but making such notation
> easier. And there are many cases where the default grouping by beat
> structure is pretty much what you want. In the worst case one can
> simply group the notes manually, which is still much faster than doing
> lots of different tuplets and hiding the Brackets (if you do a piece
> that frequently changes between division 2 and division 3 this takes a
> stupid amount of time!)

LilyPond gives you music functions and other tools for programmatically
creating music from input, and that is essentially what you want to do
here.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Valentin Petzel
I’m not really sure why you’d call it invasive. It would change nothing about 
the way Lilypond works, but just add power to the input language.

Your points about beaming and grouping are reasonable, but the idea is not 
replacing tuplet with such a notation, but making such notation easier. And 
there are many cases where the default grouping by beat structure is pretty 
much what you want. In the worst case one can simply group the notes manually, 
which is still much faster than doing lots of different tuplets and hiding the 
Brackets (if you do a piece that frequently changes between division 2 and 
division 3 this takes a stupid amount of time!)

Cheers,
Valentin

signature.asc
Description: This is a digitally signed message part.


Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Christian Masser  writes:

> Hi David!
>
> Fully understanding that you would probably be the one that would
> (have or not have to) implement this mess,

No, that isn't it.  I am not really all that conservative: there have
been loads of stuff I squeezed into the existing syntax, usually trying
to make sure that it fits logically there.

But LilyPond's concept of durations is solidly married to notational
conventions that are rooted in powers of two.  It is somewhat
normatively rooted in classical conventions (which means that the
representation for things like chant is overly rhythmically rigid and it
doesn't reflect the ambiguities of mensural notation) but in the end the
graphical symbols it picks for representing note lengths are tightly
related to the input, and the internal representation of music, again,
is both representative of the input and the graphical output.

> instead of trying to answer every single question you asked, I'd like
> to make a technical proposal of how those notes could be
> rendered. (And just for context: I very well understand, that Lilypond
> has to display music for other people to play, and I'm one of those
> guys that will try 10-20 different versions of a bar if I get the
> feeling that my idea isn't clearly put to paper - so I do understand
> that there's a difference between "c4. c4." and "\tuplet 2/3 { c4 c4
> }" ).
>
> The major problem behind the concept of single tuplet-parts like "c6" - or
> in the syntax we have right now: "\times 2/3 { c4 }" - is, that our western
> music has no common consensus of how to write unfinished tuplets. The way
> I've seen these written was with a "unfinished" bracket above it. (So the
> small line at the right end of the bracket was missing.) If you're
> interested in it, I should have a picture of the corresponding bars
> somewhere.
>
> My proposal would be:
> a) Display a note with length x using the largest base-2-note smaller than
> it. For example: c3 would be displayed using c2, c5/6/7 using c4,
> c9/10/11/etc. using c8 and so on.
> b) Display them with an open bracket above the note, showing the
> corresponding number above it, no groupings unless
> c) Use '[' and ']' to manually group those notes. Maybe(!) automise
> grouping whenever note values add up to a base-2-value. (Or for example, if
> the time signature is quarter based, auto-group only when a multiple of a
> quarter is reached. Semi-quaver based? Auto-group only when a multiple of a
> semi-quaver is reached.)

Again: it is not LilyPond's job to invent notation.  If you have a
notation system and want to give LilyPond the capability of reflecting
parts of it in the input, one can see what would be required for making
music functions et al flexible enough to deal with a reasonable input
representation.

But I would consider it a mistake to nail this into a hardwired syntax
with a meaning not rooted in existing conventions.  What are we going to
do when conventions come into being that clash with what LilyPond has
chosen to do?

> I'm sure there are questions and corner cases I haven't thought about,
> but in general this would seem to me as a very sane default way to
> render these elements and I - personally and subjectively - would
> consider it a meaningful addition to Lilypond.

I wouldn't.  This is much more invasive than the
Completion_heads_engraver and we had tons of back-and-forth issues
picking compromise semantics for it (and its behavior is still
discontinuous and intentionally so).  And it is off by default.

> (And I also think that it would be very much in the spirit of
> Lilypond, but who am I to judge THAT?)  I understand at the same time
> that, given there is no convention right now, this might result in
> compatibility problems if in 10, 20 years there would be consensus
> about this and it would look completely different then Lilypond hat
> implemented it - but this is something I highly doubt.

It's not LilyPond's job to invent notation.

No matter who'd pick up the job, I'd consider it a bad idea.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Christian Masser
Hi David!

Fully understanding that you would probably be the one that would (have or
not have to) implement this mess, instead of trying to answer every single
question you asked, I'd like to make a technical proposal of how those
notes could be rendered. (And just for context: I very well understand,
that Lilypond has to display music for other people to play, and I'm one of
those guys that will try 10-20 different versions of a bar if I get the
feeling that my idea isn't clearly put to paper - so I do understand that
there's a difference between "c4. c4." and "\tuplet 2/3 { c4 c4 }" ).

The major problem behind the concept of single tuplet-parts like "c6" - or
in the syntax we have right now: "\times 2/3 { c4 }" - is, that our western
music has no common consensus of how to write unfinished tuplets. The way
I've seen these written was with a "unfinished" bracket above it. (So the
small line at the right end of the bracket was missing.) If you're
interested in it, I should have a picture of the corresponding bars
somewhere.

My proposal would be:
a) Display a note with length x using the largest base-2-note smaller than
it. For example: c3 would be displayed using c2, c5/6/7 using c4,
c9/10/11/etc. using c8 and so on.
b) Display them with an open bracket above the note, showing the
corresponding number above it, no groupings unless
c) Use '[' and ']' to manually group those notes. Maybe(!) automise
grouping whenever note values add up to a base-2-value. (Or for example, if
the time signature is quarter based, auto-group only when a multiple of a
quarter is reached. Semi-quaver based? Auto-group only when a multiple of a
semi-quaver is reached.)

I'm sure there are questions and corner cases I haven't thought about, but
in general this would seem to me as a very sane default way to render these
elements and I - personally and subjectively - would consider it a
meaningful addition to Lilypond. (And I also think that it would be very
much in the spirit of Lilypond, but who am I to judge THAT?)
I understand at the same time that, given there is no convention right now,
this might result in compatibility problems if in 10, 20 years there would
be consensus about this and it would look completely different then
Lilypond hat implemented it - but this is something I highly doubt.

And after all: If the user doesn't like the way the notes are rendered,
there's always the possibility to use the conventional methods of \times
and \tuplet.

Hope this helps to convey my 2 cents a little bit clearer. :)

All the best
Christian



Am Fr., 26. März 2021 um 22:21 Uhr schrieb David Kastrup :

> Christian Masser  writes:
>
> > Just adding my two cents to this debate. In my humble opinion it's pretty
> > clear what "12" in this context means as Lilypond's syntax is always
> about
> > the divisor. c4 is always a quarter of a whole note. Therefore c12 would
> > always be a twelth of a whole note, thus a third of a quarter note.
>
> You mean, an eighth triole?  Or an eighth sextuplet?

> And c7 would always be a seventh of a whole note.
>
> How would this print?  LilyPond does not only produce MIDI, you know.

> With this in mind, why should input like "c3" yield an error if it's
> > otherwise very consistend with the syntax and definitely unambiguous?
>
> It is unambiguous?  Is it a half note triplet?  Or a sextuplet in 2/1
> time?  To be printed with a bracket or not?

> (And the dots also don't pose problems in a mathematical sense, as
> > it's clearly defined, that one dot prolonges the note by a half of
> > it's value, two dots by a half and a quarter and so on.)
>
> You are confusing the sonics with the visuals.  LilyPond would not be
> free to replace c4. c4. with \tuplet 2/3 { c4 c4 } and vice versa even
> though the MIDI would sound the same.

> Things like these should be easy in Lilypond, considering it's sheer
> > flexibility and hackability. And if I were a composer writing in 5/6,
> > i would probably be happy if I could just write "c2 d6 e6 |".
>
> Problem is that LilyPond is not the one playing the music, but it
> produces a print that somebody has to play.  And when there is no
> notation corresponding to the input, LilyPond will have a hard time
> suggesting how to play things.
>
-- 
> David Kastrup
>


Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Martinrinconbotero
  
  

  
  >  Things like these should be easy in Lilypond, considering it's sheer  >  
flexibility and hackability. And if I were a composer writing in 5/6,  >  i 
would probably be happy if I could just write "c2 d6 e6 |".  
  
  

  
  
  
 Except when it wouldn’t be easy to notate that way. In a 4/5 time what can 
easily be notated as \tuplet 5/4 { c2 d4 e4 } (an incomplete tuplet, which is 
what I would expect to see in print) would have to be notated as "c2,5 d5 e5" 
using this other notation. Other irrational time signatures would need such 
decimal numbers for some note values as well. It doesn’t seem to be more 
practical to deal with decimals than just writing what you intend Lilypond to 
print, in your case "c2 \tuplet 3/2 {d4 e }".
  
  
  
 —Martín.
  
  
  www.martinrinconbotero.com (http://www.martinrinconbotero.com) 
  

  
  
>   
> On Mar 26, 2021 at 10:23 PM,  mailto:d...@gnu.org)>  wrote:
>   
>   
>   
>  Christian Masser   (mailto:christian.mas...@gmail.com)>  writes:  >  Just adding my two cents to 
> this debate. In my humble opinion it's pretty  >  clear what "12" in this 
> context means as Lilypond's syntax is always about  >  the divisor. c4 is 
> always a quarter of a whole note. Therefore c12 would  >  always be a twelth 
> of a whole note, thus a third of a quarter note. You mean, an eighth triole? 
> Or an eighth sextuplet?  >  And c7 would always be a seventh of a whole note. 
> How would this print? LilyPond does not only produce MIDI, you know.  >  With 
> this in mind, why should input like "c3" yield an error if it's  >  otherwise 
> very consistend with the syntax and definitely unambiguous? It is 
> unambiguous? Is it a half note triplet? Or a sextuplet in 2/1 time? To be 
> printed with a bracket or not?  >  (And the dots also don't pose problems in 
> a mathematical sense, as  >  it's clearly defined, that one dot prolonges the 
> note by a half of  >  it's value, two dots by a half and a quarter and so 
> on.) You are confusing the sonics with the visuals. LilyPond would not be 
> free to replace c4. c4. with \tuplet 2/3 { c4 c4 } and vice versa even though 
> the MIDI would sound the same.  >  Things like these should be easy in 
> Lilypond, considering it's sheer  >  flexibility and hackability. And if I 
> were a composer writing in 5/6,  >  i would probably be happy if I could just 
> write "c2 d6 e6 |". Problem is that LilyPond is not the one playing the 
> music, but it produces a print that somebody has to play. And when there is 
> no notation corresponding to the input, LilyPond will have a hard time 
> suggesting how to play things. -- David Kastrup  
>
>   
  
  
 

Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Christian Masser  writes:

> Just adding my two cents to this debate. In my humble opinion it's pretty
> clear what "12" in this context means as Lilypond's syntax is always about
> the divisor. c4 is always a quarter of a whole note. Therefore c12 would
> always be a twelth of a whole note, thus a third of a quarter note.

You mean, an eighth triole?  Or an eighth sextuplet?

> And c7 would always be a seventh of a whole note.

How would this print?  LilyPond does not only produce MIDI, you know.

> With this in mind, why should input like "c3" yield an error if it's
> otherwise very consistend with the syntax and definitely unambiguous?

It is unambiguous?  Is it a half note triplet?  Or a sextuplet in 2/1
time?  To be printed with a bracket or not?

> (And the dots also don't pose problems in a mathematical sense, as
> it's clearly defined, that one dot prolonges the note by a half of
> it's value, two dots by a half and a quarter and so on.)

You are confusing the sonics with the visuals.  LilyPond would not be
free to replace c4. c4. with \tuplet 2/3 { c4 c4 } and vice versa even
though the MIDI would sound the same.

> Things like these should be easy in Lilypond, considering it's sheer
> flexibility and hackability. And if I were a composer writing in 5/6,
> i would probably be happy if I could just write "c2 d6 e6 |".

Problem is that LilyPond is not the one playing the music, but it
produces a print that somebody has to play.  And when there is no
notation corresponding to the input, LilyPond will have a hard time
suggesting how to play things.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Christian Masser
Just adding my two cents to this debate. In my humble opinion it's pretty
clear what "12" in this context means as Lilypond's syntax is always about
the divisor. c4 is always a quarter of a whole note. Therefore c12 would
always be a twelth of a whole note, thus a third of a quarter note. And c7
would always be a seventh of a whole note. With this in mind, why should
input like "c3" yield an error if it's otherwise very consistend with the
syntax and definitely unambiguous? (And the dots also don't pose problems
in a mathematical sense, as it's clearly defined, that one dot prolonges
the note by a half of it's value, two dots by a half and a quarter and so
on.)
On the contrary side, it may lead to all the issues outlined by many of you
already, like Lilypond having to define a standard grouping - which
probably doesn't align with the grouping of 8th beams - or guess the
grouping, and define functions to change it, and so on. Also it almost
certainly would introduce new problems users might run into.

A practical point of view that also might be considered is the one of
contemporary music. Just one example, because I happend to perform the
piece, is the opera "Powder her face" by Thomas Adès, that uses e.g. 5/6
time signature (mostly for singular bars, with a lot of time signature
changes!) - which looks very odd at beginning. But: once you're through the
thought process it's far easier to read than writing "5/4" and adding the
relation that "the new quarter note equals a quarter triplet of the bar
before" and vice versa after a single bar of music. Things like these
should be easy in Lilypond, considering it's sheer flexibility and
hackability. And if I were a composer writing in 5/6, i would probably be
happy if I could just write "c2 d6 e6 |".

Christian

Am Fr., 26. März 2021 um 18:22 Uhr schrieb David Kastrup :

> Kevin Barry  writes:
>
> > I think the convenience of this feature does not justify the added
> > complexity.
>
> It's mostly the conceptual vagueness that is the problem here.  There
> are no actual note values corresponding graphically to the input in an
> unambiguous manner, so LilyPond would need to do the equivalent of a
> MIDI-to-notation converter in picking a visual representation (and there
> are even things like composers disagreeing about whether septuplets are
> 7 in the space of 4 or 7 in the space of 8).
>
> Does 12 mean sextuplets or triplets?  What is the meaning of 12.. ?
> It's just far too muddy domain to make a major part of the syntax.
>
> --
> David Kastrup
>
>


Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Kevin Barry  writes:

> I think the convenience of this feature does not justify the added
> complexity.

It's mostly the conceptual vagueness that is the problem here.  There
are no actual note values corresponding graphically to the input in an
unambiguous manner, so LilyPond would need to do the equivalent of a
MIDI-to-notation converter in picking a visual representation (and there
are even things like composers disagreeing about whether septuplets are
7 in the space of 4 or 7 in the space of 8).

Does 12 mean sextuplets or triplets?  What is the meaning of 12.. ?
It's just far too muddy domain to make a major part of the syntax.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Kevin Barry
I think the convenience of this feature does not justify the added
complexity.

Kevin



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Jean Abou Samra



Le 26/03/2021 à 14:26, Jean Abou Samra a écrit :

Le 26/03/2021 à 12:43, Werner LEMBERG a écrit :


For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
and so on.

LilyPond is a notation program first, and your proposal does not map
to notation since tuplets also involve choices of beaming and
division.

There's a lot of music that contains tuplets (mainly triplets) without
tuplet numbers.  Such a notation would simplify things.

I actually fail to see this as a compelling use case.


This was an accidentally sent part of a draft of the previous message.

Sorry for the noise.





Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Jean Abou Samra

Le 26/03/2021 à 12:43, Werner LEMBERG a écrit :


For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
and so on.

LilyPond is a notation program first, and your proposal does not map
to notation since tuplets also involve choices of beaming and
division.

There's a lot of music that contains tuplets (mainly triplets) without
tuplet numbers.  Such a notation would simplify things.

I actually fail to see this as a compelling use case.



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Jean Abou Samra

Hello!

Currently Lilypond only supports powers of 2 for specifying duration. Could we
use the other numbers for common divisions?

For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7 for 8*7/8,
9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2 and so on.

This would be quite useful, especially for the divisions of three (*3/2),
because stuff like this
e8*2/3 dis cis cis8. dis16 e8*2/3 dis cis cis8. dis16
Is not really nice to enter, while
e12 dis cis cis8. dis16 e12 dis cis cis8. dis16
would be much less effort.

Cheers, Valentin


Thank you for proposing your ideas! That said,
I admit some skepticism to this particular
proposal, see below.


These things are done during parsing, and I don’t know if there is any way to
pass flags or tokens to the parser. If it is possible, one could try to pass a
rounding flag, or one might even be able to modify this such that the user can
pass a scheme function for parsing. But I do not know enough about the parser
to know if such stuff is possible (the problem here is that the file that is
being parsed would have to tell the parser how to parse it, which can be quite
a hen and egg problem).


The parser does already have such capabilities.
For example, you can define your own note
names -- so why not your own durations after all.


Le 26/03/2021 à 12:43, Werner LEMBERG a écrit :


For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
and so on.

LilyPond is a notation program first, and your proposal does not map
to notation since tuplets also involve choices of beaming and
division.

There's a lot of music that contains tuplets (mainly triplets) without
tuplet numbers.  Such a notation would simplify things.


In my experience, the triplets in question most often
come in a chain. The three-argument form of \tuplet
(as in \tuplet 3/2 8 { c16 c c c c c }) helps with
those cases.

Having special durations equivalent to multipliers
defeats separation of content and layout through
non-semantic markup since you can't get the tuplet
brackets and numbers back.

I'll also have to admit that my first thought when
reading the original post was: FRACTRAN++!

The point is: smart does not mean user-friendly;
often to the contrary in fact.

Best regards,
Jean


PS: https://esolangs.org/wiki/Fractran++




Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Werner LEMBERG  writes:

>>> For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
>>> for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
>>> and so on.
>> 
>> LilyPond is a notation program first, and your proposal does not map
>> to notation since tuplets also involve choices of beaming and
>> division.
>
> There's a lot of music that contains tuplets (mainly triplets) without
> tuplet numbers.  Such a notation would simplify things.

There are differences in weight and beaming for triplets and sextuplets
that formally come in the same duration.  Just like there is a
difference in

\tuplet 2/3 { c4 c4 }

and

{ c4. c4. }

Musical notation (and thus LilyPond) writes down more than what appears
in the MIDI.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Werner LEMBERG


>> For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
>> for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
>> and so on.
> 
> LilyPond is a notation program first, and your proposal does not map
> to notation since tuplets also involve choices of beaming and
> division.

There's a lot of music that contains tuplets (mainly triplets) without
tuplet numbers.  Such a notation would simplify things.


Werner



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread David Kastrup
Valentin Petzel  writes:

> Hello!
>
> Currently Lilypond only supports powers of 2 for specifying
> duration. Could we use the other numbers for common divisions?
>
> For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7 for
> 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2 and so
> on.

LilyPond is a notation program first, and your proposal does not map to
notation since tuplets also involve choices of beaming and division.

> This would be quite useful, especially for the divisions of three (*3/2), 
> because stuff like this
> e8*2/3 dis cis cis8. dis16 e8*2/3 dis cis cis8. dis16
> Is not really nice to enter,

It also is distracting to read (even if Baroque autographs tend to omit
tuplet numbers like that).  Use \tuplet instead.

> while e12 dis cis cis8. dis16 e12 dis cis cis8. dis16 would be much
> less effort.

It does not indicate what note values to use visually.  If we only
wanted to produce Midi, we'd not need to distinguish cis and des either.

-- 
David Kastrup



Re: Suggestion: Use non powers of 2 for tuplets, Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Valentin Petzel
Hello Werner,

I just suggested these value as this seems to be what is commonly found with 
music (and it is rhythmically viable nontheless). Basically we’re rounding a 
division to the nearest power of 2 (it does not make a lot of sense to use 7 
4th notes or something like 15 8th notes for such subdivisions, since 7 8th 
notes or 15 16th notes would be much closer).
A pseudo code for this:

(number) → (duration):
Lower = 2**ilog(number, 2)
Upper = Lower*2
If (number - Lower <= Upper - number) return Lower*number/Lower
Else return Upper*number/Upper

These things are done during parsing, and I don’t know if there is any way to 
pass flags or tokens to the parser. If it is possible, one could try to pass a 
rounding flag, or one might even be able to modify this such that the user can 
pass a scheme function for parsing. But I do not know enough about the parser 
to know if such stuff is possible (the problem here is that the file that is 
being parsed would have to tell the parser how to parse it, which can be quite 
a hen and egg problem).

Cheers,
Valentin

signature.asc
Description: This is a digitally signed message part.


Re: Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread ebenezer

Hello,

Does \scaleDurations not already fit the bill?

See the section "Scaling durations" at 
http://lilypond.org/doc/v2.22/Documentation/notation-big-page



On 2021-03-26 02:19, Valentin Petzel wrote:

Hello!

Currently Lilypond only supports powers of 2 for specifying duration. Could we
use the other numbers for common divisions?

For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7 for 8*7/8,
9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2 and so on.

This would be quite useful, especially for the divisions of three (*3/2),
because stuff like this
e8*2/3 dis cis cis8. dis16 e8*2/3 dis cis cis8. dis16
Is not really nice to enter, while
e12 dis cis cis8. dis16 e12 dis cis cis8. dis16
would be much less effort.

Cheers, Valentin





Re: Suggestion: Use non powers of 2 for tuplets,Suggestion: Use non powers of 2 for tuplets

2021-03-26 Thread Werner LEMBERG


> Currently Lilypond only supports powers of 2 for specifying
> duration.  Could we use the other numbers for common divisions?
> 
> For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7
> for 8*7/8, 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2
> and so on.
> 
> This would be quite useful, especially for the divisions of three
> (*3/2), because stuff like this
>
>   e8*2/3 dis cis cis8. dis16 e8*2/3 dis cis cis8. dis16
>
> Is not really nice to enter, while
>
>   e12 dis cis cis8. dis16 e12 dis cis cis8. dis16
>
> would be much less effort.

Sounds like a nice idea.  However, I think that your values have a
flaw.  I think it should rather be

2
3   2*3/2

4
5   4*5/4
6   4*6/4 = 4*3/2
7   4*7/4   <===

8
9   8*9/8
   10   8*10/8 = 8*5/4
   11   8*11/8
   12   8*12/8 = 8*3/2
   ...

to be algorithmically derivable.  Maybe the user should be able to set
up exceptions, but this might need a lot of changes.


Werner



Re: Suggestion: Use non powers of 2 for tuplets

2021-03-25 Thread Shane Brandes
You are on your own on that one. I think it just leads to the unpleasant
chaos of having to look up what those mean in a table somewhere after you
have forgotten why you put that into your score.

-Shane

On Thu, Mar 25, 2021 at 10:20 PM Valentin Petzel  wrote:

> Hello!
>
> Currently Lilypond only supports powers of 2 for specifying duration.
> Could we
> use the other numbers for common divisions?
>
> For example: We could use 3 for 2*3/2, 5 for 4*5/4, 6 for 4*3/2, 7 for
> 8*7/8,
> 9 for 8*9/8, 10 for 8*5/4, 11 for 8*11/8, 12 for 8*3/2 and so on.
>
> This would be quite useful, especially for the divisions of three (*3/2),
> because stuff like this
> e8*2/3 dis cis cis8. dis16 e8*2/3 dis cis cis8. dis16
> Is not really nice to enter, while
> e12 dis cis cis8. dis16 e12 dis cis cis8. dis16
> would be much less effort.
>
> Cheers, Valentin