ext/py-musicutils.c: add level_lin
[aubio.git] / python / ext / py-musicutils.c
1 #include "aubio-types.h"
2
3 PyObject *
4 Py_aubio_window(PyObject *self, PyObject *args)
5 {
6   char_t *wintype = NULL;
7   uint_t winlen = 0;
8   fvec_t *window = NULL;
9
10   if (!PyArg_ParseTuple (args, "|sI", &wintype, &winlen)) {
11     PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
12     return NULL;
13   }
14
15   window = new_aubio_window(wintype, winlen);
16   if (window == NULL) {
17     PyErr_SetString (PyExc_ValueError, "failed computing window");
18     return NULL;
19   }
20
21   return (PyObject *) PyAubio_CFvecToArray(window);
22 }
23
24 PyObject *
25 Py_aubio_level_lin(PyObject *self, PyObject *args)
26 {
27   PyObject *input;
28   fvec_t *vec;
29   PyObject *level_lin;
30
31   if (!PyArg_ParseTuple (args, "O:level_lin", &input)) {
32     PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
33     return NULL;
34   }
35
36   if (input == NULL) {
37     return NULL;
38   }
39
40   vec = PyAubio_ArrayToCFvec (input);
41   if (vec == NULL) {
42     return NULL;
43   }
44
45   level_lin = Py_BuildValue("f", aubio_level_lin(vec));
46   if (level_lin == NULL) {
47     PyErr_SetString (PyExc_ValueError, "failed computing level_lin");
48     return NULL;
49   }
50
51   return level_lin;
52 }