/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "smobs.hh"
#include "rational.hh"
-
/*
A "tonal" pitch. This is a pitch used in diatonal western music
(24 quartertones in an octave), as opposed to a frequency in Hz or a
Pitch is lexicographically ordered by (octave, notename, alteration).
*/
-class Pitch
+class Pitch : public Simple_smob<Pitch>
{
+public:
+ static SCM equal_p (SCM, SCM);
+ int print_smob (SCM, scm_print_state *) const;
+ SCM mark_smob () const;
+ static const char * const type_p_name_;
private:
int octave_;
int notename_;
int get_notename () const;
Rational get_alteration () const;
- Pitch (int octave, int notename, Rational accidental);
- Pitch (int octave, int notename);
+ Pitch (int octave, int notename, Rational accidental = 0);
Pitch ();
Pitch transposed (Pitch) const;
string to_string () const;
DECLARE_SCHEME_CALLBACK (less_p, (SCM a, SCM b));
- DECLARE_SIMPLE_SMOBS (Pitch);
};
-
-enum {
+enum
+{
DOUBLE_FLAT = -4,
THREE_Q_FLAT,
FLAT,
SCM ly_pitch_diff (SCM pitch, SCM root);
SCM ly_pitch_transpose (SCM p, SCM delta);
-DECLARE_UNSMOB (Pitch, pitch);
INSTANTIATE_COMPARE (Pitch, Pitch::compare);
extern SCM pitch_less_proc;
Pitch pitch_interval (Pitch const &from, Pitch const &to);
+extern SCM Pitch_type_p_proc;
#endif /* PITCH_HH */