- Audio_item* ptr = (*item_l_arr_l_)[index_];
- do_stop_notes (ptr->audio_column_l_->at_mom ());
-
- Midi_item* p = ptr->midi_item_p ();
- if (!p)
- return;
- p->channel_i_ = track_l_->number_i_;
-
- if (Midi_note *mi = dynamic_cast<Midi_note*>(p))
- do_start_note (mi);
- else
- output_event (ptr->audio_column_l_->at_mom (), p);
+ Audio_item *audio = items_[index_];
+ do_stop_notes (audio->audio_column_->ticks ());
+
+ if (Midi_item *midi = get_midi (audio))
+ {
+ if (Midi_channel_item *mci = dynamic_cast<Midi_channel_item*> (midi))
+ mci->channel_ = channel_;
+
+ if (Midi_note *note = dynamic_cast<Midi_note *> (midi))
+ {
+ if (note->audio_->length_mom_.to_bool ())
+ do_start_note (note);
+ }
+ else
+ output_event (audio->audio_column_->ticks (), midi);
+ }