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