]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
release: 1.3.131
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996--2001 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   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   
33 private:
34   Audio_item (Audio_item const&);
35   Audio_item& operator=( Audio_item const&);
36 };
37
38 class Audio_dynamic : public Audio_item
39 {
40 public:
41   Audio_dynamic (Real volume);
42
43   Real volume_;
44 };
45
46 class Audio_key : public Audio_item
47 {
48 public:
49   Audio_key (); //Newkey_def const& key);
50   // FIXME
51 };
52
53 class Audio_instrument : public Audio_item
54 {
55 public:
56   Audio_instrument (String instrument_str);
57
58   String str_;
59 };
60                                       
61 class Audio_note : public Audio_item
62 {
63 public:  
64   Audio_note (Pitch p, Moment m, int transposing_i = 0);
65
66   void tie_to (Audio_note*);
67
68   Pitch pitch_;
69   Moment length_mom_;
70   Moment delayed_mom_;
71   Moment delayed_until_mom_;
72   int transposing_i_;
73   Audio_note* tied_;
74 };
75
76 class Audio_piano_pedal : public Audio_item
77 {
78 public:
79   String type_str_;
80   Direction dir_;
81 };
82
83 class Audio_text : public Audio_item
84 {
85 public:
86   enum Type { 
87     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
88     MARKER, CUE_POINT
89   };
90   
91   Audio_text (Audio_text::Type type, String text_str);
92
93   Type type_;
94   String text_str_;
95 };
96
97 class Audio_tempo : public Audio_item
98 {
99 public:
100   Audio_tempo (int per_minute_4_i);
101
102   int per_minute_4_i_;
103 };
104
105 class Audio_tie : public Audio_item
106 {
107 public:
108   Audio_tie ();
109   void set_note (Direction, Audio_note*);
110   Drul_array<Audio_note*> note_l_drul_;
111 };
112
113 class Audio_time_signature : public Audio_item
114 {
115 public:
116   Audio_time_signature (int beats, int one_beat);
117
118   int beats_i_;
119   int one_beat_i_;
120 };
121
122 #endif // AUDIO_ITEM_HH
123