- if (SCM_UNBNDP (d) || scm_is_false (scm_call_1 ($2, d)))
- MYREPARSE (@4, $2, REAL, $4); // trigger error
- else
- MYREPARSE (@4, $2, DURATION_IDENTIFIER, d);
+ if (!SCM_UNBNDP (d)) {
+ if (scm_is_true (scm_call_1 ($2, d)))
+ MYREPARSE (@4, $2, DURATION_IDENTIFIER, d);
+ else if (scm_is_true
+ (scm_call_1
+ ($2, make_music_from_simple (parser, @4, d))))
+ MYREPARSE (@4, $2, DURATION_ARG, d);
+ else
+ MYREPARSE (@4, $2, SCM_ARG, $4); // trigger error
+ } else
+ MYREPARSE (@4, $2, SCM_ARG, $4); // trigger error