Merge branch 'master' of aubio.org:/git/aubio/aubio into develop
[aubio.git] / python / ext / aubio-types.h
1 #include <Python.h>
2 #include <structmember.h>
3
4 //#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
5
6 // define numpy unique symbols for aubio
7 #define PY_ARRAY_UNIQUE_SYMBOL PYAUBIO_ARRAY_API
8 #define PY_UFUNC_UNIQUE_SYMBOL PYAUBIO_UFUNC_API
9
10 // only import array and ufunc from main module
11 #ifndef PY_AUBIO_MODULE_MAIN
12 #define NO_IMPORT_ARRAY
13 #endif
14 #include <numpy/arrayobject.h>
15 #ifndef PY_AUBIO_MODULE_UFUNC
16 #define NO_IMPORT_UFUNC
17 #else
18 #include <numpy/ufuncobject.h>
19 #endif
20
21 // import aubio
22 //#include <numpy/npy_3kcompat.h>
23
24 #define AUBIO_UNSTABLE 1
25 #ifdef USE_LOCAL_AUBIO
26 #include "aubio.h"
27 #else
28 #include "aubio/aubio.h"
29 #endif
30
31 #define Py_default_vector_length 1024
32
33 #define Py_aubio_default_samplerate 44100
34
35 #if HAVE_AUBIO_DOUBLE
36 #error "Ouch! Python interface for aubio has not been much tested yet."
37 #define AUBIO_NPY_SMPL NPY_DOUBLE
38 #else
39 #define AUBIO_NPY_SMPL NPY_FLOAT
40 #endif
41
42 // special python type for cvec
43 typedef struct
44 {
45   PyObject_HEAD
46   cvec_t * o;
47   uint_t length;
48   uint_t channels;
49 } Py_cvec;
50 extern PyTypeObject Py_cvecType;
51
52 // defined in aubio-proxy.c
53 extern PyObject *PyAubio_CFvecToArray (fvec_t * self);
54 extern fvec_t *PyAubio_ArrayToCFvec (PyObject * self);
55
56 extern Py_cvec *PyAubio_CCvecToPyCvec (cvec_t * self);
57 extern cvec_t *PyAubio_ArrayToCCvec (PyObject *input);
58
59 extern PyObject *PyAubio_CFmatToArray (fmat_t * self);
60 extern fmat_t *PyAubio_ArrayToCFmat (PyObject *input);
61
62 // hand written wrappers
63 extern PyTypeObject Py_filterType;
64
65 extern PyTypeObject Py_filterbankType;
66
67 extern PyTypeObject Py_fftType;
68
69 extern PyTypeObject Py_pvocType;
70
71 extern PyTypeObject Py_sourceType;
72