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
>>

Reply via email to