]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
release: 1.1.54
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
5  */
6
7 #ifndef AUDIO_ITEM_HH
8 #define AUDIO_ITEM_HH
9
10 #include "lily-proto.hh"
11 #include "string.hh"
12 #include "audio-element.hh"
13 #include "key-def.hh"
14 #include "musical-pitch.hh"
15 #include "moment.hh"
16 #include "drul-array.hh"
17
18 /**
19   Any piece of audio information.
20   We need virtual conclassors, 
21   let's try decentralised factory for specific audio implemenations.
22
23  */
24 class Audio_item : public Audio_element
25 {
26 public:
27   Audio_item ();
28
29   Audio_column* audio_column_l_;
30
31 protected:
32   virtual void do_print () const;
33   
34 private:
35   Audio_item (Audio_item const&);
36   Audio_item& operator=( Audio_item const&);
37 };
38
39 class Audio_key : public Audio_item
40 {
41 public:
42   Audio_key (Key_def const& key);
43
44   Key_def key_;
45 };
46
47 class Audio_instrument : public Audio_item
48 {
49 public:
50   Audio_instrument (String instrument_str);
51
52   String str_;
53 };
54                                       
55 class Audio_note : public Audio_item
56 {
57 public:  
58   Audio_note (Musical_pitch p, Moment m, int transposing_i = 0);
59
60   void tie_to (Audio_note*);
61
62   Musical_pitch pitch_;
63   Moment length_mom_;
64   Moment delayed_mom_;
65   Moment delayed_until_mom_;
66   int transposing_i_;
67   Audio_note* tied_;
68 };
69
70 class Audio_text : public Audio_item
71 {
72 public:
73   enum Type { 
74     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
75     MARKER, CUE_POINT
76   };
77   
78   Audio_text (Audio_text::Type type, String text_str);
79
80   Type type_;
81   String text_str_;
82 };
83
84 class Audio_tempo : public Audio_item
85 {
86 public:
87   Audio_tempo (int per_minute_4_i);
88
89   int per_minute_4_i_;
90 };
91
92 class Audio_tie : public Audio_item
93 {
94 public:
95   Audio_tie ();
96   void set_note (Direction, Audio_note*);
97   Drul_array<Audio_note*> note_l_drul_;
98 };
99
100 class Audio_time_signature : public Audio_item
101 {
102 public:
103   Audio_time_signature (int beats, int one_beat);
104
105   int beats_i_;
106   int one_beat_i_;
107 };
108
109 #endif // AUDIO_ITEM_HH
110