]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
release: 0.1.61
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996,  1997--1998 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   /*
33     THIS SUX. This ties the output system to the input system.  Bad move.
34    */
35   Request* req_l_;
36
37   DECLARE_MY_RUNTIME_TYPEINFO;    
38 protected:
39   virtual void do_print () const;
40   
41 private:
42   Audio_item (Audio_item const&);
43   Audio_item& operator=( Audio_item const&);
44 };
45
46 struct Audio_key : public Audio_item {
47   Audio_key (Request* req_l);
48   DECLARE_MY_RUNTIME_TYPEINFO;
49   virtual Midi_item* midi_item_p();
50 };
51
52 struct Audio_instrument : public Audio_item {
53   Audio_instrument (String instrument_str);
54   virtual Midi_item* midi_item_p();
55   String str_;
56     DECLARE_MY_RUNTIME_TYPEINFO;
57 };
58                                       
59 struct Audio_note : public Audio_item {
60   DECLARE_MY_RUNTIME_TYPEINFO;
61   Audio_note (Request* req_l);
62   virtual Midi_item* midi_item_p();
63 };
64
65 struct Audio_text : Audio_item {
66   enum Type { 
67     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
68     MARKER, CUE_POINT
69   };
70   DECLARE_MY_RUNTIME_TYPEINFO;
71   Audio_text (Audio_text::Type type, String text_str);
72   virtual Midi_item* midi_item_p();
73
74   Type type_;
75   String text_str_;
76 };
77
78 struct Audio_tempo : Audio_item {
79   Audio_tempo (int per_minute_4_i);
80   virtual Midi_item* midi_item_p();
81   DECLARE_MY_RUNTIME_TYPEINFO;
82   int per_minute_4_i_;
83 };
84
85 struct Audio_meter : Audio_item {
86   Audio_meter (Request* req_l);
87   virtual Midi_item* midi_item_p();
88   DECLARE_MY_RUNTIME_TYPEINFO;
89 };
90
91 #endif // AUDIO_ITEM_HH
92