Changeset 6203a70
- Timestamp:
- Sep 15, 2018, 6:30:42 PM (6 years ago)
- Branches:
- feature/constantq
- Children:
- 45c2c5c
- Parents:
- 81fe7d30 (diff), 8c4918a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 10 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
python/ext/aubiomodule.c
r81fe7d30 r6203a70 243 243 {"level_detection", Py_aubio_level_detection, METH_VARARGS, Py_aubio_level_detection_doc}, 244 244 {"window", Py_aubio_window, METH_VARARGS, Py_aubio_window_doc}, 245 {"shift", Py_aubio_shift, METH_VARARGS, Py_aubio_shift_doc}, 246 {"ishift", Py_aubio_ishift, METH_VARARGS, Py_aubio_ishift_doc}, 245 247 {NULL, NULL, 0, NULL} /* Sentinel */ 246 248 }; -
python/ext/py-musicutils.c
r81fe7d30 r6203a70 134 134 return level_detection; 135 135 } 136 137 PyObject * 138 Py_aubio_shift(PyObject *self, PyObject *args) 139 { 140 PyObject *input; 141 fvec_t vec; 142 143 if (!PyArg_ParseTuple (args, "O:shift", &input)) { 144 return NULL; 145 } 146 147 if (input == NULL) { 148 return NULL; 149 } 150 151 if (!PyAubio_ArrayToCFvec(input, &vec)) { 152 return NULL; 153 } 154 155 fvec_shift(&vec); 156 157 //Py_RETURN_NONE; 158 return (PyObject *) PyAubio_CFvecToArray(&vec); 159 } 160 161 PyObject * 162 Py_aubio_ishift(PyObject *self, PyObject *args) 163 { 164 PyObject *input; 165 fvec_t vec; 166 167 if (!PyArg_ParseTuple (args, "O:shift", &input)) { 168 return NULL; 169 } 170 171 if (input == NULL) { 172 return NULL; 173 } 174 175 if (!PyAubio_ArrayToCFvec(input, &vec)) { 176 return NULL; 177 } 178 179 fvec_ishift(&vec); 180 181 //Py_RETURN_NONE; 182 return (PyObject *) PyAubio_CFvecToArray(&vec); 183 } -
python/ext/py-musicutils.h
r81fe7d30 r6203a70 72 72 PyObject * Py_aubio_level_detection(PyObject *self, PyObject *args); 73 73 74 static char Py_aubio_shift_doc[] = "" 75 "Swap left and right partitions of a vector\n" 76 "\n" 77 "Returns the swapped vector. The input vector is also modified.\n" 78 "\n" 79 "For a vector of length N, the partition is split at index N - N//2.\n" 80 "\n" 81 "Example\n" 82 "-------\n" 83 "\n" 84 ">>> import numpy\n" 85 ">>> shift(numpy.arange(3, dtype=aubio.float_type))\n" 86 "array([2., 0., 1.], dtype=" AUBIO_NPY_SMPL_STR ")"; 87 PyObject * Py_aubio_shift(PyObject *self, PyObject *args); 88 89 static char Py_aubio_ishift_doc[] = "" 90 "Swap right and left partitions of a vector\n" 91 "\n" 92 "Returns the swapped vector. The input vector is also modified.\n" 93 "\n" 94 "Unlike with shift(), the partition is split at index N//2.\n" 95 "\n" 96 "Example\n" 97 "-------\n" 98 "\n" 99 ">>> import numpy\n" 100 ">>> ishift(numpy.arange(3, dtype=aubio.float_type))\n" 101 "array([1., 2., 0.], dtype=" AUBIO_NPY_SMPL_STR ")"; 102 PyObject * Py_aubio_ishift(PyObject *self, PyObject *args); 103 74 104 #endif /* PY_AUBIO_MUSICUTILS_H */ -
python/lib/gen_code.py
r81fe7d30 r6203a70 85 85 'filterbank': 'self->n_filters', 86 86 'tss': 'self->buf_size', 87 'dct': 'self->size', 87 88 'constantq': 'aubio_constantq_get_numbins (self->o)', 88 89 } … … 180 181 self.do_outputs = get_params_types_names(self.do_proto)[2:] 181 182 struct_output_str = ["PyObject *{0[name]}; {1} c_{0[name]}".format(i, i['type'][:-1]) for i in self.do_outputs] 183 if len(self.prototypes['rdo']): 184 rdo_outputs = get_params_types_names(prototypes['rdo'][0])[2:] 185 struct_output_str += ["PyObject *{0[name]}; {1} c_{0[name]}".format(i, i['type'][:-1]) for i in rdo_outputs] 186 self.outputs += rdo_outputs 182 187 self.struct_outputs = ";\n ".join(struct_output_str) 183 188 … … 194 199 out += self.gen_del() 195 200 out += self.gen_do() 201 if len(self.prototypes['rdo']): 202 self.do_proto = self.prototypes['rdo'][0] 203 self.do_inputs = [get_params_types_names(self.do_proto)[1]] 204 self.do_outputs = get_params_types_names(self.do_proto)[2:] 205 out += self.gen_do(method='rdo') 196 206 out += self.gen_memberdef() 197 207 out += self.gen_set() … … 374 384 return out 375 385 376 def gen_do(self ):386 def gen_do(self, method = 'do'): 377 387 out = """ 378 388 // do {shortname} 379 389 static PyObject* 380 Py _{shortname}_do(Py_{shortname} * self, PyObject * args)381 {{""".format( **self.__dict__)390 Pyaubio_{shortname}_{method} (Py_{shortname} * self, PyObject * args) 391 {{""".format(method = method, **self.__dict__) 382 392 input_params = self.do_inputs 383 393 output_params = self.do_outputs … … 519 529 {{"{shortname}", (PyCFunction) Py{name}, 520 530 METH_NOARGS, ""}},""".format(name = name, shortname = shortname) 531 for m in self.prototypes['rdo']: 532 name = get_name(m) 533 shortname = name.replace('aubio_%s_' % self.shortname, '') 534 out += """ 535 {{"{shortname}", (PyCFunction) Py{name}, 536 METH_VARARGS, ""}},""".format(name = name, shortname = shortname) 521 537 out += """ 522 538 {NULL} /* sentinel */ … … 544 560 0, 545 561 0, 546 (ternaryfunc)Py _{shortname}_do,562 (ternaryfunc)Pyaubio_{shortname}_do, 547 563 0, 548 564 0, -
python/lib/gen_external.py
r81fe7d30 r6203a70 182 182 shortname = o[6:-2] # without aubio_ prefix and _t suffix 183 183 184 lib[shortname] = {'struct': [], 'new': [], 'del': [], 'do': [], ' get': [], 'set': [], 'other': []}184 lib[shortname] = {'struct': [], 'new': [], 'del': [], 'do': [], 'rdo': [], 'get': [], 'set': [], 'other': []} 185 185 lib[shortname]['longname'] = o 186 186 lib[shortname]['shortname'] = shortname … … 196 196 elif '_do' in fn: 197 197 lib[shortname]['do'].append(fn) 198 elif '_rdo' in fn: 199 lib[shortname]['rdo'].append(fn) 198 200 elif 'new_' in fn: 199 201 lib[shortname]['new'].append(fn) -
src/aubio.h
r81fe7d30 r6203a70 183 183 #include "temporal/c_weighting.h" 184 184 #include "spectral/fft.h" 185 #include "spectral/dct.h" 185 186 #include "spectral/phasevoc.h" 186 187 #include "spectral/constantq.h" -
src/aubio_priv.h
r81fe7d30 r6203a70 86 86 #define aubio_vDSP_mmov vDSP_mmov 87 87 #define aubio_vDSP_vmul vDSP_vmul 88 #define aubio_vDSP_vsmul vDSP_vsmul 89 #define aubio_vDSP_vsadd vDSP_vsadd 88 90 #define aubio_vDSP_vfill vDSP_vfill 89 91 #define aubio_vDSP_meanv vDSP_meanv … … 98 100 #define aubio_vDSP_mmov vDSP_mmovD 99 101 #define aubio_vDSP_vmul vDSP_vmulD 102 #define aubio_vDSP_vsmul vDSP_vsmulD 103 #define aubio_vDSP_vsadd vDSP_vsaddD 100 104 #define aubio_vDSP_vfill vDSP_vfillD 101 105 #define aubio_vDSP_meanv vDSP_meanvD -
src/spectral/mfcc.c
r81fe7d30 r6203a70 29 29 #include "spectral/filterbank.h" 30 30 #include "spectral/filterbank_mel.h" 31 #include "spectral/dct.h" 31 32 #include "spectral/mfcc.h" 33 34 #undef HAVE_SLOW_DCT 32 35 33 36 /** Internal structure for mfcc object */ … … 41 44 aubio_filterbank_t *fb; /** filter bank */ 42 45 fvec_t *in_dct; /** input buffer for dct * [fb->n_filters] */ 46 #if defined(HAVE_SLOW_DCT) 43 47 fmat_t *dct_coeffs; /** DCT transform n_filters * n_coeffs */ 48 #else 49 aubio_dct_t *dct; 50 fvec_t *output; 51 #endif 44 52 }; 45 53 … … 52 60 /* allocate space for mfcc object */ 53 61 aubio_mfcc_t *mfcc = AUBIO_NEW (aubio_mfcc_t); 62 #if defined(HAVE_SLOW_DCT) 54 63 smpl_t scaling; 55 64 56 65 uint_t i, j; 66 #endif 57 67 58 68 mfcc->win_s = win_s; … … 68 78 mfcc->in_dct = new_fvec (n_filters); 69 79 80 #if defined(HAVE_SLOW_DCT) 70 81 mfcc->dct_coeffs = new_fmat (n_coefs, n_filters); 71 82 … … 80 91 mfcc->dct_coeffs->data[0][i] *= SQRT (2.) / 2.; 81 92 } 93 #else 94 mfcc->dct = new_aubio_dct (n_filters); 95 mfcc->output = new_fvec (n_filters); 96 #endif 82 97 83 98 return mfcc; … … 93 108 /* delete buffers */ 94 109 del_fvec (mf->in_dct); 110 #if defined(HAVE_SLOW_DCT) 95 111 del_fmat (mf->dct_coeffs); 112 #else 113 del_aubio_dct (mf->dct); 114 del_fvec (mf->output); 115 #endif 96 116 97 117 /* delete mfcc object */ … … 103 123 aubio_mfcc_do (aubio_mfcc_t * mf, const cvec_t * in, fvec_t * out) 104 124 { 125 #ifndef HAVE_SLOW_DCT 126 fvec_t tmp; 127 #endif 105 128 /* compute filterbank */ 106 129 aubio_filterbank_do (mf->fb, in, mf->in_dct); … … 113 136 114 137 /* compute mfccs */ 138 #if defined(HAVE_SLOW_DCT) 115 139 fmat_vecmul(mf->dct_coeffs, mf->in_dct, out); 140 #else 141 aubio_dct_do(mf->dct, mf->in_dct, mf->output); 142 // copy only first n_coeffs elements 143 // TODO assert mf->output->length == n_coeffs 144 tmp.data = mf->output->data; 145 tmp.length = out->length; 146 fvec_copy(&tmp, out); 147 #endif 116 148 117 149 return;
Note: See TracChangeset
for help on using the changeset viewer.