+/**
+ walk audio and output midi
+ */
+class Midi_walker
+{
+public:
+ Midi_walker (Audio_staff* audio_staff, Midi_track* midi_track);
+ ~Midi_walker ();
+
+ void process ();
+ void operator ++ (int);
+ bool ok () const;
+
+private:
+ void do_start_note (Midi_note* note);
+ void do_stop_notes (Moment now_mom);
+ void output_event (Moment now_mom, Midi_item* l);
+
+ Midi_track* track_;
+ Audio_staff* staff_;
+ int index_;
+ Link_array<Audio_item> * items_;
+ PQueue<Midi_note_event> stop_note_queue;
+ Moment last_mom_;
+};