I advise against changing the internal representation of pitches.
I say that even though this looks like very good and careful code, and after spending two hours studying it. The extra complication, for which the care was given, makes the system more difficult to learn, understand, use, and repair. Maybe convert the patch to distinguish quarter-tones using the existing Rational alterations: sharp-down = 1/2 - 1/5 = 3/10 natural-up = +1/5 = 2/10 These sort in the same order as the solution in this patch. It should be fine if the internal representation is not exactly 1/4; some people use the up-arrow to indicate pitches in just-intonation schemes. Also, for most instruments 'ces' is not really 1/2 a tone above 'c' but there no harm from representing the sharp as 1/2. The email chain linked in the patch mentions a similar method, saying the 'problem' was that method was that transposing from the key of C to the key of C-natural-up fails to convert a natural-up to a sharp. However we do not ask Lilypond to convert 'fisis' to 'g' in a\transpose. Also, the proposed representation in this patch has the same 'problem'. Transposition with automatic conversion (of 2/10 + 2/10 to 1/2, for example) should be done by a function distinct form the current \transpose, possibly written in Scheme using Mike Ellis' modal transposition as a model. http://codereview.appspot.com/3789044/ _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel