bug-lilypond
[Top][All Lists]
Advanced

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

Re: Issue 1009 in lilypond: \transpose causes crash (std::logic_error)


From: David Kastrup
Subject: Re: Issue 1009 in lilypond: \transpose causes crash (std::logic_error)
Date: Wed, 10 Feb 2010 18:10:13 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.92 (gnu/linux)

address@hidden writes:

> Comment #2 on issue 1009 by Carl.D.Sorensen: \transpose causes crash
> (std::logic_error)
> http://code.google.com/p/lilypond/issues/detail?id=1009
>
> disis (without the comma) causes terminate to be called the same as
> disis, (with the comma)
>
> aisis, bisis, disis, and eisis all cause terminate to be called.
>
> cisis, fisis, and gisis do not cause terminate to be called.

I have a hard time picturing what transposing { a b c d } from disis to
c should result in.  A scale in disis contains

disis eisis fisisis gisis aisis bisis cisisis disis

c in this scale would transpose to beseses in a c scale.  There is no
such thing as beseses.  Incidentally, there is no such thing as cisisis
either, but Lilypond should only balk when it has to produce something
impossible, not just think about it.

Since transposition does not just deal with absolute pitches but with
enharmonicity as well, there is no way to properly transpose this in the
demanded manner.  Aborting is the sanest choice.

Now let's look at the other scales/transforms

aisis: { a b c d } -> { ceses beses eseses deses }
bisis: { a b c d } -> { beseses ceses deseses eseses }
cisis: { a b c d } -> { aeses beses ceses deses }
disis: { a b c d } -> { geses aeses beseses ceses }
eisis: { a b c d } -> { feses geses aeseses beseses }
fisis: { a b c d } -> { eses fes geses aeses }
gisis: { a b c d } -> { deses eses feses geses }

You'll see that Lilypond only balks at those transforms which contain
impossible notes.

There are no notes Lilypond could produce.  Aborting is the right
choice.  The best thing you can hope to do is to produce a nicer error
message.

The notation manual contains under "Transpose" a snippet that transposes
using "minimal accidentals".  It is conceivable that employing this
snippet will avert the abort.

-- 
David Kastrup





reply via email to

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