X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpitch.hh;h=dad2bc1246727c5fc4f5dc016b78c7f2c788347b;hb=67cd07e55d5ec908c246ae543e480d367b61d6b3;hp=676a30c093f8d7811a251e6a3b2177401490ee91;hpb=bc95f4434f760d41191341ab4508b2064eb19025;p=lilypond.git diff --git a/lily/include/pitch.hh b/lily/include/pitch.hh index 676a30c093..dad2bc1246 100644 --- a/lily/include/pitch.hh +++ b/lily/include/pitch.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2010 Han-Wen Nienhuys + Copyright (C) 1998--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,24 +17,28 @@ along with LilyPond. If not, see . */ -#ifndef MUSICAL_PITCH_HH -#define MUSICAL_PITCH_HH +#ifndef PITCH_HH +#define PITCH_HH #include "lily-proto.hh" #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 + integer number of semitones. -/** 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 - integer number of semitones. - - Pitch is lexicographically ordered by (octave, notename, - alteration). - + Pitch is lexicographically ordered by (octave, notename, alteration). */ -class Pitch + +class Pitch : public Simple_smob { +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_; @@ -53,13 +57,14 @@ public: 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; Pitch to_relative_octave (Pitch) const; + Pitch normalized () const; + static int compare (Pitch const &, Pitch const &); int steps () const; @@ -70,11 +75,10 @@ public: 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, @@ -86,24 +90,23 @@ enum { DOUBLE_SHARP, }; -extern Rational DOUBLE_FLAT_ALTERATION; -extern Rational THREE_Q_FLAT_ALTERATION; -extern Rational FLAT_ALTERATION; -extern Rational SEMI_FLAT_ALTERATION; -extern Rational NATURAL_ALTERATION; -extern Rational SEMI_SHARP_ALTERATION; -extern Rational SHARP_ALTERATION; -extern Rational THREE_Q_SHARP_ALTERATION; -extern Rational DOUBLE_SHARP_ALTERATION; +extern Rational DOUBLE_FLAT_ALTERATION; +extern Rational THREE_Q_FLAT_ALTERATION; +extern Rational FLAT_ALTERATION; +extern Rational SEMI_FLAT_ALTERATION; +extern Rational NATURAL_ALTERATION; +extern Rational SEMI_SHARP_ALTERATION; +extern Rational SHARP_ALTERATION; +extern Rational THREE_Q_SHARP_ALTERATION; +extern Rational DOUBLE_SHARP_ALTERATION; 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 /* MUSICAL_PITCH_HH */ - +#endif /* PITCH_HH */