2 This file is part of LilyPond, the GNU music typesetter.
4 Copyright (C) 1997--2012 Jan Nieuwenhuizen <janneke@gnu.org>
6 LilyPond is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 LilyPond is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
23 #include "audio-item.hh"
24 #include "std-vector.hh"
26 string int2midi_varint_string (int i);
29 Any piece of midi information.
31 Maybe use base classes for RIFF files?
36 DECLARE_CLASSNAME (Midi_item);
38 virtual ~Midi_item ();
39 virtual char const *name () const;
41 static Midi_item *get_midi (Audio_item *a);
43 virtual string to_string () const = 0;
46 class Midi_channel_item : public Midi_item
50 DECLARE_CLASSNAME (Midi_channel_item);
51 Midi_channel_item (Audio_item *ai);
54 class Midi_duration : public Midi_item
57 Midi_duration (Real seconds_f);
59 virtual string to_string () const;
64 Change instrument event
66 class Midi_instrument : public Midi_channel_item
69 Midi_instrument (Audio_instrument *);
71 DECLARE_CLASSNAME (Midi_instrument);
72 virtual string to_string () const;
74 Audio_instrument *audio_;
77 class Midi_key : public Midi_item
80 Midi_key (Audio_key *);
81 DECLARE_CLASSNAME (Midi_key);
83 virtual string to_string () const;
88 class Midi_time_signature : public Midi_item
91 Midi_time_signature (Audio_time_signature *);
92 DECLARE_CLASSNAME (Midi_time_signature);
94 virtual string to_string () const;
96 Audio_time_signature *audio_;
100 class Midi_note : public Midi_channel_item
103 Midi_note (Audio_note *);
104 DECLARE_CLASSNAME (Midi_note);
106 int get_semitone_pitch () const;
107 int get_fine_tuning () const;
108 virtual string to_string () const;
112 static int const c0_pitch_ = 60;
116 class Midi_note_off : public Midi_note
119 Midi_note_off (Midi_note *);
120 DECLARE_CLASSNAME (Midi_note_off);
122 virtual string to_string () const;
125 Byte aftertouch_byte_;
128 class Midi_text : public Midi_item
133 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
136 DECLARE_CLASSNAME (Midi_text);
138 Midi_text (Audio_text *);
140 virtual string to_string () const;
145 class Midi_dynamic : public Midi_channel_item
148 Midi_dynamic (Audio_dynamic *);
149 DECLARE_CLASSNAME (Midi_dynamic);
151 virtual string to_string () const;
153 Audio_dynamic *audio_;
156 class Midi_piano_pedal : public Midi_channel_item
159 Midi_piano_pedal (Audio_piano_pedal *);
160 DECLARE_CLASSNAME (Midi_piano_pedal);
162 virtual string to_string () const;
164 Audio_piano_pedal *audio_;
167 class Midi_tempo : public Midi_item
170 Midi_tempo (Audio_tempo *);
171 DECLARE_CLASSNAME (Midi_tempo);
173 virtual string to_string () const;
178 #endif // MIDI_ITEM_HH