2 midi-item.hh -- declare Midi items
4 (c) 1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
12 #include "lily-proto.hh"
17 Any piece of midi information.
19 Maybe use base classes for RIFF files?
25 virtual ~Midi_item ();
28 static Midi_item* midi_p (Audio_item* a);
30 static String i2varint_str (int i);
32 virtual String str () const = 0;
43 Midi_event (Moment delta_mom, Midi_item* midi_l);
51 variable sized MIDI data
53 class Midi_chunk : public Midi_item
56 void set (String header_str, String data_str, String footer_str);
57 virtual String str () const;
58 virtual String data_str () const;
66 class Midi_duration : public Midi_item
69 Midi_duration (Real seconds_f);
71 virtual String str () const;
75 class Midi_header : public Midi_chunk
78 Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
82 Change instrument event
84 class Midi_instrument : public Midi_item
87 Midi_instrument (Audio_instrument*);
89 virtual String str () const;
91 Audio_instrument* audio_l_;
95 class Midi_key : public Midi_item
98 Midi_key (Audio_key*);
100 virtual String str () const;
105 class Midi_time_signature : public Midi_item
108 Midi_time_signature (Audio_time_signature*);
110 virtual String str () const;
112 Audio_time_signature* audio_l_;
119 class Midi_note : public Midi_item
122 Midi_note (Audio_note*);
124 Moment length_mom () const;
125 int pitch_i () const;
126 virtual String str () const;
128 Audio_note* audio_l_;
130 static int const c0_pitch_i_c_ = 60;
137 class Midi_note_off : public Midi_note
140 Midi_note_off (Midi_note*);
142 virtual String str () const;
145 Byte aftertouch_byte_;
148 class Midi_text : public Midi_item
152 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
156 Midi_text (Audio_text*);
158 virtual String str () const;
160 Audio_text* audio_l_;
163 class Midi_tempo : public Midi_item
166 Midi_tempo (Audio_tempo*);
168 virtual String str () const;
170 Audio_tempo* audio_l_;
173 class Midi_track : public Midi_chunk
177 Cons_list<Midi_event> event_p_list_;
181 void add (Moment delta_time_mom, Midi_item* midi_l);
182 virtual String data_str () const;
185 #endif // MIDI_ITEM_HH