-/*
- should add optional args
- */
-static SCM
-make_pitch (SCM o, SCM n, SCM a)
-{
- SCM_ASSERT_TYPE(gh_number_p(o), o, SCM_ARG1, __FUNCTION__, "number");
- SCM_ASSERT_TYPE(gh_number_p(n), n, SCM_ARG2, __FUNCTION__, "number");
- SCM_ASSERT_TYPE(gh_number_p(a), a, SCM_ARG3, __FUNCTION__, "number");
-
- Pitch p (gh_scm2int (o), gh_scm2int (n), gh_scm2int (a));
- return p.smobbed_copy ();
-}
-
-static SCM
-pitch_octave (SCM pp)
-{
- Pitch *p = unsmob_pitch (pp);
- SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
- int q = p->octave_i ();
-
- return gh_int2scm (q);
-}
-
-static SCM
-pitch_alteration (SCM pp)
-{
- Pitch *p = unsmob_pitch (pp);
- SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
- int q = p->alteration_i ();
-
- return gh_int2scm (q);
-}
-
-static SCM
-pitch_notename (SCM pp)
-{
- Pitch *p = unsmob_pitch (pp);
- SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
- int q = p->notename_i ();
-
- return gh_int2scm (q);
-}
-
-static SCM
-pitch_semitones (SCM pp)
-{
- Pitch *p = unsmob_pitch (pp);
- SCM_ASSERT_TYPE(p, pp, SCM_ARG1, __FUNCTION__, "Pitch");
-
- int q = p->steps ();
-
- return gh_int2scm (q);
-}
-
-static void
-add_funcs ()
-{
- // should take list?: (make-pitch ' (octave name accidental))
- scm_c_define_gsubr ("make-pitch", 3, 0, 0, (Scheme_function_unknown)make_pitch);
- scm_c_define_gsubr ("pitch-octave", 1, 0, 0, (Scheme_function_unknown)pitch_octave);
- scm_c_define_gsubr ("pitch-notename", 1, 0, 0, (Scheme_function_unknown)pitch_notename);
- scm_c_define_gsubr ("pitch-alteration", 1, 0, 0, (Scheme_function_unknown)pitch_alteration);
- scm_c_define_gsubr ("pitch-semitones", 1, 0, 0, (Scheme_function_unknown)pitch_semitones);
- scm_c_define_gsubr ("Pitch::transpose", 2, 0, 0, (Scheme_function_unknown) pitch_transpose);
-}
-
-ADD_SCM_INIT_FUNC (pitch, add_funcs);
-
-SCM
-Pitch::smobbed_copy ()const