9 #include "musical-request.hh"
10 #include "command-request.hh"
13 #include "identparent.hh"
15 #include "text-def.hh"
16 #include "parseconstruct.hh"
17 #include "input-music.hh"
18 #include "voice-element.hh"
20 int default_duration = 4, default_dots=0, default_octave=0;
21 int default_plet_type = 1, default_plet_dur = 1;
22 String textstyle="roman"; // in lexer?
24 bool last_duration_mode = false;
27 set_duration_mode(String s)
30 last_duration_mode = (s== "LAST");
36 if (last_duration_mode)
40 /* triplet is '2/3' */
42 set_plet(int num,int den)
44 assert(num >0&& den>0);
45 default_plet_dur = num;
46 default_plet_type = den;
50 get_text(String s) return t;
54 t->style_str_ = textstyle;
55 t->defined_ch_c_l_ = defined_ch_c_l;
60 set_text_style(String s)
66 parse_octave (const char *a, int &j, int &oct)
81 get_note_element(Note_req *rq, int * duration )
83 Voice_element*v = new Voice_element;
84 v->defined_ch_c_l_ = defined_ch_c_l;
86 int dur = duration[0];
87 int dots = duration[1];
90 Stem_req * stem_req_p = new Stem_req(dur,dots);
91 stem_req_p->plet_factor = Moment(default_plet_dur, default_plet_type);
92 stem_req_p->defined_ch_c_l_ = defined_ch_c_l;
96 if ( !defined_ch_c_l )
97 defined_ch_c_l = lexer->here_ch_c_l();
101 rq->plet_factor = Moment(default_plet_dur, default_plet_type);
102 rq->defined_ch_c_l_ = defined_ch_c_l;
110 get_word_element(Text_def* tdef_p, int* duration)
112 Voice_element* velt_p = new Voice_element;
113 velt_p->defined_ch_c_l_ = defined_ch_c_l;
115 int dur = duration[0];
116 int dots=duration[1];
118 tdef_p->defined_ch_c_l_ = defined_ch_c_l;
120 Lyric_req* lreq_p = new Lyric_req(tdef_p);
122 lreq_p->balltype = dur;
124 lreq_p->plet_factor = Moment(default_plet_dur, default_plet_type);
126 lreq_p->defined_ch_c_l_ = defined_ch_c_l;
134 get_rest_element(String, int * duration )
136 Voice_element* velt_p = new Voice_element;
137 velt_p->defined_ch_c_l_ = defined_ch_c_l;
139 Rest_req * rest_req_p = new Rest_req;
140 rest_req_p->plet_factor = Moment(default_plet_dur, default_plet_type);
141 rest_req_p->balltype = duration[0];
142 rest_req_p->dots = duration[1];
144 rest_req_p->defined_ch_c_l_ = defined_ch_c_l;
146 velt_p->add(rest_req_p);
152 get_default_duration(int *p)
154 *p++ = default_duration;
159 set_default_duration(int *p)
161 default_duration = *p++;
167 set_default_octave(String d)
171 parse_octave(d, i, default_octave);
175 get_plet_request( char c, int dur_i, int type_i )
177 Plet_req* plet_req_p = new Plet_req;
178 plet_req_p->dur_i_ = dur_i;
179 plet_req_p->type_i_ = type_i;
180 plet_req_p->type_c_ = c;
190 req_p = new Barcheck_req;
196 Beam_req*b = new Beam_req;
197 if (default_plet_type != 1)
198 b->nplet = default_plet_type;
206 req_p = new Slur_req;
216 req_p->span()->spantype = Span_req::START;
220 req_p->span()->spantype = Span_req::STOP;
227 req_p->defined_ch_c_l_ = req_defined_ch_c_l;
232 add_requests(Voice_element *v, Array<Request*> &req)
234 for (int i = 0; i < req.size(); i++) {
241 get_scriptdef(char c)
245 case '^' : s = "marcato";
247 case '+' : s = "stopped";
249 case '-' : s = "tenuto";
251 case '|': s = "staccatissimo";
255 case '>' : s = "accent";
259 case '.' : s = "staccato";
262 return lexer->lookup_identifier(s)->script(1);
266 get_script_req(int d , Script_def*def)
268 Script_req* script_req_p = new Script_req(d, def);
273 get_text_req(int d , Text_def*def)
275 Text_req* text_req_p = new Text_req(d, def);
280 get_stemdir_req(int d)
282 Group_feature_req * gfreq_p = new Group_feature_req;
283 gfreq_p->stemdir_i_ =d;
288 get_grouping_req(Array<int> i_arr)
290 Measure_grouping_req * mr_p = new Measure_grouping_req;
291 for (int i=0; i <i_arr.size(); ) {
292 mr_p->beat_i_arr_.push(i_arr[i++]);
293 mr_p->elt_length_arr_.push(Moment(1, i_arr[i++]));