]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
patch::: 1.3.33.jcn3
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996--2000 Jan Nieuwenhuizen <janneke@gnu.org>
5  */
6
7 #ifndef AUDIO_ITEM_HH
8 #define AUDIO_ITEM_HH
9
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"
18
19 /**
20   Any piece of audio information.
21   We need virtual conclassors, 
22   let's try decentralised factory for specific audio implemenations.
23
24  */
25 class Audio_item : public Audio_element
26 {
27 public:
28   Audio_item ();
29
30   Audio_column* audio_column_l_;
31
32 protected:
33   virtual void do_print () const;
34   
35 private:
36   Audio_item (Audio_item const&);
37   Audio_item& operator=( Audio_item const&);
38 };
39
40 class Audio_dynamic : public Audio_item
41 {
42 public:
43   Audio_dynamic (int volume);
44
45   int volume_i_;
46 };
47
48 class Audio_key : public Audio_item
49 {
50 public:
51   Audio_key (Key_def const& key);
52
53   Key_def key_;
54 };
55
56 class Audio_instrument : public Audio_item
57 {
58 public:
59   Audio_instrument (String instrument_str);
60
61   String str_;
62 };
63                                       
64 class Audio_note : public Audio_item
65 {
66 public:  
67   Audio_note (Musical_pitch p, Moment m, int transposing_i = 0);
68
69   void tie_to (Audio_note*);
70
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_;
77 };
78
79 class Audio_text : public Audio_item
80 {
81 public:
82   enum Type { 
83     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
84     MARKER, CUE_POINT
85   };
86   
87   Audio_text (Audio_text::Type type, String text_str);
88
89   Type type_;
90   String text_str_;
91 };
92
93 class Audio_tempo : public Audio_item
94 {
95 public:
96   Audio_tempo (int per_minute_4_i);
97
98   int per_minute_4_i_;
99 };
100
101 class Audio_tie : public Audio_item
102 {
103 public:
104   Audio_tie ();
105   void set_note (Direction, Audio_note*);
106   Drul_array<Audio_note*> note_l_drul_;
107 };
108
109 class Audio_time_signature : public Audio_item
110 {
111 public:
112   Audio_time_signature (int beats, int one_beat);
113
114   int beats_i_;
115   int one_beat_i_;
116 };
117
118 #endif // AUDIO_ITEM_HH
119