#define Py_aubio_default_samplerate 44100
#if HAVE_AUBIO_DOUBLE
-#error "Ouch! Python interface for aubio has not been much tested yet."
+#warning "double mode needs love"
#define AUBIO_NPY_SMPL NPY_DOUBLE
+#define AUBIO_NPY_SMPL_STR "float64"
+#define AUBIO_NPY_SMPL_CHR "d"
#else
#define AUBIO_NPY_SMPL NPY_FLOAT
+#define AUBIO_NPY_SMPL_STR "float32"
+#define AUBIO_NPY_SMPL_CHR "f"
#endif
// compat with Python < 2.6
smpl_t alpha;
PyObject *result;
- if (!PyArg_ParseTuple (args, "Of:alpha_norm", &input, &alpha)) {
+ if (!PyArg_ParseTuple (args, "O" AUBIO_NPY_SMPL_CHR ":alpha_norm", &input, &alpha)) {
return NULL;
}
}
// compute the function
- result = Py_BuildValue ("f", fvec_alpha_norm (&vec, alpha));
+ result = Py_BuildValue (AUBIO_NPY_SMPL_CHR, fvec_alpha_norm (&vec, alpha));
if (result == NULL) {
return NULL;
}
smpl_t input, samplerate, fftsize;
smpl_t output;
- if (!PyArg_ParseTuple (args, "|fff", &input, &samplerate, &fftsize)) {
+ if (!PyArg_ParseTuple (args, "|" AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR , &input, &samplerate, &fftsize)) {
return NULL;
}
smpl_t input, samplerate, fftsize;
smpl_t output;
- if (!PyArg_ParseTuple (args, "|fff", &input, &samplerate, &fftsize)) {
+ if (!PyArg_ParseTuple (args, "|" AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR , &input, &samplerate, &fftsize)) {
return NULL;
}
smpl_t input, samplerate, fftsize;
smpl_t output;
- if (!PyArg_ParseTuple (args, "|fff", &input, &samplerate, &fftsize)) {
+ if (!PyArg_ParseTuple (args, "|" AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR, &input, &samplerate, &fftsize)) {
return NULL;
}
smpl_t input, samplerate, fftsize;
smpl_t output;
- if (!PyArg_ParseTuple (args, "|fff", &input, &samplerate, &fftsize)) {
+ if (!PyArg_ParseTuple (args, "|" AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR AUBIO_NPY_SMPL_CHR, &input, &samplerate, &fftsize)) {
return NULL;
}
}
// compute the function
- result = Py_BuildValue ("f", aubio_zero_crossing_rate (&vec));
+ result = Py_BuildValue (AUBIO_NPY_SMPL_CHR, aubio_zero_crossing_rate (&vec));
if (result == NULL) {
return NULL;
}
Py_INCREF (&Py_sinkType);
PyModule_AddObject (m, "sink", (PyObject *) & Py_sinkType);
+ PyModule_AddStringConstant(m, "float_type", AUBIO_NPY_SMPL_STR);
+
// add generated objects
add_generated_objects(m);
PyErr_SetString (PyExc_ValueError, "input array should be float");
return 0;
} else if (PyArray_TYPE ((PyArrayObject *)input) != AUBIO_NPY_SMPL) {
- PyErr_SetString (PyExc_ValueError, "input array should be float32");
+ PyErr_SetString (PyExc_ValueError, "input array should be " AUBIO_NPY_SMPL_STR);
return 0;
}
i->length = ((Py_cvec*)input)->o->length;
return 1;
} else {
- PyErr_SetString (PyExc_ValueError, "input array should be float32");
+ PyErr_SetString (PyExc_ValueError, "input array should be aubio.cvec");
return 0;
}
}
PyErr_SetString (PyExc_ValueError, "input array should be float");
return 0;
} else if (PyArray_TYPE ((PyArrayObject *)input) != AUBIO_NPY_SMPL) {
- PyErr_SetString (PyExc_ValueError, "input array should be float32");
+ PyErr_SetString (PyExc_ValueError, "input array should be " AUBIO_NPY_SMPL_STR);
return 0;
}
PyAubio_CvecNormToArray (Py_cvec * self)
{
npy_intp dims[] = { self->o->length, 1 };
- return PyArray_SimpleNewFromData (1, dims, NPY_FLOAT, self->o->norm);
+ return PyArray_SimpleNewFromData (1, dims, AUBIO_NPY_SMPL, self->o->norm);
}
PyAubio_CvecPhasToArray (Py_cvec * self)
{
npy_intp dims[] = { self->o->length, 1 };
- return PyArray_SimpleNewFromData (1, dims, NPY_FLOAT, self->o->phas);
+ return PyArray_SimpleNewFromData (1, dims, AUBIO_NPY_SMPL, self->o->phas);
}
PyObject *
return NULL;
}
- level_lin = Py_BuildValue("f", aubio_level_lin(&vec));
+ level_lin = Py_BuildValue(AUBIO_NPY_SMPL_CHR, aubio_level_lin(&vec));
if (level_lin == NULL) {
PyErr_SetString (PyExc_ValueError, "failed computing level_lin");
return NULL;
return NULL;
}
- db_spl = Py_BuildValue("f", aubio_db_spl(&vec));
+ db_spl = Py_BuildValue(AUBIO_NPY_SMPL_CHR, aubio_db_spl(&vec));
if (db_spl == NULL) {
PyErr_SetString (PyExc_ValueError, "failed computing db_spl");
return NULL;
PyObject *silence_detection;
smpl_t threshold;
- if (!PyArg_ParseTuple (args, "Of:silence_detection", &input, &threshold)) {
+ if (!PyArg_ParseTuple (args, "O" AUBIO_NPY_SMPL_CHR ":silence_detection", &input, &threshold)) {
PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
return NULL;
}
PyObject *level_detection;
smpl_t threshold;
- if (!PyArg_ParseTuple (args, "Of:level_detection", &input, &threshold)) {
+ if (!PyArg_ParseTuple (args, "O" AUBIO_NPY_SMPL_CHR ":level_detection", &input, &threshold)) {
PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
return NULL;
}
return NULL;
}
- level_detection = Py_BuildValue("f", aubio_level_detection(&vec, threshold));
+ level_detection = Py_BuildValue(AUBIO_NPY_SMPL_CHR, aubio_level_detection(&vec, threshold));
if (level_detection == NULL) {
PyErr_SetString (PyExc_ValueError, "failed computing level_detection");
return NULL;
'name': 'type',
'char_t*': 'T_STRING',
'uint_t': 'T_INT',
- 'smpl_t': 'T_FLOAT',
+ 'smpl_t': 'AUBIO_NPY_SMPL',
}
pyfromtype_fn = {