]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
e6104dcb7f3db3823ce44d56fa039ca688ce58bb
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996, 1997 Jan Nieuwenhuizen <jan@digicash.com>
5  */
6
7 #ifndef AUDIO_ITEM_HH
8 #define AUDIO_ITEM_HH
9
10 #include "lily-proto.hh"
11 #include "string.hh"
12
13 /**
14   Any piece of audio information.
15   We need virtual constructors, 
16   let's try decentralised factory for specific audio implemenations.
17  */
18 struct Audio_item {
19     Audio_item( Request* req_l );
20
21     /// Create a midi-item from myself.
22     virtual Midi_item* midi_item_p() = 0;
23
24 #if 0
25     /// Not implemented. Anyone?
26     virtual Niff_item* niff_item_p() = 0;
27
28     /// Not implemented. Anyone?
29     virtual Cscore_item* score_item_p() = 0;
30 #endif
31     
32     Audio_column* audio_column_l_;
33     Request* req_l_;
34
35 private:
36     Audio_item( Audio_item const& );
37     Audio_item& operator=( Audio_item const& );
38 };
39
40 struct Audio_key : public Audio_item {
41     Audio_key( Request* req_l );
42
43     virtual Midi_item* midi_item_p();
44 };
45
46 #if 0
47 struct Audio_instrument : public Audio_item {
48     Audio_instrument( Request* req_l );
49 };
50 #endif
51                                       
52 struct Audio_note : public Audio_item {
53     Audio_note( Request* req_l, bool on_b );
54     virtual Midi_item* midi_item_p();
55     bool on_b_;
56 };
57
58 struct Audio_text : Audio_item {
59     enum Type { 
60         TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
61         MARKER, CUE_POINT
62     };
63
64     Audio_text( Audio_text::Type type, String text_str );
65     virtual Midi_item* midi_item_p();
66
67     Type type_;
68     String text_str_;
69 };
70
71 struct Audio_tempo : Audio_item {
72     Audio_tempo( int per_minute_4_i );
73     virtual Midi_item* midi_item_p();
74
75     int per_minute_4_i_;
76 };
77
78 struct Audio_meter : Audio_item {
79     Audio_meter( Request* req_l );
80     virtual Midi_item* midi_item_p();
81 };
82
83 #endif // AUDIO_ITEM_HH
84