2 midi-item.hh -- declare Midi items
4 (c) 1997--2004 Jan Nieuwenhuizen <janneke@gnu.org>
11 #include "audio-item.hh"
14 Any piece of midi information.
16 Maybe use base classes for RIFF files?
22 virtual ~Midi_item ();
25 static Midi_item* get_midi (Audio_item* a);
27 static String i2varint_string (int i);
29 virtual String to_string () const = 0;
40 Midi_event (Moment delta_mom, Midi_item* midi);
44 String to_string () const;
48 variable sized MIDI data
50 class Midi_chunk : public Midi_item
53 void set (String header_string, String data_string, String footer_string);
54 virtual String to_string () const;
55 virtual String data_string () const;
59 String footer_string_;
60 String header_string_;
63 class Midi_duration : public Midi_item
66 Midi_duration (Real seconds_f);
68 virtual String to_string () const;
72 class Midi_header : public Midi_chunk
75 Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
79 Change instrument event
81 class Midi_instrument : public Midi_item
84 Midi_instrument (Audio_instrument*);
86 virtual String to_string () const;
88 Audio_instrument* audio_;
92 class Midi_key : public Midi_item
95 Midi_key (Audio_key*);
97 virtual String to_string () const;
102 class Midi_time_signature : public Midi_item
105 Midi_time_signature (Audio_time_signature*);
107 virtual String to_string () const;
109 Audio_time_signature* audio_;
116 class Midi_note : public Midi_item
119 Midi_note (Audio_note*);
121 Moment get_length () const;
122 int get_pitch () const;
123 int get_fine_tuning () const;
124 virtual String to_string () const;
128 static int const c0_pitch_i_ = 60;
135 class Midi_note_off : public Midi_note
138 Midi_note_off (Midi_note*);
140 virtual String to_string () const;
143 Byte aftertouch_byte_;
146 class Midi_text : public Midi_item
150 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
154 Midi_text (Audio_text*);
156 virtual String to_string () const;
161 class Midi_dynamic : public Midi_item
164 Midi_dynamic (Audio_dynamic*);
166 virtual String to_string () const;
168 Audio_dynamic* audio_;
171 class Midi_piano_pedal : public Midi_item
174 Midi_piano_pedal (Audio_piano_pedal*);
176 virtual String to_string () const;
178 Audio_piano_pedal* audio_;
181 class Midi_tempo : public Midi_item
184 Midi_tempo (Audio_tempo*);
186 virtual String to_string () const;
191 class Midi_track : public Midi_chunk
197 Compensate for starting grace notes.
199 Cons_list<Midi_event> event_p_list_;
203 void add (Moment delta_time_mom, Midi_item* midi);
204 virtual String data_string () const;
207 #endif // MIDI_ITEM_HH