We have a very specific situation where TimeSignature.getBeams() can product a single 'stop' beam at the final note and no others. This happens when the penultimate note in a measure:
is beamable
is held across a beat
is preceded by a non-beamable note
is followed by a beamable note
This PR updates getBeams() to acccount for this case, and Renderer.formatVoiceGroup() to ensure that errors like this do not happen again.
const s = new music21.stream.Measure();
s.autoBeam = true;
s.renderOptions.useVexflowAutobeam = false;
s.append(new music21.meter.TimeSignature('3/4'));
for (const ql of [0.5, 1.0, 0.75, 0.75]) {
const n = new music21.note.Note('C#', ql);
s.append(n);
}
s.replaceDOM();
We have a very specific situation where
TimeSignature.getBeams()
can product a single 'stop' beam at the final note and no others. This happens when the penultimate note in a measure:This PR updates
getBeams()
to acccount for this case, andRenderer.formatVoiceGroup()
to ensure that errors like this do not happen again.