]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
* lily/span-dynamic-performer.cc (process_music): remove spurious
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996--2004 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   Audio_column* audio_column_;
29   
30 private:
31   Audio_item (Audio_item const&);
32   Audio_item& operator= ( Audio_item const&);
33 };
34
35 class Audio_dynamic : public Audio_item
36 {
37 public:
38   Audio_dynamic (Real volume);
39
40   Real volume_;
41 };
42
43 class Audio_key : public Audio_item
44 {
45 public:
46   Audio_key (int acc, bool major);
47
48   int accidentals_;
49   bool major_;
50 };
51
52 class Audio_instrument : public Audio_item
53 {
54 public:
55   Audio_instrument (String instrument_string);
56
57   String str_;
58 };
59                                       
60 class Audio_note : public Audio_item
61 {
62 public:  
63   Audio_note (Pitch p, Moment m, int transposing_i = 0);
64
65   void tie_to (Audio_note*);
66
67   Pitch pitch_;
68   Moment length_mom_;
69   Moment delayed_mom_;
70   Moment delayed_until_mom_;
71   int transposing_;
72   Audio_note* tied_;
73 };
74
75 class Audio_piano_pedal : public Audio_item
76 {
77 public:
78   String type_string_;
79   Direction dir_;
80 };
81
82 class Audio_text : public Audio_item
83 {
84 public:
85   enum Type { 
86     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
87     MARKER, CUE_POINT
88   };
89   
90   Audio_text (Audio_text::Type type, String text_string);
91
92   Type type_;
93   String text_string_;
94 };
95
96 class Audio_tempo : public Audio_item
97 {
98 public:
99   Audio_tempo (int per_minute_4_i);
100
101   int per_minute_4_;
102 };
103
104 class Audio_time_signature : public Audio_item
105 {
106 public:
107   Audio_time_signature (int beats, int one_beat);
108
109   int beats_;
110   int one_beat_;
111 };
112
113 #endif // AUDIO_ITEM_HH
114