]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
release: 0.1.8
[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 #include "audio-element.hh"
13
14 /**
15   Any piece of audio information.
16   We need virtual constructors, 
17   let's try decentralised factory for specific audio implemenations.
18
19   TODO:
20
21   virtual Niff_item* niff_item_p() = 0;
22   
23   virtual CSound_item* score_item_p() = 0;
24  */
25 struct Audio_item : public Audio_element {
26     Audio_item (Request* req_l);
27
28     /// Create a midi-item from myself.
29     virtual Midi_item* midi_item_p() = 0;
30
31     Audio_column* audio_column_l_;
32     Request* req_l_;
33
34     DECLARE_MY_RUNTIME_TYPEINFO;
35     
36 private:
37     Audio_item (Audio_item const&);
38     Audio_item& operator=( Audio_item const&);
39 };
40
41 struct Audio_key : public Audio_item {
42     Audio_key (Request* req_l);
43
44     virtual Midi_item* midi_item_p();
45 };
46
47 struct Audio_instrument : public Audio_item {
48     Audio_instrument (String instrument_str);
49     virtual Midi_item* midi_item_p();
50     String str_;
51 };
52                                       
53 struct Audio_note : public Audio_item {
54     Audio_note (Request* req_l);
55     virtual Midi_item* midi_item_p();
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