]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/pitch.cc
Merge branch 'issue4032'
[lilypond.git] / lily / pitch.cc
index 97664e6530e103e7672c91cc494f56d8be5cf859..a030f1281cff3bf251001081b1f5a3103727d3da 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 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
@@ -25,6 +25,7 @@
 #include "warn.hh"
 
 #include "ly-smobs.icc"
+#include <cmath>
 
 Pitch::Pitch (int o, int n, Rational a)
 {
@@ -56,7 +57,7 @@ Pitch::compare (Pitch const &m1, Pitch const &m2)
   if (n)
     return n;
   if (a)
-    return a > (Rational)0;
+    return a > (Rational)0 ? 1 : -1;
 
   return 0;
 }
@@ -78,13 +79,13 @@ Pitch::tone_pitch () const
 int
 Pitch::rounded_semitone_pitch () const
 {
-  return int (double (tone_pitch () * Rational (2)));
+  return int (floor (double (tone_pitch () * Rational (2) + Rational (1, 2))));
 }
 
 int
 Pitch::rounded_quartertone_pitch () const
 {
-  return int (double (tone_pitch () * Rational (4)));
+  return int (floor (double (tone_pitch () * Rational (4) + Rational (1, 2))));
 }
 
 void
@@ -254,8 +255,8 @@ MAKE_SCHEME_CALLBACK (Pitch, less_p, 2);
 SCM
 Pitch::less_p (SCM p1, SCM p2)
 {
-  Pitch *a = unsmob_pitch (p1);
-  Pitch *b = unsmob_pitch (p2);
+  Pitch *a = Pitch::unsmob (p1);
+  Pitch *b = Pitch::unsmob (p2);
 
   if (compare (*a, *b) < 0)
     return SCM_BOOL_T;