lilypond-0.1.17
[lilypond.git] / mi2mu / include / mudela-item.hh
blob9423959b6dd9eef453b72718fcdb47c9be81140b
1 //
2 // mudela-item.hh -- declare mudela_item
3 //
4 // copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
6 #ifndef MUDELA_ITEM_HH
7 #define MUDELA_ITEM_HH
9 #include "mi2mu-proto.hh"
10 #include "string.hh"
11 #include "moment.hh"
12 #include "duration.hh"
14 // should these:
15 // * be Mudela_items
16 // * be Voice_elements/requests
17 // * get a name-change
18 // ?
20 /// (mudela_item)
21 class Mudela_item
23 public:
24 Mudela_item (Mudela_column* mudela_column_l);
26 virtual Moment at_mom();
27 virtual Moment duration_mom();
28 void output (Mudela_stream& mudela_stream_r);
29 virtual String str() = 0;
31 Mudela_column* mudela_column_l_;
34 class Mudela_key : public Mudela_item
36 public:
37 Mudela_key (int accidentals_i, int minor_i);
39 String notename_str (int pitch_i);
40 virtual String str();
42 //private:
43 int accidentals_i_;
44 int minor_i_;
47 class Mudela_meter : public Mudela_item
49 public:
50 Mudela_meter (int num_i, int den_i, int division_4_i, int count_32_i);
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();
59 private:
60 Real sync_f_;
61 Duration sync_dur_;
62 int clocks_1_i_;
63 int num_i_;
64 int den_i_;
67 class Mudela_note : public Mudela_item
69 public:
70 Mudela_note (Mudela_column* mudela_column_l, int channel_i, int pitch_i, int dyn_i);
72 Duration duration();
73 virtual Moment duration_mom();
74 virtual String str();
76 // int const c0_pitch_i_c_ = 60; // huh?
77 int const c0_pitch_i_c_ = 48;
79 static bool const simple_plet_b_s = false;
80 int channel_i_;
81 int pitch_i_;
82 Mudela_column* end_column_l_;
85 class Mudela_skip : public Mudela_item
87 public:
88 Mudela_skip (Mudela_column* mudela_column_l, Moment skip_mom);
90 Duration duration();
91 virtual Moment duration_mom();
92 virtual String str();
94 private:
95 Moment mom_;
99 class Mudela_tempo : public Mudela_item
101 public:
102 Mudela_tempo (int useconds_per_4_i);
104 int get_tempo_i (Moment moment);
105 virtual String str();
106 int useconds_per_4_i();
108 private:
109 int useconds_per_4_i_;
110 Real seconds_per_1_f_;
113 class Mudela_text : public Mudela_item
115 public:
116 enum Type {
117 TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC,
118 MARKER, CUE_POINT
120 Mudela_text (Mudela_text::Type type, String str);
121 virtual String str();
123 //private:
124 Type type_;
125 String text_str_;
128 #endif // MUDELA_ITEM_HH