]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
* Documentation/user/GNUmakefile
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c)  1996--2003 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
15 #include "pitch.hh"
16 #include "moment.hh"
17 #include "drul-array.hh"
18
19 /**
20    
21   Any piece of audio information.  We need virtual constructors, let's
22   try decentralised factory for specific audio implemenations.
23  */
24 class Audio_item : public Audio_element
25 {
26 public:
27   Audio_item ();
28
29   Audio_column* audio_column_;
30
31   
32 private:
33   Audio_item (Audio_item const&);
34   Audio_item& operator= ( Audio_item const&);
35 };
36
37 class Audio_dynamic : public Audio_item
38 {
39 public:
40   Audio_dynamic (Real volume);
41
42   Real volume_;
43 };
44
45 class Audio_key : public Audio_item
46 {
47 public:
48   Audio_key (int acc, bool major);
49
50   int accidentals_;
51   bool major_;
52 };
53
54 class Audio_instrument : public Audio_item
55 {
56 public:
57   Audio_instrument (String instrument_string);
58
59   String str_;
60 };
61                                       
62 class Audio_note : public Audio_item
63 {
64 public:  
65   Audio_note (Pitch p, Moment m, int transposing_i = 0);
66
67   void tie_to (Audio_note*);
68
69   Pitch pitch_;
70   Moment length_mom_;
71   Moment delayed_mom_;
72   Moment delayed_until_mom_;
73   int transposing_;
74   Audio_note* tied_;
75 };
76
77 class Audio_piano_pedal : public Audio_item
78 {
79 public:
80   String type_string_;
81   Direction dir_;
82 };
83
84 class Audio_text : public Audio_item
85 {
86 public:
87   enum Type { 
88     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
89     MARKER, CUE_POINT
90   };
91   
92   Audio_text (Audio_text::Type type, String text_string);
93
94   Type type_;
95   String text_string_;
96 };
97
98 class Audio_tempo : public Audio_item
99 {
100 public:
101   Audio_tempo (int per_minute_4_i);
102
103   int per_minute_4_;
104 };
105
106 class Audio_tie : public Audio_item
107 {
108 public:
109   Audio_tie ();
110   void set_note (Direction, Audio_note*);
111   Drul_array<Audio_note*> note_drul_;
112 };
113
114 class Audio_time_signature : public Audio_item
115 {
116 public:
117   Audio_time_signature (int beats, int one_beat);
118
119   int beats_;
120   int one_beat_;
121 };
122
123 #endif // AUDIO_ITEM_HH
124