ext/py-musicutils.c: add db_spl
[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 }
53
54 PyObject *
55 Py_aubio_db_spl(PyObject *self, PyObject *args)
56 {
57   PyObject *input;
58   fvec_t *vec;
59   PyObject *db_spl;
60
61   if (!PyArg_ParseTuple (args, "O:db_spl", &input)) {
62     PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
63     return NULL;
64   }
65
66   if (input == NULL) {
67     return NULL;
68   }
69
70   vec = PyAubio_ArrayToCFvec (input);
71   if (vec == NULL) {
72     return NULL;
73   }
74
75   db_spl = Py_BuildValue("f", aubio_db_spl(vec));
76   if (db_spl == NULL) {
77     PyErr_SetString (PyExc_ValueError, "failed computing db_spl");
78     return NULL;
79   }
80
81   return db_spl;
82 }