9 #include "identparent.hh"
14 int default_duration = 4, default_dots=0, default_octave=0;
15 int default_plet_type = 1, default_plet_dur = 1;
16 String textstyle="roman"; // in lexer?
18 /* triplet is '2/3' */
19 void set_plet(int num,int den)
21 assert(num >0&& den>0);
22 default_plet_dur = num;
23 default_plet_type = den;
27 get_text(String s) return t;
31 t->style_str_ = textstyle;
36 set_text_style(String s)
42 parse_octave (const char *a, int &j, int &oct)
57 parse_pitchmod( const char *a, int &j, int &oct, bool & overide_acc)
61 parse_octave(a,j,oct);
72 mtor << "oct " << oct;
73 mtor << "override: " << overide_acc<<'\n';
78 get_note_element(String pitch, int * notename, int * duration )
80 Voice_element*v = new Voice_element;
83 int dur = duration[0];
86 Note_req * rq = new Note_req;
89 Stem_req * st = new Stem_req(dur);
95 parse_pitchmod(pitch, i, oct, forceacc);
96 rq->name =notename[0];
97 rq->accidental = notename[1];
99 rq->forceacc = forceacc;
102 rq->plet_factor = Moment(default_plet_dur, default_plet_type);
111 get_word_element(Text_def* tdef_p, int* duration)
113 Voice_element* velt_p = new Voice_element;
116 int dur = duration[0];
117 int dots=duration[1];
119 Lyric_req* lreq_p = new Lyric_req(tdef_p);
121 lreq_p->balltype = dur;
123 lreq_p->plet_factor = Moment(default_plet_dur, default_plet_type);
132 get_rest_element(String, int * duration )
134 Voice_element*v = new Voice_element;
136 Rest_req * rq = new Rest_req;
137 rq->plet_factor = Moment(default_plet_dur, default_plet_type);
138 rq->balltype = duration[0];
139 rq->dots = duration[1];
147 get_default_duration(int *p)
149 *p++ = default_duration;
154 set_default_duration(int *p)
156 default_duration = *p++;
162 set_default_octave(String d)
166 parse_octave(d, i, default_octave);
175 ret = new Barcheck_req;
180 Beam_req*b = new Beam_req;
181 if (default_plet_type != 1)
182 b->nplet = default_plet_type;
199 ret->span()->spantype = Span_req::START;
203 ret->span()->spantype = Span_req::STOP;
215 add_requests(Voice_element *v, Array<Request*> &req)
217 for (int i = 0; i < req.size(); i++) {
224 get_scriptdef(char c)
228 case '^' : s = "marcato";
230 case '+' : s = "stopped";
232 case '-' : s = "tenuto";
234 case '|': s = "staccatissimo";
238 case '>' : s = "accent";
242 case '.' : s = "staccato";
245 return lexer->lookup_identifier(s)->script(1);
249 get_script_req(int d , Script_def*def)
251 return new Script_req(d, def);
255 get_text_req(int d , Text_def*def)
257 return new Text_req(d, def);
261 get_mark_element(String s)
263 Voice_element*v_p = new Voice_element;
264 v_p->add( new Mark_req(s));
269 get_command_element(Input_command*com_p)
271 Voice_element *v_p = new Voice_element;
272 v_p->add(new Staff_command_req(com_p));
276 get_barcheck_element()
278 Voice_element*v_p = new Voice_element;
279 v_p->add( new Barcheck_req);