]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/pitch.cc
Merge branch 'master' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / pitch.cc
index 4d983ab6d5e4e6a729e0440c51d9e6e302426285..bc8a9e45a6cd9b8467ecc3af1344deed84da3998 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
 
 #include "pitch.hh"
@@ -67,6 +67,10 @@ Pitch::tone_pitch () const
       o--;
     }
 
+  /*
+    we're effictively hardcoding the octave to 6 whole-tones,
+    which is as arbitrary as coding it to 1200 cents
+  */
   Rational tones ((o + n / scale_->step_tones_.size ()) * 6, 1);
   tones += scale_->step_tones_[n % scale_->step_tones_.size ()];
 
@@ -119,7 +123,7 @@ Pitch::normalize ()
       alteration_ = Rational (0);
       alteration_ -= tone_pitch () - pitch;
     }
-  while (alteration_ < Rational(-1))
+  while (alteration_ < Rational (-1))
     {
       if (notename_ == 0)
        {
@@ -168,10 +172,10 @@ Pitch::to_string () const
 {
   int n = (notename_ + 2) % scale_->step_tones_.size ();
   string s = ::to_string (char (n + 'a'));
-      Rational qtones = alteration_ * Rational (4,1);
-      int qt = int (rint (Real (qtones)));
+  Rational qtones = alteration_ * Rational (4,1);
+  int qt = int (rint (Real (qtones)));
       
-      s += string (accname[qt + 4]);
+  s += string (accname[qt + 4]);
   if (octave_ >= 0)
     {
       int o = octave_ + 1;
@@ -245,7 +249,7 @@ Pitch::print_smob (SCM s, SCM port, scm_print_state *)
 {
   Pitch *r = (Pitch *) SCM_CELL_WORD_1 (s);
   scm_puts ("#<Pitch ", port);
-  scm_display (scm_makfrom0str (r->to_string ().c_str ()), port);
+  scm_display (ly_string2scm (r->to_string ()), port);
   scm_puts (" >", port);
   return 1;
 }
@@ -302,5 +306,13 @@ Pitch::transposed (Pitch d) const
   return p;
 }
 
+Rational NATURAL_ALTERATION (0);
 Rational FLAT_ALTERATION (-1, 2);
+Rational DOUBLE_FLAT_ALTERATION (-1);
 Rational SHARP_ALTERATION (1, 2);
+
+Pitch
+Pitch::negated () const
+{
+  return pitch_interval (*this, Pitch ());
+}