aubiomodule.c: add unwrap2pi
authorPaul Brossier <piem@piem.org>
Sun, 3 Mar 2013 21:27:17 +0000 (16:27 -0500)
committerPaul Brossier <piem@piem.org>
Sun, 3 Mar 2013 21:27:17 +0000 (16:27 -0500)
python/aubiomodule.c
python/tests/test_mathutils.py

index a3f6d92b63cde55dfac212c6d2913129a57e21da..ccbc28bab62f7e68edcf8ac81781e8c897c2711b 100644 (file)
@@ -39,6 +39,23 @@ Py_alpha_norm (PyObject * self, PyObject * args)
   return result;
 }
 
+static char Py_unwrap2pi_doc[] = "unwrap phase value to [-pi, pi]";
+
+static PyObject *
+Py_unwrap2pi (PyObject * self, PyObject * args)
+{
+  smpl_t input;
+  smpl_t output;
+
+  if (!PyArg_ParseTuple (args, "|f", &input)) {
+    return NULL;
+  }
+
+  output = aubio_unwrap2pi (input);
+
+  return (PyObject *)PyFloat_FromDouble (output);
+}
+
 static char Py_bintomidi_doc[] = "convert bin to midi";
 
 static PyObject *
@@ -208,6 +225,7 @@ Py_min_removal(PyObject * self, PyObject * args)
 }
 
 static PyMethodDef aubio_methods[] = {
+  {"unwrap2pi", Py_unwrap2pi, METH_VARARGS, Py_unwrap2pi_doc},
   {"bintomidi", Py_bintomidi, METH_VARARGS, Py_bintomidi_doc},
   {"miditobin", Py_miditobin, METH_VARARGS, Py_miditobin_doc},
   {"bintofreq", Py_bintofreq, METH_VARARGS, Py_bintofreq_doc},
index 9a8fea91884f39c21b8fdd778650c93e00e16fd5..752c789943e81e801529271cac3bccfbaa8742f1 100755 (executable)
@@ -3,9 +3,15 @@
 from numpy.testing import TestCase, run_module_suite
 from numpy.testing import assert_equal, assert_almost_equal
 from aubio import bintomidi, miditobin, freqtobin, bintofreq, freqtomidi, miditofreq
+from aubio import unwrap2pi
 
 class aubio_mathutils(TestCase):
 
+    def test_unwrap2pi(self):
+       a = [ x/100. for x in range(-600,600,100) ]
+       b = [ unwrap2pi(x) for x in a ]
+       #print b
+
     def test_miditobin(self):
        a = [ miditobin(a, 44100, 512) for a in range(128) ]
 
@@ -24,7 +30,6 @@ class aubio_mathutils(TestCase):
     def test_miditofreq(self):
        freqs = [ miditofreq(a) for a in range(128) ]
        midis = [ freqtomidi(a) for a in freqs ]
-       print midis
 
 if __name__ == '__main__':
     from unittest import main