lilypond-1.3.31
[lilypond.git] / lily / include / audio-item.hh
blob8edd0ef388ca9692a0b67c17543c3a311548e3d4
1 /*
2 audio-item.hh -- declare Audio_items
4 (c) 1996, 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
5 */
7 #ifndef AUDIO_ITEM_HH
8 #define AUDIO_ITEM_HH
10 #include <typeinfo>
11 #include "lily-proto.hh"
12 #include "string.hh"
13 #include "audio-element.hh"
14 #include "key-def.hh"
15 #include "musical-pitch.hh"
16 #include "moment.hh"
17 #include "drul-array.hh"
19 /**
20 Any piece of audio information.
21 We need virtual conclassors,
22 let's try decentralised factory for specific audio implemenations.
25 class Audio_item : public Audio_element
27 public:
28 Audio_item ();
30 Audio_column* audio_column_l_;
32 protected:
33 virtual void do_print () const;
35 private:
36 Audio_item (Audio_item const&);
37 Audio_item& operator=( Audio_item const&);
40 class Audio_dynamic : public Audio_item
42 public:
43 Audio_dynamic (int volume);
45 int volume_i_;
48 class Audio_key : public Audio_item
50 public:
51 Audio_key (Key_def const& key);
53 Key_def key_;
56 class Audio_instrument : public Audio_item
58 public:
59 Audio_instrument (String instrument_str);
61 String str_;
64 class Audio_note : public Audio_item
66 public:
67 Audio_note (Musical_pitch p, Moment m, int transposing_i = 0);
69 void tie_to (Audio_note*);
71 Musical_pitch pitch_;
72 Moment length_mom_;
73 Moment delayed_mom_;
74 Moment delayed_until_mom_;
75 int transposing_i_;
76 Audio_note* tied_;
79 class Audio_text : public Audio_item
81 public:
82 enum Type {
83 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
84 MARKER, CUE_POINT
87 Audio_text (Audio_text::Type type, String text_str);
89 Type type_;
90 String text_str_;
93 class Audio_tempo : public Audio_item
95 public:
96 Audio_tempo (int per_minute_4_i);
98 int per_minute_4_i_;
101 class Audio_tie : public Audio_item
103 public:
104 Audio_tie ();
105 void set_note (Direction, Audio_note*);
106 Drul_array<Audio_note*> note_l_drul_;
109 class Audio_time_signature : public Audio_item
111 public:
112 Audio_time_signature (int beats, int one_beat);
114 int beats_i_;
115 int one_beat_i_;
118 #endif // AUDIO_ITEM_HH