- if (be_verbose_global)
- progress_indication ("[" + to_string (i));
-
- /*
- MIDI players tend to ignore instrument settings on
- channel 10, the percussion channel by default.
- */
- if (channel % 16 == 9)
- channel++;
-
- /*
- Huh? Why does each staff also have a separate channel? We
- should map channels to voices, not staves. --hwn.
- */
- if (channel > 15)
- {
- warning (_ ("MIDI channel wrapped around"));
- warning (_ ("remapping modulo 16"));
- }
-
- s->output (midi_stream, channel);
- channel ++;
- if (be_verbose_global)
- progress_indication ("]");
+ if (Audio_control_track_staff *c =
+ dynamic_cast<Audio_control_track_staff *>(s))
+ {
+ // The control track, created by Control_track_performer, should
+ // contain a placeholder for the name of the MIDI sequence as its
+ // initial audio element. Fill in the name of the sequence to
+ // this element before outputting MIDI.
+ assert (!c->audio_items_.empty ());
+ Audio_text *text =
+ dynamic_cast<Audio_text *>(c->audio_items_.front ());
+ assert (text != 0);
+ assert (text->type_ == Audio_text::TRACK_NAME);
+ assert (text->text_string_ == "control track");
+ text->text_string_ = performance_name;
+ }
+ debug_output ("[" + ::to_string (i), true);
+ s->output (midi_stream, i, ports_, moment_to_ticks (start_mom));
+ debug_output ("]", false);