2 midi-item.hh -- declare Midi items
4 (c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
12 #include "lily-proto.hh"
15 #include "audio-item.hh"
18 Any piece of midi information.
20 Maybe use base classes for RIFF files?
26 virtual ~Midi_item ();
29 static Midi_item* midi_p (Audio_item* a);
31 static String i2varint_str (int i);
33 virtual String str () const = 0;
44 Midi_event (Moment delta_mom, Midi_item* midi_l);
52 variable sized MIDI data
54 class Midi_chunk : public Midi_item
57 void set (String header_str, String data_str, String footer_str);
58 virtual String str () const;
59 virtual String data_str () const;
67 class Midi_duration : public Midi_item
70 Midi_duration (Real seconds_f);
72 virtual String str () const;
76 class Midi_header : public Midi_chunk
79 Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
83 Change instrument event
85 class Midi_instrument : public Midi_item
88 Midi_instrument (Audio_instrument*);
90 virtual String str () const;
92 Audio_instrument* audio_l_;
96 class Midi_key : public Midi_item
99 Midi_key (Audio_key*);
101 virtual String str () const;
106 class Midi_time_signature : public Midi_item
109 Midi_time_signature (Audio_time_signature*);
111 virtual String str () const;
113 Audio_time_signature* audio_l_;
120 class Midi_note : public Midi_item
123 Midi_note (Audio_note*);
125 Moment length_mom () const;
126 int pitch_i () const;
127 virtual String str () const;
129 Audio_note* audio_l_;
131 static int const c0_pitch_i_c_ = 60;
138 class Midi_note_off : public Midi_note
141 Midi_note_off (Midi_note*);
143 virtual String str () const;
146 Byte aftertouch_byte_;
149 class Midi_text : public Midi_item
153 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
157 Midi_text (Audio_text*);
159 virtual String str () const;
161 Audio_text* audio_l_;
164 class Midi_dynamic : public Midi_item
167 Midi_dynamic (Audio_dynamic*);
169 virtual String str () const;
171 Audio_dynamic* audio_l_;
174 class Midi_piano_pedal : public Midi_item
177 Midi_piano_pedal (Audio_piano_pedal*);
179 virtual String str () const;
181 Audio_piano_pedal* audio_l_;
184 class Midi_tempo : public Midi_item
187 Midi_tempo (Audio_tempo*);
189 virtual String str () const;
191 Audio_tempo* audio_l_;
194 class Midi_track : public Midi_chunk
198 Cons_list<Midi_event> event_p_list_;
202 void add (Moment delta_time_mom, Midi_item* midi_l);
203 virtual String data_str () const;
206 #endif // MIDI_ITEM_HH