- // should take list?: (make-pitch '(octave name accidental))
- scm_make_gsubr ("make-pitch", 3, 0, 0, (Scheme_function_unknown)make_pitch);
-
- scm_make_gsubr ("pitch-octave", 1, 0, 0, (Scheme_function_unknown)pitch_octave);
- scm_make_gsubr ("pitch-notename", 1, 0, 0, (Scheme_function_unknown)pitch_notename);
- scm_make_gsubr ("pitch-alteration", 1, 0, 0, (Scheme_function_unknown)pitch_alteration);
- scm_make_gsubr ("pitch-semitones", 1, 0, 0, (Scheme_function_unknown)pitch_semitones);
- scm_make_gsubr ("Pitch::transpose", 2, 0, 0, (Scheme_function_unknown) pitch_transpose);
+ return Pitch::less_p (ly_car (p1), ly_car (p2));
+}
+
+
+LY_DEFINE(ly_pitch_diff, "ly:pitch-diff", 2 ,0 ,0,
+ (SCM pitch, SCM root),
+ "Return pitch with value DELTA = PITCH - ROOT, ie,
+ROOT == (ly:pitch-transpose root delta).")
+{
+ Pitch *p = unsmob_pitch (pitch);
+ Pitch *r = unsmob_pitch (root);
+ SCM_ASSERT_TYPE(p, pitch, SCM_ARG1, __FUNCTION__, "Pitch");
+ SCM_ASSERT_TYPE(r, root, SCM_ARG2, __FUNCTION__, "Pitch");
+
+ return interval (*p, *r ).smobbed_copy();