]> git.donarmstrong.com Git - lilypond.git/blob - mi2mu/include/mudela-item.hh
9423959b6dd9eef453b72718fcdb47c9be81140b
[lilypond.git] / mi2mu / include / mudela-item.hh
1 //
2 // mudela-item.hh -- declare mudela_item
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
5
6 #ifndef MUDELA_ITEM_HH
7 #define MUDELA_ITEM_HH
8
9 #include "mi2mu-proto.hh"
10 #include "string.hh"
11 #include "moment.hh"
12 #include "duration.hh"
13
14 // should these:
15 // * be Mudela_items
16 // * be Voice_elements/requests
17 // * get a name-change
18 // ?
19
20 /// (mudela_item)
21 class Mudela_item 
22 {
23 public:
24     Mudela_item (Mudela_column* mudela_column_l);
25     
26     virtual Moment at_mom();
27     virtual Moment duration_mom();
28     void output (Mudela_stream& mudela_stream_r);
29     virtual String str() = 0;
30
31     Mudela_column* mudela_column_l_;
32 };
33
34 class Mudela_key : public Mudela_item 
35 {
36 public:
37     Mudela_key (int accidentals_i, int minor_i);
38
39     String notename_str (int pitch_i);
40     virtual String str();
41
42 //private:
43     int accidentals_i_;
44     int minor_i_;
45 };
46
47 class Mudela_meter : public Mudela_item 
48 {
49 public:
50     Mudela_meter (int num_i, int den_i, int division_4_i, int count_32_i);
51
52     Duration i2_dur (int time_i, int division_1_i);
53     int clocks_1_i();
54     int den_i();
55     int num_i();
56     virtual String str();
57     Moment bar_mom();
58
59 private:
60     Real sync_f_;
61     Duration sync_dur_;
62     int clocks_1_i_;
63     int num_i_;
64     int den_i_;
65 };
66
67 class Mudela_note : public Mudela_item 
68 {
69 public:
70     Mudela_note (Mudela_column* mudela_column_l, int channel_i, int pitch_i, int dyn_i);
71
72     Duration duration();
73     virtual Moment duration_mom();
74     virtual String str();
75     
76 //    int const c0_pitch_i_c_ = 60; // huh?
77     int const c0_pitch_i_c_ = 48;
78
79     static bool const simple_plet_b_s = false;
80     int channel_i_;
81     int pitch_i_;
82     Mudela_column* end_column_l_;
83 };
84
85 class Mudela_skip : public Mudela_item 
86 {
87 public:
88     Mudela_skip (Mudela_column* mudela_column_l, Moment skip_mom);
89
90     Duration duration();
91     virtual Moment duration_mom();
92     virtual String str();
93
94 private:
95     Moment mom_;
96 };
97
98
99 class Mudela_tempo : public Mudela_item 
100 {
101 public:
102     Mudela_tempo (int useconds_per_4_i);
103
104     int get_tempo_i (Moment moment);
105     virtual String str();
106     int useconds_per_4_i();
107
108 private:
109     int useconds_per_4_i_;
110     Real seconds_per_1_f_;
111 };
112
113 class Mudela_text : public Mudela_item 
114 {
115 public:
116     enum Type { 
117         TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
118         MARKER, CUE_POINT
119     };
120     Mudela_text (Mudela_text::Type type,  String str);
121     virtual String str();
122
123 //private:
124     Type type_;
125     String text_str_;
126 };
127
128 #endif // MUDELA_ITEM_HH
129