{
Midi_track midi_track;
midi_track.number_ = channel;
-
- for (Midi_walker i (this, &midi_track, channel); i.ok (); i++)
+
+ Midi_walker i (this, &midi_track, channel);
+ for (; i.ok (); i++)
i.process ();
midi_stream << midi_track;
vector<Audio_item*> items_;
PQueue<Midi_note_event> stop_note_queue;
int last_tick_;
+
+ vector<Midi_item*> midi_items_;
};
#endif // MIDI_WALKER_HH
else if (Audio_time_signature *i = dynamic_cast<Audio_time_signature *> (a))
return new Midi_time_signature (i);
else if (Audio_text *i = dynamic_cast<Audio_text *> (a))
- //return i->text_string_.length () ? new Midi_text (i) : 0;
return new Midi_text (i);
else
assert (0);
- // isn't C++ grand?
return 0;
}
Midi_walker::~Midi_walker ()
{
do_stop_notes (last_tick_ + 384);
+
+ for (vsize i = 0; i < midi_items_.size (); i++)
+ delete midi_items_[i];
}
/**
if (play_start)
output_event (ptr->audio_column_->ticks (), note);
+
+ midi_items_.push_back (e.val);
}
}
}
else
output_event (audio->audio_column_->ticks (), midi);
+
+
+ midi_items_.push_back (midi);
}
}