Showing the changes to python/ext (3 of 4 files). Show all
Unified · Split
| @@ -243,6 +243,7 @@ static PyMethodDef aubio_methods[] = { · 242 unmodified lines | |||
| 243 | {"level_lin", Py_aubio_level_lin, METH_VARARGS, Py_aubio_level_lin_doc}, | 243 | {"level_lin", Py_aubio_level_lin, METH_VARARGS, Py_aubio_level_lin_doc}, |
| 244 | {"db_spl", Py_aubio_db_spl, METH_VARARGS, Py_aubio_db_spl_doc}, | 244 | {"db_spl", Py_aubio_db_spl, METH_VARARGS, Py_aubio_db_spl_doc}, |
| 245 | {"silence_detection", Py_aubio_silence_detection, METH_VARARGS, Py_aubio_silence_detection_doc}, | 245 | {"silence_detection", Py_aubio_silence_detection, METH_VARARGS, Py_aubio_silence_detection_doc}, |
| 246 | {"level_detection", Py_aubio_level_detection, METH_VARARGS, Py_aubio_level_detection_doc}, | ||
| 246 | {"window", Py_aubio_window, METH_VARARGS, Py_aubio_window_doc}, | 247 | {"window", Py_aubio_window, METH_VARARGS, Py_aubio_window_doc}, |
| 247 | {NULL, NULL} /* Sentinel */ | 248 | {NULL, NULL} /* Sentinel */ |
| 248 | }; | 249 | }; |
| @@ -111,3 +111,34 @@ Py_aubio_silence_detection(PyObject *self, PyObject *args) · 110 unmodified lines | |||
| 111 | 111 | ||
| 112 | return silence_detection; | 112 | return silence_detection; |
| 113 | } | 113 | } |
| 114 | |||
| 115 | PyObject * | ||
| 116 | Py_aubio_level_detection(PyObject *self, PyObject *args) | ||
| 117 | { | ||
| 118 | PyObject *input; | ||
| 119 | fvec_t *vec; | ||
| 120 | PyObject *level_detection; | ||
| 121 | smpl_t threshold; | ||
| 122 | |||
| 123 | if (!PyArg_ParseTuple (args, "Of:level_detection", &input, &threshold)) { | ||
| 124 | PyErr_SetString (PyExc_ValueError, "failed parsing arguments"); | ||
| 125 | return NULL; | ||
| 126 | } | ||
| 127 | |||
| 128 | if (input == NULL) { | ||
| 129 | return NULL; | ||
| 130 | } | ||
| 131 | |||
| 132 | vec = PyAubio_ArrayToCFvec (input); | ||
| 133 | if (vec == NULL) { | ||
| 134 | return NULL; | ||
| 135 | } | ||
| 136 | |||
| 137 | level_detection = Py_BuildValue("f", aubio_level_detection(vec, threshold)); | ||
| 138 | if (level_detection == NULL) { | ||
| 139 | PyErr_SetString (PyExc_ValueError, "failed computing level_detection"); | ||
| 140 | return NULL; | ||
| 141 | } | ||
| 142 | |||
| 143 | return level_detection; | ||
| 144 | } | ||
| @@ -59,4 +59,16 @@ static char Py_aubio_silence_detection_doc[] = "" · 58 unmodified lines | |||
| 59 | 59 | ||
| 60 | PyObject * Py_aubio_silence_detection(PyObject *self, PyObject *args); | 60 | PyObject * Py_aubio_silence_detection(PyObject *self, PyObject *args); |
| 61 | 61 | ||
| 62 | static char Py_aubio_level_detection_doc[] = "" | ||
| 63 | "Get buffer level in dB SPL if over a given threshold, 1. otherwise.\n" | ||
| 64 | "\n" | ||
| 65 | "Example\n" | ||
| 66 | "-------\n" | ||
| 67 | "\n" | ||
| 68 | ">>> import numpy\n""" | ||
| 69 | ">>> level_detection(0.7*numpy.ones(1024, dtype=\"float32\"), -80)\n" | ||
| 70 | "0"; | ||
| 71 | |||
| 72 | PyObject * Py_aubio_level_detection(PyObject *self, PyObject *args); | ||
| 73 | |||
| 62 | #endif /* _PY_AUBIO_MUSICUTILS_H_ */ | 74 | #endif /* _PY_AUBIO_MUSICUTILS_H_ */ |