2 This file is part of LilyPond, the GNU music typesetter.
4 Copyright (C) 1997--2010 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);
44 virtual string to_string () const = 0;
47 class Midi_channel_item : public Midi_item
51 DECLARE_CLASSNAME(Midi_channel_item);
55 class Midi_duration : public Midi_item
58 Midi_duration (Real seconds_f);
60 virtual string to_string () const;
66 Change instrument event
68 class Midi_instrument : public Midi_channel_item
71 Midi_instrument (Audio_instrument *);
73 DECLARE_CLASSNAME(Midi_instrument);
74 virtual string to_string () const;
76 Audio_instrument *audio_;
79 class Midi_key : public Midi_item
82 Midi_key (Audio_key *);
83 DECLARE_CLASSNAME(Midi_key);
85 virtual string to_string () const;
90 class Midi_time_signature : public Midi_item
93 Midi_time_signature (Audio_time_signature *);
94 DECLARE_CLASSNAME(Midi_time_signature);
96 virtual string to_string () const;
98 Audio_time_signature *audio_;
102 class Midi_note : public Midi_channel_item
105 Midi_note (Audio_note *);
106 DECLARE_CLASSNAME(Midi_note);
108 int get_semitone_pitch () const;
109 int get_fine_tuning () const;
110 virtual string to_string () const;
115 static int const c0_pitch_ = 60;
119 class Midi_note_off : public Midi_note
122 Midi_note_off (Midi_note *);
123 DECLARE_CLASSNAME(Midi_note_off);
125 virtual string to_string () const;
128 Byte aftertouch_byte_;
131 class Midi_text : public Midi_item
136 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
139 DECLARE_CLASSNAME(Midi_text);
141 Midi_text (Audio_text *);
143 virtual string to_string () const;
148 class Midi_dynamic : public Midi_channel_item
151 Midi_dynamic (Audio_dynamic *);
152 DECLARE_CLASSNAME(Midi_dynamic);
154 virtual string to_string () const;
156 Audio_dynamic *audio_;
159 class Midi_piano_pedal : public Midi_channel_item
162 Midi_piano_pedal (Audio_piano_pedal *);
163 DECLARE_CLASSNAME(Midi_piano_pedal);
165 virtual string to_string () const;
167 Audio_piano_pedal *audio_;
170 class Midi_tempo : public Midi_item
173 Midi_tempo (Audio_tempo *);
174 DECLARE_CLASSNAME(Midi_tempo);
176 virtual string to_string () const;
183 #endif // MIDI_ITEM_HH