]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/audio-item.hh
release: 1.1.47
[lilypond.git] / lily / include / audio-item.hh
1 /*
2   audio-item.hh -- declare Audio_items
3
4   (c) 1996,  1997--1999 Jan Nieuwenhuizen <janneke@gnu.org>
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  */
20 struct Audio_item : public Audio_element {
21   Audio_item (Request* req_l);
22
23   /// Create a midi-item from myself.
24   virtual Midi_item* midi_item_p() = 0;
25
26   Audio_column* audio_column_l_;
27   /*
28     THIS SUX. This ties the output system to the input system.  Bad move.
29    */
30   Request* req_l_;
31
32       
33 protected:
34   virtual void do_print () const;
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                                       
54 struct Audio_note : public Audio_item {
55   
56   Audio_note (Request* req_l, int transposing_i = 0);
57   virtual Midi_item* midi_item_p();
58   int transposing_i_;
59 };
60
61 struct Audio_text : Audio_item {
62   enum Type { 
63     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
64     MARKER, CUE_POINT
65   };
66   
67   Audio_text (Audio_text::Type type, String text_str);
68   virtual Midi_item* midi_item_p();
69
70   Type type_;
71   String text_str_;
72 };
73
74 struct Audio_tempo : Audio_item {
75   Audio_tempo (int per_minute_4_i);
76   virtual Midi_item* midi_item_p();
77   
78   int per_minute_4_i_;
79 };
80
81 struct Audio_time_signature : Audio_item {
82   Audio_time_signature (Request* req_l);
83   virtual Midi_item* midi_item_p();
84   
85 };
86
87 #endif // AUDIO_ITEM_HH
88