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);
55 class Midi_duration : public Midi_item
58 Midi_duration (Real seconds_f);
60 virtual string to_string () const;
67 class Midi_control_change : public Midi_channel_item
70 DECLARE_CLASSNAME (Midi_control_change);
71 Midi_control_change (Audio_control_change *ai);
72 virtual ~Midi_control_change ();
73 virtual string to_string () const;
75 Audio_control_change *audio_;
79 Change instrument event
81 class Midi_instrument : public Midi_channel_item
84 Midi_instrument (Audio_instrument *);
86 DECLARE_CLASSNAME (Midi_instrument);
87 virtual string to_string () const;
89 Audio_instrument *audio_;
92 class Midi_key : public Midi_item
95 Midi_key (Audio_key *);
96 DECLARE_CLASSNAME (Midi_key);
98 virtual string to_string () const;
103 class Midi_time_signature : public Midi_item
106 Midi_time_signature (Audio_time_signature *);
107 DECLARE_CLASSNAME (Midi_time_signature);
109 virtual string to_string () const;
111 Audio_time_signature *audio_;
115 class Midi_note : public Midi_channel_item
118 Midi_note (Audio_note *);
119 DECLARE_CLASSNAME (Midi_note);
121 int get_semitone_pitch () const;
122 int get_fine_tuning () const;
123 virtual string to_string () const;
127 static int const c0_pitch_ = 60;
131 class Midi_note_off : public Midi_note
134 Midi_note_off (Midi_note *);
135 DECLARE_CLASSNAME (Midi_note_off);
137 virtual string to_string () const;
140 Byte aftertouch_byte_;
143 class Midi_text : public Midi_item
148 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
151 DECLARE_CLASSNAME (Midi_text);
153 Midi_text (Audio_text *);
155 virtual string to_string () const;
160 class Midi_piano_pedal : public Midi_channel_item
163 Midi_piano_pedal (Audio_piano_pedal *);
164 DECLARE_CLASSNAME (Midi_piano_pedal);
166 virtual string to_string () const;
168 Audio_piano_pedal *audio_;
171 class Midi_tempo : public Midi_item
174 Midi_tempo (Audio_tempo *);
175 DECLARE_CLASSNAME (Midi_tempo);
177 virtual string to_string () const;
182 #endif // MIDI_ITEM_HH