2 midi-item.hh -- declare Midi items
4 (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
12 #include "lily-proto.hh"
14 #include "audio-item.hh"
17 Any piece of midi information.
19 Maybe use base classes for RIFF files?
25 virtual ~Midi_item ();
28 static Midi_item* get_midi (Audio_item* a);
30 static String i2varint_string (int i);
32 virtual String to_string () const = 0;
43 Midi_event (Moment delta_mom, Midi_item* midi);
47 String to_string () const;
51 variable sized MIDI data
53 class Midi_chunk : public Midi_item
56 void set (String header_string, String data_string, String footer_string);
57 virtual String to_string () const;
58 virtual String data_string () const;
62 String footer_string_;
63 String header_string_;
66 class Midi_duration : public Midi_item
69 Midi_duration (Real seconds_f);
71 virtual String to_string () 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 to_string () const;
91 Audio_instrument* audio_;
95 class Midi_key : public Midi_item
98 Midi_key (Audio_key*);
100 virtual String to_string () const;
105 class Midi_time_signature : public Midi_item
108 Midi_time_signature (Audio_time_signature*);
110 virtual String to_string () const;
112 Audio_time_signature* audio_;
119 class Midi_note : public Midi_item
122 Midi_note (Audio_note*);
124 Moment get_length () const;
125 int get_pitch () const;
126 int get_fine_tuning () const;
127 virtual String to_string () const;
131 static int const c0_pitch_i_ = 60;
138 class Midi_note_off : public Midi_note
141 Midi_note_off (Midi_note*);
143 virtual String to_string () 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 to_string () const;
164 class Midi_dynamic : public Midi_item
167 Midi_dynamic (Audio_dynamic*);
169 virtual String to_string () const;
171 Audio_dynamic* audio_;
174 class Midi_piano_pedal : public Midi_item
177 Midi_piano_pedal (Audio_piano_pedal*);
179 virtual String to_string () const;
181 Audio_piano_pedal* audio_;
184 class Midi_tempo : public Midi_item
187 Midi_tempo (Audio_tempo*);
189 virtual String to_string () const;
194 class Midi_track : public Midi_chunk
200 Compensate for starting grace notes.
202 Cons_list<Midi_event> event_p_list_;
206 void add (Moment delta_time_mom, Midi_item* midi);
207 virtual String data_string () const;
210 #endif // MIDI_ITEM_HH