Changeset ede5d38 for python/ext
- Timestamp:
- Apr 29, 2016, 9:19:28 PM (9 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- 1ee5e21
- Parents:
- ee092a8
- Location:
- python/ext
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
python/ext/aubio-types.h
ree092a8 rede5d38 53 53 extern PyTypeObject Py_cvecType; 54 54 55 PyObject * new_py_fvec(uint_t length); 56 PyObject * new_py_cvec(uint_t length); 57 PyObject * new_py_fmat(uint_t height, uint_t length); 58 55 59 // defined in aubio-proxy.c 56 60 extern PyObject *PyAubio_CFvecToArray (fvec_t * self); -
python/ext/aubioproxy.c
ree092a8 rede5d38 1 1 #include "aubio-types.h" 2 3 PyObject * 4 new_py_fvec(uint_t length) { 5 npy_intp dims[] = { length, 1 }; 6 return PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 7 } 8 9 PyObject * 10 new_py_fmat(uint_t height, uint_t length) { 11 npy_intp dims[] = { height, length, 1 }; 12 return PyArray_ZEROS(2, dims, AUBIO_NPY_SMPL, 0); 13 } 2 14 3 15 PyObject * -
python/ext/py-cvec.c
ree092a8 rede5d38 21 21 22 22 static char Py_cvec_doc[] = "cvec object"; 23 24 25 PyObject * 26 new_py_cvec(uint_t length) { 27 Py_cvec* vec = (Py_cvec*) PyObject_New (Py_cvec, &Py_cvecType); 28 npy_intp dims[] = { length / 2 + 1, 1 }; 29 vec->norm = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 30 vec->phas = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 31 vec->length = length / 2 + 1; 32 return (PyObject*)vec; 33 } 23 34 24 35 PyObject * … … 40 51 if (PyObject_TypeCheck (input, &Py_cvecType)) { 41 52 Py_cvec * in = (Py_cvec *)input; 42 if (in->norm == NULL) {43 npy_intp dims[] = { in->length, 1 };44 in->norm = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0);45 }46 if (in->phas == NULL) {47 npy_intp dims[] = { in->length, 1 };48 in->phas = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0);49 }50 53 i->norm = (smpl_t *) PyArray_GETPTR1 ((PyArrayObject *)(in->norm), 0); 51 54 i->phas = (smpl_t *) PyArray_GETPTR1 ((PyArrayObject *)(in->phas), 0); … … 92 95 Py_cvec_init (Py_cvec * self, PyObject * args, PyObject * kwds) 93 96 { 94 self->norm = NULL; 95 self->phas = NULL; 97 npy_intp dims[] = { self->length, 1 }; 98 self->phas = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 99 self->norm = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 96 100 return 0; 97 101 } … … 100 104 Py_cvec_del (Py_cvec * self) 101 105 { 102 Py_ XDECREF(self->norm);103 Py_ XDECREF(self->phas);106 Py_DECREF(self->norm); 107 Py_DECREF(self->phas); 104 108 Py_TYPE(self)->tp_free ((PyObject *) self); 105 109 } … … 135 139 Py_cvec_get_norm (Py_cvec * self, void *closure) 136 140 { 137 // if it norm hasn't been created, create it now 138 if (self->norm == NULL) { 139 npy_intp dims[] = { self->length, 1 }; 140 self->norm = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 141 } 141 // we want self->norm to still exist after our caller return it 142 142 Py_INCREF(self->norm); 143 143 return (PyObject*)(self->norm); … … 147 147 Py_cvec_get_phas (Py_cvec * self, void *closure) 148 148 { 149 // if it phas hasn't been created, create it now 150 if (self->phas == NULL) { 151 npy_intp dims[] = { self->length, 1 }; 152 self->phas = PyArray_ZEROS(1, dims, AUBIO_NPY_SMPL, 0); 153 } 149 // we want self->phas to still exist after our caller return it 154 150 Py_INCREF(self->phas); 155 151 return (PyObject *)(self->phas); -
python/ext/py-fft.c
ree092a8 rede5d38 12 12 cvec_t cvecin; 13 13 // do / rdo output results 14 cvec_t *out;15 fvec_t *rout;14 PyObject *doout; 15 PyObject *rdoout; 16 16 } Py_fft; 17 17 … … 58 58 } 59 59 60 self-> out = new_cvec(self->win_s);61 self->r out = new_fvec(self->win_s);60 self->doout = new_py_cvec(self->win_s); 61 self->rdoout = new_py_fvec(self->win_s); 62 62 63 63 return 0; … … 67 67 Py_fft_del (Py_fft *self, PyObject *unused) 68 68 { 69 Py_XDECREF(self->doout); 70 Py_XDECREF(self->rdoout); 69 71 del_aubio_fft(self->o); 70 del_cvec(self->out);71 del_fvec(self->rout);72 72 Py_TYPE(self)->tp_free((PyObject *) self); 73 73 } … … 86 86 } 87 87 88 cvec_t c_out; 89 Py_INCREF(self->doout); 90 if (!PyAubio_PyCvecToCCvec(self->doout, &c_out)) { 91 return NULL; 92 } 88 93 // compute the function 89 aubio_fft_do (((Py_fft *)self)->o, &(self->vecin), self->out); 90 // convert cvec to py_cvec 91 return PyAubio_CCvecToPyCvec(self->out); 94 aubio_fft_do (self->o, &(self->vecin), &c_out); 95 return self->doout; 92 96 } 93 97 … … 111 115 } 112 116 117 fvec_t out; 118 Py_INCREF(self->rdoout); 119 if (!PyAubio_ArrayToCFvec(self->rdoout, &out) ) { 120 return NULL; 121 } 113 122 // compute the function 114 aubio_fft_rdo (self->o, &(self->cvecin), self->rout);115 return PyAubio_CFvecToArray(self->rout);123 aubio_fft_rdo (self->o, &(self->cvecin), &out); 124 return self->rdoout; 116 125 } 117 126
Note: See TracChangeset
for help on using the changeset viewer.