On 2025-12-31 05:42, Thomas Morley wrote:
At least for automatic repeats 'volta settings are entirely missing, why?
Automatic repeats were enhanced to handle nested alternatives. Manual
repeats were not.
Volta_engraver gets information about the music structure from
volta-span-event:
void
Volta_engraver::boot ()
{
ADD_ACKNOWLEDGER (bar_line);
ADD_LISTENER (dal_segno);
ADD_LISTENER (fine);
ADD_LISTENER (volta_span); //<<<<<<<<<<<<
}
For backward compatibility, Volta_engraver also reads the repeatCommands
context property and creates brackets that have a fixed relationship
with automatic brackets. This is one reason why the "Manual repeat
marks" section of the NR begins with a cautionary note.
I haven't reviewed your custom engraver, but an engraver concerned with
repeat structure might listen for some of these events in addition to
volta-span-event (from define-event-classes.scm):
(structural-event . (alternative-event
coda-mark-event
dal-segno-event
fine-event
section-event
segno-mark-event
volta-repeat-end-event
volta-repeat-start-event))
Summary: Engravers handling repeat structure should listen for events.
If there is good reason to support the repeatCommands interface, they
should also read repeatCommands, but repeatCommands does not support the
same range of uses as automatic repeats.
--
Dan