lib/mext/numeric/mtopch.rb in ruby-mext-0.9.0 vs lib/mext/numeric/mtopch.rb in ruby-mext-0.9.1
- old
+ new
@@ -7,14 +7,27 @@
#
#:nodoc:
def mtopch
- intv = (self - MIDI_MIDDLE_C) / CHROMATIC_NOTES_PER_OCTAVE
+ semi = (self - ZMP) / CNPO
+ oct = semi.to_i
+ semi = (semi - oct) * CNPO
+ semi %= CNPO
+ semi = (self > ZMP) ? semi : -((CNPO - semi) % CNPO)
- intv_octave = intv.to_i
- intv_semi = (intv - intv_octave) * CHROMATIC_NOTES_PER_OCTAVE;
+ oct + (semi / PCC)
- PITCH_MIDDLE_C + intv_octave + (intv_semi/100.0);
+# intv = self - MIDI_MIDDLE_C
+# intv /= CHROMATIC_NOTES_PER_OCTAVE
+
+# intv_octave = intv.floor
+# intv_semi = (intv_octave >= 0.0) ? (intv - intv_octave) : (1 - (intv_octave - intv))
+#
+# intv_semi *= CHROMATIC_NOTES_PER_OCTAVE;
+# intv_semi %= CHROMATIC_NOTES_PER_OCTAVE;
+
+# PITCH_MIDDLE_C + intv_octave + (intv_semi/100.0);
+
end
end