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];
87 Stem_req * st = new Stem_req(dur,dots);
88 st->plet_factor = Moment(default_plet_dur, default_plet_type);
92 Note_req * rq = new Note_req;
96 parse_pitchmod(pitch, i, oct, forceacc);
97 rq->notename =notename[0];
98 rq->accidental = notename[1];
100 rq->forceacc = forceacc;
103 rq->plet_factor = Moment(default_plet_dur, default_plet_type);
112 get_word_element(Text_def* tdef_p, int* duration)
114 Voice_element* velt_p = new Voice_element;
117 int dur = duration[0];
118 int dots=duration[1];
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);
133 get_rest_element(String, int * duration )
135 Voice_element*v = new Voice_element;
137 Rest_req * rq = new Rest_req;
138 rq->plet_factor = Moment(default_plet_dur, default_plet_type);
139 rq->balltype = duration[0];
140 rq->dots = duration[1];
148 get_default_duration(int *p)
150 *p++ = default_duration;
155 set_default_duration(int *p)
157 default_duration = *p++;
163 set_default_octave(String d)
167 parse_octave(d, i, default_octave);
176 ret = new Barcheck_req;
182 Beam_req*b = new Beam_req;
183 if (default_plet_type != 1)
184 b->nplet = default_plet_type;
202 ret->span()->spantype = Span_req::START;
206 ret->span()->spantype = Span_req::STOP;
217 add_requests(Voice_element *v, Array<Request*> &req)
219 for (int i = 0; i < req.size(); i++) {
226 get_scriptdef(char c)
230 case '^' : s = "marcato";
232 case '+' : s = "stopped";
234 case '-' : s = "tenuto";
236 case '|': s = "staccatissimo";
240 case '>' : s = "accent";
244 case '.' : s = "staccato";
247 return lexer->lookup_identifier(s)->script(1);
251 get_script_req(int d , Script_def*def)
253 return new Script_req(d, def);
257 get_text_req(int d , Text_def*def)
259 return new Text_req(d, def);
263 get_mark_element(String s)
265 Voice_element*v_p = new Voice_element;
266 v_p->add( new Mark_req(s));
271 get_command_element(Input_command*com_p)
273 Voice_element *v_p = new Voice_element;
274 v_p->add(new Staff_command_req(com_p));
278 get_barcheck_element()
280 Voice_element*v_p = new Voice_element;
281 v_p->add( new Barcheck_req);