ref: 207ed190bbe28e63e8bab665e21ffc2e73a4a75b
parent: 6b1aafc24e21090c4fe820017b442445e1f6ea39
	author: Paul Brossier <piem@piem.org>
	date: Fri Oct  2 07:24:08 EDT 2009
	
python/aubiomodule.c: add zero_crossing_rate and min_removal
--- a/interfaces/python/aubiomodule.c
+++ b/interfaces/python/aubiomodule.c
@@ -112,8 +112,79 @@
return result;
}
+static char Py_zero_crossing_rate_doc[] = "compute zero crossing rate";
+
+static PyObject *
+Py_zero_crossing_rate (PyObject * self, PyObject * args)
+{+ PyObject *input;
+ Py_fvec *vec;
+ PyObject *result;
+
+  if (!PyArg_ParseTuple (args, "O:zero_crossing_rate", &input)) {+ return NULL;
+ }
+
+  if (input == NULL) {+ return NULL;
+ }
+
+ vec = PyAubio_ArrayToFvec (input);
+
+  if (vec == NULL) {+ return NULL;
+ }
+
+ // compute the function
+  result = Py_BuildValue ("f", aubio_zero_crossing_rate (vec->o));+  if (result == NULL) {+ return NULL;
+ }
+
+ return result;
+}
+
+static char Py_min_removal_doc[] = "compute zero crossing rate";
+
+static PyObject *
+Py_min_removal(PyObject * self, PyObject * args)
+{+ PyObject *input;
+ Py_fvec *vec;
+
+  if (!PyArg_ParseTuple (args, "O:zero_crossing_rate", &input)) {+ return NULL;
+ }
+
+  if (input == NULL) {+ return NULL;
+ }
+
+ vec = PyAubio_ArrayToFvec (input);
+
+  if (vec == NULL) {+ return NULL;
+ }
+
+ // compute the function
+ fvec_min_removal (vec->o);
+ // since this function does not return, we could return None
+ //return Py_None;
+ // however it is convenient to return the modified vector
+ //return (PyObject *) PyAubio_FvecToArray(vec);
+ // or even without converting it back to an array
+ Py_INCREF(vec);
+ return (PyObject *)vec;
+}
+
+
+
+
 static PyMethodDef aubio_methods[] = {   {"alpha_norm", Py_alpha_norm, METH_VARARGS, Py_alpha_norm_doc},+  {"zero_crossing_rate", Py_zero_crossing_rate, METH_VARARGS, + Py_zero_crossing_rate_doc},
+  {"min_removal", Py_min_removal, METH_VARARGS, Py_min_removal_doc},   {NULL, NULL}                  /* Sentinel */};
--
⑨