- 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 (p->name() != Midi_note::static_name ())
- output_event (ptr()->audio_column_l_->at_mom (), p);
- else
- do_start_note ((Midi_note*)p);
-
- delete p;
+ Audio_item *audio = (*items_)[index_];
+ do_stop_notes (audio->audio_column_->at_mom ());
+
+ if (Midi_item *midi = Midi_item::get_midi (audio))
+ {
+ midi->channel_ = track_->channel_;
+ //midi->channel_ = track_->number_;
+ if (Midi_note *note = dynamic_cast<Midi_note *> (midi))
+ {
+ if (note->get_length ().to_bool ())
+ do_start_note (note);
+ }
+ else
+ output_event (audio->audio_column_->at_mom (), midi);
+ }