]> git.donarmstrong.com Git - lilypond.git/blobdiff - hdr/midiwalker.hh
release: 0.0.36
[lilypond.git] / hdr / midiwalker.hh
index e97c59864f76a873b21c16ed05315b6b134e6624..839ba11a7f893848d31e68fe0b25664ce49112ec 100644 (file)
@@ -1,8 +1,8 @@
-//
-//  midiwalker.hh -- declare Midi_walker
-//
-//  (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen <jan@digicash.com>
-//
+/*
+  midiwalker.hh -- declare Midi_walker
+
+  (c) 1996,97 Han-Wen Nienhuys, Jan Nieuwenhuizen <jan@digicash.com>
+  */
 
 #ifndef MIDIWALKER_HH
 #define MIDIWALKER_HH
 #include "proto.hh"
 #include "grouping.hh"
 #include "staffwalker.hh"
+#include "pcursor.hh"
+#include "pqueue.hh"
+
+
+/**
+  a simple walker which collects midi stuff, and then outputs.
+
+  Should derive from Staff_walker
+  */
+class Midi_walker : public PCursor<Staff_column*> {
+    Midi_track *track_l_;
+    PQueue<Melodic_req*, Moment> stop_notes;
+    Moment last_moment_;
 
-/// a simple walker which collects midi stuff, and then outputs
-struct Midi_walker: Staff_walker {
-//    Midi_stream* midi_stream_l_;
     /* *************** */
-    virtual void process_requests();
+    void do_stop_notes(Moment);
+    
+    void output_event(Midi_item&, Moment);
+public:
     
-    Midi_walker( Midi_staff* mstaff_l );
-    Midi_column* mcol_l();
-    Midi_staff* mstaff_l();
+    Midi_walker(Staff*, Midi_track*);
+    void process_requests();
+    ~Midi_walker();
 };