2 midi-item.hh -- declare Midi items
4 (c) 1997--2005 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_;
91 class Midi_key : public Midi_item
94 Midi_key (Audio_key *);
96 virtual String to_string () const;
101 class Midi_time_signature : public Midi_item
104 Midi_time_signature (Audio_time_signature *);
106 virtual String to_string () const;
108 Audio_time_signature *audio_;
115 class Midi_note : public Midi_item
118 Midi_note (Audio_note *);
120 Moment get_length () const;
121 int get_pitch () const;
122 int get_fine_tuning () const;
123 virtual String to_string () const;
127 static int const c0_pitch_i_ = 60;
134 class Midi_note_off : public Midi_note
137 Midi_note_off (Midi_note *);
139 virtual String to_string () const;
142 Byte aftertouch_byte_;
145 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