]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/midi-chunk.hh
Fix 550.
[lilypond.git] / lily / include / midi-chunk.hh
1 /* 
2   midi-chunk.hh -- declare  Midi_chunk
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2007 Han-Wen Nienhuys <hanwen@lilypond.org>
7   
8 */
9
10 #ifndef MIDI_CHUNK_HH
11 #define MIDI_CHUNK_HH
12
13 #include "lily-proto.hh"
14 #include "virtual-methods.hh"
15 #include "std-vector.hh"
16
17
18 /**
19    timed MIDI event
20 */
21 class Midi_event
22 {
23 public:
24   Midi_event (int delta, Midi_item *midi);
25
26   int delta_ticks_;
27   Midi_item *midi_;
28   string to_string () const;
29 };
30
31
32
33
34 /**
35    variable sized MIDI data
36 */
37 class Midi_chunk
38 {
39 public:
40   void set (string header_string, string data_string, string footer_string);
41   virtual string to_string () const;
42   virtual string data_string () const;
43   DECLARE_CLASSNAME(Midi_chunk);
44   virtual ~Midi_chunk ();
45 private:
46   string data_string_;
47   string footer_string_;
48   string header_string_;
49 };
50
51 class Midi_header : public Midi_chunk
52 {
53 public:
54   DECLARE_CLASSNAME(Midi_header);
55
56   Midi_header (int format, int tracks, int clocks_per_4);
57 };
58
59 class Midi_track : public Midi_chunk
60 {
61 public:
62   int number_;
63   DECLARE_CLASSNAME(Midi_track);
64
65   vector<Midi_event*> events_;
66
67   Midi_track ();
68   ~Midi_track ();
69
70   void add (int, Midi_item *midi);
71   virtual string data_string () const;
72 };
73
74 #endif /* MIDI_CHUNK_HH */
75