Re: Tuplet brackets too short?

2023-10-19 Thread Werner LEMBERG

> Shouldn't both tuplet brackets span every notecolumn within the
> purview of the last note's duration?

Yes, at least according to Gould.  Using `tupletFullLength` helps, but
now tuplet brackets are too long:

```
\new Staff
{ \set Staff.tupletFullLength = ##t
  \time 2/4
  << \tuplet 3/2 { c''4 d'' c'' } \\ \tuplet 3/2 { g'4 a'2 } >>
}
```

It looks like a tricky problem, and it seems not to be covered in the
tracker, so please file an issue.


Werner


Re: Tuplet brackets too short?

2023-10-19 Thread Brian Barker

At 16:10 19/10/2023 +0200, David Kastrup wrote:

... the results look awful:

Shouldn't both tuplet brackets span every notecolumn within the 
purview of the last note's duration?


For what it's worth (I know, I know!), Elaine Gould [Behind Bars, pp. 
195/6] seems to distinguish between old and newer practice:


*Tuplets ending with the longest duration*

Traditionally, the bracket extends only as far as the last written 
duration. Thus a numeral centred in a bracket occurs before the 
central duration, making the rhythm unnecessarily difficult to read. 
It is now usual to extend the bracket to the position of the 
hypothetical final division of the tuplet, so that the numeral occurs 
at the rhythmic centre of the group. This makes complex rhythms 
quicker to read.


*Aligning brackets between parts*

When the final division of a tuplet is subdivided in some parts but 
not in others, the bracket ends need to extend only as far as the 
last duration in each group. This means that brackets may finish at 
different points. If preferred, all brackets may be extended to the 
position of the longest bracket. There is a visual logic to this, 
especially as uniform bracket length will allow the centred tuplet 
numerals to align vertically.


Her subsequent examples seem to follow her "now usual" and "if 
preferred" style that you espouse.


Brian Barker  






Tuplet brackets too short?

2023-10-19 Thread David Kastrup

If I write

\new Staff
{ \time 2/4
  << \tuplet 3/2 { c''4 d'' c'' } \\ \tuplet 3/2 { g'4 a'2 } >>
}

the results look awful:


Shouldn't both tuplet brackets span every notecolumn within the purview
of the last note's duration?  I think this might also apply if the upper
voice contained 4 eighths instead of the three triplets:



-- 
David Kastrup


Re: Still failing to operate lilypond 2.20.0 64-bit version.

2023-10-19 Thread Hans Åberg


> On Oct 19, 2023, at 12:47, Ian West  wrote:
> 
> From the attached photo you will see that I created in 'home'  a folder 
> called 'LilyPondArea', and in that a folder called 'lilypond-2.24.2'. In the 
> former I placed the downloaded tar, and in the latter the unpacked files of 
> lilypond-2.24.2 (i.e. 'bin', etc)

There is a problem if downloaded with a browser, because MacOS marks all 
executables (unix programs) as unknown, and to fix them all one by one is a 
chore. So it is better to use the Terminal:

Open a new Terminal window, type "pwd", it should show your home directory 
path. Then (only type what is after "% ":
% cd LilyPondArea
% curl -L 
"https://gitlab.com/lilypond/lilypond/-/releases/v2.24.2/downloads/lilypond-2.24.2-darwin-x86_64.tar.gz;
 --output lilypond-2.24.2.tar.gz
% tar -xf lilypond-2.24.2-darwin-x86_64.tar.gz
You don't have to type the full name "lilypond……": after a few letter, just 
type  and the shell will complete. The link given to "curl" is what is 
listed on the page https://lilypond.org/download.html. The option -L means to 
redirect to the real link, and --output … is a name that you chose. It is 
simpler to use wget, but the one I have is from MacPorts.

Then, for the LilyPond files, you might create a directory in the Documents 
folder, as if you have iCloud, it gets saved there.

To use the LilyPond program from Terminal, use:
% ~/LilyPondArea/lilypond-2.24.2/bin/lilypond file.ly
or with other options such as --version or --help.

To simplify, you might write a script in Terminal:
% touch lilypond
% open -t lilypond
First command creates a file; the second opens in the text editor chosen for 
.txt files. One can also write:
% open -a TextEdit lilypond
Paste, save and close:
export LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8
exec HOME/LilyPondArea/bin/lilypond "$@"

Here, HOME is the "pwd" path you got above.

Then change permissions, so that any can run it:
% chmod a+x lilypond

Then install it on your system:
% sudo cp lilypond /usr/local/bin
This requires your password to be written.

But now when you want to run lilypond, instead type
% lilypond file.ly





Re: Still failing to operate lilypond 2.20.0 64-bit version.

2023-10-19 Thread Werner LEMBERG

> From the attached photo you will see that I created in 'home' a
> folder called 'LilyPondArea', and in that a folder called
> 'lilypond-2.24.2'. In the former I placed the downloaded tar, and in
> the latter the unpacked files of lilypond-2.24.2 (i.e. 'bin', etc)

Looks good.

> I use Textedit to create and save a 'file.ly' as directed and I saved
> it in lilypond-2.24.2, i.e. with bin, etc.

I strongly recommend that you do *not* do that.  You should rather use
a separate directory to store your `.ly` files.  It's far too easy to
accidentally delete the whole 'lilypond-2.24.2' directory if you
upgrade to, say 'lilypond-2.24.3'.

> Now (moment of truth). I open Terminal, go to 'home', create the
> path to bin, as:- ~/LilyPondArea/lilypond-2.24.2/bin

What do you mean with 'create a path'?  Assuming you have created file
`foo.ly` in directory `~/MyLilyPondDocs/`, and you are currently in
this directory (which you can check in the terminal by calling the
`pwd` command) it is sufficient to call the LilyPond binary with the
whole path:

```
~/LilyPondArea/lilypond-2.24.2/bin/lilypond foo.ly
```

> By listing ('ls'), I note that file.ly is in there with bin, but as
> file.ly.txt .

This is strange.  It looks like an artifact of your editor.  LilyPond
doesn't care how the file is actually called (it's a Windows thing to
rely on file extensions), but normally it has extension `.ly` – maybe
you have to change the preferences of your editor to not automatically
add `.txt` to the file name.

Assuming that you can't change that for whatever reason, running
LilyPond on a file `foo.ly.txt` works just fine, too.  However, the
resulting PDF file is then called `foo.ly.pdf`.

> (I believe a genuine lilypond file is just a text file with suffix
> '.ly'.)

Correct.

> The manual instructions say "you can run"
> /.../lilypond-x.y.z/bin/lilypond file.ly
> But what do you/they mean by "run"? 

'Run' means to type a command into the terminal and execute it by
pressing the Enter key.

> Do I still have to change permissions, as indicated by Hans Åberg?

Theoretically, everything should be fine.  Maybe there are some
special precautions due to MacOS restrictions (which I don't know,
sorry), but I guess you have to take care of them only the first time.

> Do I still have to use 'sudo' as indicated by Hans Åberg?

No.  You have unpacked the LilyPond tar bundle in your home directory,
to which you have full access.


Werner


Re: compiling irrational time signatures with \scaleDurations

2023-10-19 Thread Adrian Kleinlosen
Thank you for the clarification, Jean! If I now use denominators <= 9, the
output works (from 10 no longer).

I think a function \ratio could be helpful to improve the accuracy of the
output a little bit more, Vaughan.

Thanks for the help so far!

Best regards,

Adrian

On Thu, Oct 19, 2023 at 2:10 AM Vaughan McAlley 
wrote:

>
>
> On Thu, 19 Oct 2023, 03:49 Jean Abou Samra,  wrote:
>
>> Hi,
>>
>> Here is a more minimal example illustrating your problem:
>>
>> \version "2.24.2"
>>
>> {
>>   \scaleDurations 1/2 c'1
>>   \scaleDurations 1/3 d'1
>>   \scaleDurations 1/5 e'1
>>   \scaleDurations 1/7 f'1
>>   \scaleDurations 1/11 g'1
>>   \scaleDurations 1/13 a'1
>>   \scaleDurations 1/17 b'1
>>   \scaleDurations 1/19 c''1
>>   \scaleDurations 1/23 d''1
>>   \scaleDurations 1/29 e''1
>>   \scaleDurations 1/31 f''1
>>   \scaleDurations 1/37 g''1
>> }
>>
>> The underlying issue here is that you use lots of "complicated"
>> multipliers, with high denominators. LilyPond needs to represent each point
>> in time in an exact way, which it does using fractions. However, because
>> the denominators you use are sufficiently large and have sufficiently few
>> common prime factors, the denominator of the fraction needed to represent a
>> moment in your score gets huge. In my example above, the product of primes
>> up to 37 has the order of magnitude of ten thousand billions, or two at the
>> power 43. Programs often use a fixed number of digits to represent
>> integers, for efficiency reasons. At some point, the computations overflow
>> the number of digits that is being used, and everything goes wrong.
>>
>> You might call it a bug, but I'd rather speak of a limitation. All
>> programs that are written in languages such as C++ (internally used in
>> LilyPond) exhibit overflow issues when you feed them with such huge
>> integers.
>>
>> So, unfortunately, I don't have a workaround to suggest other than to use
>> fractions with smaller denominators.
>>
>> Jean
>>
> Would a function that turns a fraction into whatever number/100 work?
>
> \scaleDurations \ratio 1/29 % or 1 29
>
> Cheers,
> Vaughan
>
>
>