- 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_item *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);
+ }
+}
+
+Midi_item*
+Midi_walker::get_midi (Audio_item *i)
+{
+ Midi_item *mi = Midi_item::get_midi (i);
+ midi_events_.push_back (mi);
+ return mi;
+}
+
+bool
+Midi_walker::ok () const
+{
+ return index_ < items_.size ();