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 ();
23 virtual char const *name () const;
26 static Midi_item *get_midi (Audio_item *a);
28 static String i2varint_string (int i);
30 virtual String to_string () const = 0;
41 Midi_event (Moment delta_mom, Midi_item *midi);
45 String to_string () const;
49 variable sized MIDI data
51 class Midi_chunk : public Midi_item
54 void set (String header_string, String data_string, String footer_string);
55 virtual String to_string () const;
56 virtual String data_string () const;
60 String footer_string_;
61 String header_string_;
64 class Midi_duration : public Midi_item
67 Midi_duration (Real seconds_f);
69 virtual String to_string () const;
73 class Midi_header : public Midi_chunk
76 Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
80 Change instrument event
82 class Midi_instrument : public Midi_item
85 Midi_instrument (Audio_instrument *);
87 virtual String to_string () const;
89 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
151 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
155 Midi_text (Audio_text *);
157 virtual String to_string () const;
162 class Midi_dynamic : public Midi_item
165 Midi_dynamic (Audio_dynamic *);
167 virtual String to_string () const;
169 Audio_dynamic *audio_;
172 class Midi_piano_pedal : public Midi_item
175 Midi_piano_pedal (Audio_piano_pedal *);
177 virtual String to_string () const;
179 Audio_piano_pedal *audio_;
182 class Midi_tempo : public Midi_item
185 Midi_tempo (Audio_tempo *);
187 virtual String to_string () const;
192 class Midi_track : public Midi_chunk
198 Compensate for starting grace notes.
200 Cons_list<Midi_event> event_p_list_;
204 void add (Moment delta_time_mom, Midi_item *midi);
205 virtual String data_string () const;
208 #endif // MIDI_ITEM_HH