Merge branch 'fix/awhitening'
[aubio.git] / python / ext / aubio-types.h
1 #include <Python.h>
2 #include <structmember.h>
3
4 #include "aubio-generated.h"
5
6 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
7
8 // define numpy unique symbols for aubio
9 #define PY_ARRAY_UNIQUE_SYMBOL PYAUBIO_ARRAY_API
10 #define PY_UFUNC_UNIQUE_SYMBOL PYAUBIO_UFUNC_API
11
12 // only import array and ufunc from main module
13 #ifndef PY_AUBIO_MODULE_MAIN
14 #define NO_IMPORT_ARRAY
15 #endif
16 #include <numpy/arrayobject.h>
17 #ifndef PY_AUBIO_MODULE_UFUNC
18 #define NO_IMPORT_UFUNC
19 #else
20 #include <numpy/ufuncobject.h>
21 #endif
22
23 //#include <numpy/npy_3kcompat.h>
24
25 // import aubio
26 #define AUBIO_UNSTABLE 1
27 #ifdef USE_LOCAL_AUBIO
28 #include "aubio.h"
29 #else
30 #include <aubio/aubio.h>
31 #endif
32
33 #define Py_default_vector_length 1024
34
35 #define Py_aubio_default_samplerate 44100
36
37 #if HAVE_AUBIO_DOUBLE
38 // 64 bit precision with HAVE_AUBIO_DOUBLE=1
39 #define AUBIO_NPY_SMPL NPY_DOUBLE
40 #define AUBIO_NPY_SMPL_STR "float64"
41 #define AUBIO_NPY_SMPL_CHR "d"
42 #else
43 // default is 32 bit precision
44 #define AUBIO_NPY_SMPL NPY_FLOAT
45 #define AUBIO_NPY_SMPL_STR "float32"
46 #define AUBIO_NPY_SMPL_CHR "f"
47 #endif
48
49 #ifndef PATH_MAX
50 #ifdef MAX_PATH
51 #define PATH_MAX MAX_PATH
52 #else
53 #define PATH_MAX 1024
54 #endif
55 #endif
56
57 // compat with Python < 2.6
58 #ifndef Py_TYPE
59 #define Py_TYPE(ob) (((PyObject*)(ob))->ob_type)
60 #endif
61
62 extern PyTypeObject Py_cvecType;
63
64 PyObject * new_py_fvec(uint_t length);
65 PyObject * new_py_cvec(uint_t length);
66 PyObject * new_py_fmat(uint_t height, uint_t length);
67
68 // defined in aubio-proxy.c
69 extern int PyAubio_IsValidVector (PyObject *input);
70
71 extern PyObject *PyAubio_CFvecToArray (fvec_t * self);
72 extern int PyAubio_ArrayToCFvec (PyObject * self, fvec_t *out);
73
74 extern int PyAubio_PyCvecToCCvec (PyObject *input, cvec_t *i);
75
76 extern PyObject *PyAubio_CFmatToArray (fmat_t * self);
77 extern int PyAubio_ArrayToCFmat (PyObject *input, fmat_t *out);
78
79 // hand written wrappers
80 extern PyTypeObject Py_filterType;
81
82 extern PyTypeObject Py_filterbankType;
83
84 extern PyTypeObject Py_fftType;
85
86 extern PyTypeObject Py_pvocType;
87
88 extern PyTypeObject Py_sourceType;
89
90 extern PyTypeObject Py_sinkType;