- if (be_verbose_global)
- progress_indication ("[" + to_string (i));
-
- int midi_channel = s->channel_;
-
- if (midi_channel < 0)
- {
- midi_channel = channel;
- channel ++;
- /*
- MIDI players tend to ignore instrument settings on
- channel 10, the percussion channel.
- */
- 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 (midi_channel > 15)
- {
- warning (_ ("MIDI channel wrapped around"));
- warning (_ ("remapping modulo 16"));
-
- midi_channel = midi_channel % 16;
- }
-
- s->output (midi_stream, midi_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);