Hi Knute, hi Mark,
here's an example of what I mean. The "cheating" system should create
what the original engraving suggests, even if it's wrong mathematically.
I didn't check the difference in MIDI; of course the "conductor" part
(consisting of eigths throughout) shows a significant difference.
Of course I took advantage of the fact that the original engraving stops
bothering with tuplet brackets/numbers starting from the second bar; it
should be possible to get them back, but this will involve some further
tweaking in the "cheating" version.
Lukas
Am 27.12.23 um 09:17 schrieb Lukas-Fabian Moser:
Hi Mark,
Am 27.12.23 um 01:54 schrieb Mark Stephen Mrotek:
Knute,
In the original the first beat of the second measure is three against
2. The 5 against 3 does not start until the second beat.
Unfortunately, that can't be true, as with this interpretation, the
measure is over-full. Rather, the groups of quintuplets/triplets
continue, with a beaming not in sync with the measure's beat structure.
This also implies that the original engraving isn't mathematically
correct (as the beginnings of the bems groups look as if they're
aligned). Situations like that are hard to approximate with LilyPond,
as Lily has a strict binary notion of two notes being simultaneous or
not. One can try cheating a bit by engraving the measure according to
its visual apperance (3-vs-2 in the first beat, exact 4-vs-1 in the
last quaver of the measure), but then it will be necessary to compress
whatever will be in the measure to the duration of one whole note, and
it's not certain what LilyPond's spacing algorithm will make of it.
Sorry for describing the situation verbally; I'll try to cook up an
example as soon as I have time (later today).
Lukas
\version "2.24.3"
\paper {
#(set-paper-size "a4landscape")
}
%{
% a useful function:
showLength =
#(define-music-function (mus) (ly:music?)
(pretty-print (ly:music-length mus))
mus)
% of course, one can also write a function calculating
% the correct value for scaleDurations automatically
%}
rightHand = \relative {
r2 \tuplet 5/4 4 {
r8. e'16[ e e e e] e[ e |
\repeat unfold 2 {
e e e] e[ e e e e] e[ e e e e] e[ e e e e] e32[ e e e |
}
}
e]
}
leftHand = \relative {
\clef bass
r2 \tuplet 3/2 4 {
r8 r c'[ c c] c[ |
\repeat unfold 2 {
c c] c[ c c] c[ c c] c[ c c] c[ |
}
}
c]
}
rightHandCheat = \relative {
r2 \tuplet 5/4 4 { r8. e'16[ e e e e] e[ e | }
\repeat unfold 2
{
\scaleDurations 8/9
{
e16*4/3 e e] e16*4/5[ e e e e] e[ e e e e] e[ e e e e] e32[ e e e
|
}
}
e]
}
leftHandCheat = \relative {
\clef bass
r2 \tuplet 3/2 4 { r8 r c'[ c c] c[ | }
\repeat unfold 2 {
\scaleDurations 8/9
{
c8 c] c8*2/3[ c c] c[ c c] c[ c c] c8[ |
}
}
c]
}
<<
\new PianoStaff \with { instrumentName = "honest" }
<<
\new Staff \rightHand
\new Staff \leftHand
>>
\new RhythmicStaff \with {
instrumentName = "conductor"
\omit Stem
\omit Beam
}
{
s1
\repeat unfold 16 { 8 }
}
\new PianoStaff \with { instrumentName = "cheating" }
<<
\new Staff \rightHandCheat
\new Staff \leftHandCheat
>>
>>
\new PianoStaff \with {
instrumentName = \markup\center-column{cheating only "(spacing check)" }
}
<<
\new Staff \rightHandCheat
\new Staff \leftHandCheat
>>