2 This file is part of LilyPond, the GNU music typesetter.
4 Copyright (C) 1997--2015 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
49 virtual ~Midi_channel_item ();
51 DECLARE_CLASSNAME (Midi_channel_item);
52 Midi_channel_item (Audio_item *ai);
56 Midi control function value changes.
58 class Midi_control_function_value_change : public Midi_channel_item
61 DECLARE_CLASSNAME (Midi_control_function_value_change);
62 Midi_control_function_value_change (Audio_control_function_value_change *ai);
63 virtual ~Midi_control_function_value_change ();
64 virtual string to_string () const;
65 Audio_control_function_value_change::Control control_;
69 class Midi_duration : public Midi_item
72 Midi_duration (Real seconds_f);
74 virtual string to_string () const;
81 class Midi_control_change : public Midi_channel_item
84 DECLARE_CLASSNAME (Midi_control_change);
85 Midi_control_change (Audio_control_change *ai);
86 virtual ~Midi_control_change ();
87 virtual string to_string () const;
89 Audio_control_change *audio_;
93 Change instrument event
95 class Midi_instrument : public Midi_channel_item
98 Midi_instrument (Audio_instrument *);
100 DECLARE_CLASSNAME (Midi_instrument);
101 virtual string to_string () const;
103 Audio_instrument *audio_;
106 class Midi_key : public Midi_item
109 Midi_key (Audio_key *);
110 DECLARE_CLASSNAME (Midi_key);
112 virtual string to_string () const;
117 class Midi_time_signature : public Midi_item
120 Midi_time_signature (Audio_time_signature *);
121 DECLARE_CLASSNAME (Midi_time_signature);
123 virtual string to_string () const;
125 Audio_time_signature *audio_;
129 class Midi_note : public Midi_channel_item
132 Midi_note (Audio_note *);
133 DECLARE_CLASSNAME (Midi_note);
135 int get_semitone_pitch () const;
136 int get_fine_tuning () const;
137 virtual string to_string () const;
141 static int const c0_pitch_ = 60;
145 class Midi_note_off : public Midi_note
148 Midi_note_off (Midi_note *);
149 DECLARE_CLASSNAME (Midi_note_off);
151 virtual string to_string () const;
154 Byte aftertouch_byte_;
157 class Midi_text : public Midi_item
162 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
165 DECLARE_CLASSNAME (Midi_text);
167 Midi_text (Audio_text *);
169 virtual string to_string () const;
174 class Midi_piano_pedal : public Midi_channel_item
177 Midi_piano_pedal (Audio_piano_pedal *);
178 DECLARE_CLASSNAME (Midi_piano_pedal);
180 virtual string to_string () const;
182 Audio_piano_pedal *audio_;
185 class Midi_tempo : public Midi_item
188 Midi_tempo (Audio_tempo *);
189 DECLARE_CLASSNAME (Midi_tempo);
191 virtual string to_string () const;
196 #endif // MIDI_ITEM_HH