- Timestamp:
- Dec 19, 2018, 6:16:29 PM (6 years ago)
- Branches:
- feature/constantq
- Children:
- dfe6ab6
- Parents:
- f87e191 (diff), fda3394 (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. - Location:
- python
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
python/README.md
rf87e191 r868c6b8 28 28 ----- 29 29 30 Some examples are available in the [`python/demos` ][demos_dir] folder. Each30 Some examples are available in the [`python/demos` folder][demos_dir]. Each 31 31 script is a command line program which accepts one ore more argument. 32 32 -
python/ext/aubio-types.h
rf87e191 r868c6b8 2 2 #include <structmember.h> 3 3 4 #include "aubio-docstrings.h" 4 5 #include "aubio-generated.h" 5 6 -
python/ext/aubiomodule.c
rf87e191 r868c6b8 224 224 225 225 // compute the function 226 result = Py _BuildValue (AUBIO_NPY_SMPL_CHR,fvec_alpha_norm (&vec, alpha));226 result = PyFloat_FromDouble(fvec_alpha_norm (&vec, alpha)); 227 227 if (result == NULL) { 228 228 return NULL; … … 320 320 321 321 // compute the function 322 result = Py _BuildValue (AUBIO_NPY_SMPL_CHR,aubio_zero_crossing_rate (&vec));322 result = PyFloat_FromDouble(aubio_zero_crossing_rate (&vec)); 323 323 if (result == NULL) { 324 324 return NULL; -
python/ext/py-cvec.c
rf87e191 r868c6b8 137 137 } 138 138 139 args = Py _BuildValue ("I",self->length);139 args = PyLong_FromLong(self->length); 140 140 if (args == NULL) { 141 141 goto fail; -
python/ext/py-fft.c
rf87e191 r868c6b8 1 1 #include "aubio-types.h" 2 2 3 static char Py_fft_doc[] = "fft object"; 3 static char Py_fft_doc[] = "" 4 "fft(size=1024)\n" 5 "\n" 6 "Compute Fast Fourier Transorms.\n" 7 "\n" 8 "Parameters\n" 9 "----------\n" 10 "size : int\n" 11 " size of the FFT to compute\n" 12 "\n" 13 "Example\n" 14 "-------\n" 15 ">>> x = aubio.fvec(512)\n" 16 ">>> f = aubio.fft(512)\n" 17 ">>> c = f(x); c\n" 18 "aubio cvec of 257 elements\n" 19 ">>> x2 = f.rdo(c); x2.shape\n" 20 "(512,)\n" 21 ""; 4 22 5 23 typedef struct -
python/ext/py-filter.c
rf87e191 r868c6b8 11 11 } Py_filter; 12 12 13 static char Py_filter_doc[] = "filter object"; 13 static char Py_filter_doc[] = "" 14 "digital_filter(order=7)\n" 15 "\n" 16 "Create a digital filter.\n" 17 ""; 18 19 static char Py_filter_set_c_weighting_doc[] = "" 20 "set_c_weighting(samplerate)\n" 21 "\n" 22 "Set filter coefficients to C-weighting.\n" 23 "\n" 24 "`samplerate` should be one of 8000, 11025, 16000, 22050, 24000, 32000,\n" 25 "44100, 48000, 88200, 96000, or 192000. `order` of the filter should be 5.\n" 26 "\n" 27 "Parameters\n" 28 "----------\n" 29 "samplerate : int\n" 30 " Sampling-rate of the input signal, in Hz.\n" 31 ""; 32 33 static char Py_filter_set_a_weighting_doc[] = "" 34 "set_a_weighting(samplerate)\n" 35 "\n" 36 "Set filter coefficients to A-weighting.\n" 37 "\n" 38 "`samplerate` should be one of 8000, 11025, 16000, 22050, 24000, 32000,\n" 39 "44100, 48000, 88200, 96000, or 192000. `order` of the filter should be 7.\n" 40 "\n" 41 "Parameters\n" 42 "----------\n" 43 "samplerate : int\n" 44 " Sampling-rate of the input signal.\n" 45 ""; 46 47 static char Py_filter_set_biquad_doc[] = "" 48 "set_biquad(b0, b1, b2, a1, a2)\n" 49 "\n" 50 "Set biquad coefficients. `order` of the filter should be 3.\n" 51 "\n" 52 "Parameters\n" 53 "----------\n" 54 "b0 : float\n" 55 " Forward filter coefficient.\n" 56 "b1 : float\n" 57 " Forward filter coefficient.\n" 58 "b2 : float\n" 59 " Forward filter coefficient.\n" 60 "a1 : float\n" 61 " Feedback filter coefficient.\n" 62 "a2 : float\n" 63 " Feedback filter coefficient.\n" 64 ""; 14 65 15 66 static PyObject * … … 157 208 static PyMethodDef Py_filter_methods[] = { 158 209 {"set_c_weighting", (PyCFunction) Py_filter_set_c_weighting, METH_VARARGS, 159 "set filter coefficients to C-weighting"},210 Py_filter_set_c_weighting_doc}, 160 211 {"set_a_weighting", (PyCFunction) Py_filter_set_a_weighting, METH_VARARGS, 161 "set filter coefficients to A-weighting"},212 Py_filter_set_a_weighting_doc}, 162 213 {"set_biquad", (PyCFunction) Py_filter_set_biquad, METH_VARARGS, 163 "set b0, b1, b2, a1, a2 biquad coefficients"},214 Py_filter_set_biquad_doc}, 164 215 {NULL} 165 216 }; -
python/ext/py-filterbank.c
rf87e191 r868c6b8 1 1 #include "aubio-types.h" 2 2 3 static char Py_filterbank_doc[] = "filterbank object"; 3 static char Py_filterbank_doc[] = "" 4 "filterbank(n_filters=40, win_s=1024)\n" 5 "\n" 6 "Create a bank of spectral filters. Each instance is a callable\n" 7 "that holds a matrix of coefficients.\n" 8 "\n" 9 "See also :meth:`set_mel_coeffs`, :meth:`set_mel_coeffs_htk`,\n" 10 ":meth:`set_mel_coeffs_slaney`, :meth:`set_triangle_bands`, and\n" 11 ":meth:`set_coeffs`.\n" 12 "\n" 13 "Parameters\n" 14 "----------\n" 15 "n_filters : int\n" 16 " Number of filters to create.\n" 17 "win_s : int\n" 18 " Size of the input spectrum to process.\n" 19 "\n" 20 "Examples\n" 21 "--------\n" 22 ">>> f = aubio.filterbank(128, 1024)\n" 23 ">>> f.set_mel_coeffs(44100, 0, 10000)\n" 24 ">>> c = aubio.cvec(1024)\n" 25 ">>> f(c).shape\n" 26 "(128, )\n" 27 ""; 28 29 static char Py_filterbank_set_triangle_bands_doc[] ="" 30 "set_triangle_bands(freqs, samplerate)\n" 31 "\n" 32 "Set triangular bands. The coefficients will be set to triangular\n" 33 "overlapping windows using the boundaries specified by `freqs`.\n" 34 "\n" 35 "`freqs` should contain `n_filters + 2` frequencies in Hz, ordered\n" 36 "by value, from smallest to largest. The first element should be greater\n" 37 "or equal to zero; the last element should be smaller or equal to\n" 38 "`samplerate / 2`.\n" 39 "\n" 40 "Parameters\n" 41 "----------\n" 42 "freqs: fvec\n" 43 " List of frequencies, in Hz.\n" 44 "samplerate : float\n" 45 " Sampling-rate of the expected input.\n" 46 "\n" 47 "Example\n" 48 "-------\n" 49 ">>> fb = aubio.filterbank(n_filters=100, win_s=2048)\n" 50 ">>> samplerate = 44100; freqs = np.linspace(0, 20200, 102)\n" 51 ">>> fb.set_triangle_bands(aubio.fvec(freqs), samplerate)\n" 52 ""; 53 54 static char Py_filterbank_set_mel_coeffs_slaney_doc[] = "" 55 "set_mel_coeffs_slaney(samplerate)\n" 56 "\n" 57 "Set coefficients of filterbank to match Slaney's Auditory Toolbox.\n" 58 "\n" 59 "The filter coefficients will be set as in Malcolm Slaney's\n" 60 "implementation. The filterbank should have been created with\n" 61 "`n_filters = 40`.\n" 62 "\n" 63 "This is approximately equivalent to using :meth:`set_mel_coeffs` with\n" 64 "`fmin = 400./3., fmax = 6853.84`.\n" 65 "\n" 66 "Parameters\n" 67 "----------\n" 68 "samplerate : float\n" 69 " Sampling-rate of the expected input.\n" 70 "\n" 71 "References\n" 72 "----------\n" 73 "\n" 74 "Malcolm Slaney, `Auditory Toolbox Version 2, Technical Report #1998-010\n" 75 "<https://engineering.purdue.edu/~malcolm/interval/1998-010/>`_\n" 76 ""; 77 78 static char Py_filterbank_set_mel_coeffs_doc[] = "" 79 "set_mel_coeffs(samplerate, fmin, fmax)\n" 80 "\n" 81 "Set coefficients of filterbank to linearly spaced mel scale.\n" 82 "\n" 83 "Parameters\n" 84 "----------\n" 85 "samplerate : float\n" 86 " Sampling-rate of the expected input.\n" 87 "fmin : float\n" 88 " Lower frequency boundary of the first filter.\n" 89 "fmax : float\n" 90 " Upper frequency boundary of the last filter.\n" 91 "\n" 92 "See also\n" 93 "--------\n" 94 "hztomel\n" 95 ""; 96 97 static char Py_filterbank_set_mel_coeffs_htk_doc[] = "" 98 "set_mel_coeffs_htk(samplerate, fmin, fmax)\n" 99 "\n" 100 "Set coefficients of the filters to be linearly spaced in the HTK mel scale.\n" 101 "\n" 102 "Parameters\n" 103 "----------\n" 104 "samplerate : float\n" 105 " Sampling-rate of the expected input.\n" 106 "fmin : float\n" 107 " Lower frequency boundary of the first filter.\n" 108 "fmax : float\n" 109 " Upper frequency boundary of the last filter.\n" 110 "\n" 111 "See also\n" 112 "--------\n" 113 "hztomel with `htk=True`\n" 114 ""; 115 116 static char Py_filterbank_get_coeffs_doc[] = "" 117 "get_coeffs()\n" 118 "\n" 119 "Get coefficients matrix of filterbank.\n" 120 "\n" 121 "Returns\n" 122 "-------\n" 123 "array_like\n" 124 " Array of shape (n_filters, win_s/2+1) containing the coefficients.\n" 125 ""; 126 127 static char Py_filterbank_set_coeffs_doc[] = "" 128 "set_coeffs(coeffs)\n" 129 "\n" 130 "Set coefficients of filterbank.\n" 131 "\n" 132 "Parameters\n" 133 "----------\n" 134 "coeffs : fmat\n" 135 " Array of shape (n_filters, win_s/2+1) containing the coefficients.\n" 136 ""; 137 138 static char Py_filterbank_set_power_doc[] = "" 139 "set_power(power)\n" 140 "\n" 141 "Set power applied to input spectrum of filterbank.\n" 142 "\n" 143 "Parameters\n" 144 "----------\n" 145 "power : float\n" 146 " Power to raise input spectrum to before computing the filters.\n" 147 ""; 148 149 static char Py_filterbank_get_power_doc[] = "" 150 "get_power()\n" 151 "\n" 152 "Get power applied to filterbank.\n" 153 "\n" 154 "Returns\n" 155 "-------\n" 156 "float\n" 157 " Power parameter.\n" 158 ""; 159 160 static char Py_filterbank_set_norm_doc[] = "" 161 "set_norm(norm)\n" 162 "\n" 163 "Set norm parameter. If set to `0`, the filters will not be normalized.\n" 164 "If set to `1`, the filters will be normalized to one. Default to `1`.\n" 165 "\n" 166 "This function should be called *before* :meth:`set_triangle_bands`,\n" 167 ":meth:`set_mel_coeffs`, :meth:`set_mel_coeffs_htk`, or\n" 168 ":meth:`set_mel_coeffs_slaney`.\n" 169 "\n" 170 "Parameters\n" 171 "----------\n" 172 "norm : int\n" 173 " `0` to disable, `1` to enable\n" 174 ""; 175 176 static char Py_filterbank_get_norm_doc[] = "" 177 "get_norm()\n" 178 "\n" 179 "Get norm parameter of filterbank.\n" 180 "\n" 181 "Returns\n" 182 "-------\n" 183 "float\n" 184 " Norm parameter.\n" 185 ""; 4 186 5 187 typedef struct … … 290 472 291 473 static PyObject * 474 Py_filterbank_get_power (Py_filterbank * self, PyObject *unused) 475 { 476 smpl_t power = aubio_filterbank_get_power(self->o); 477 return (PyObject *)PyFloat_FromDouble (power); 478 } 479 480 static PyObject * 292 481 Py_filterbank_set_norm(Py_filterbank *self, PyObject *args) 293 482 { … … 312 501 } 313 502 503 static PyObject * 504 Py_filterbank_get_norm (Py_filterbank * self, PyObject *unused) 505 { 506 smpl_t norm = aubio_filterbank_get_norm(self->o); 507 return (PyObject *)PyFloat_FromDouble (norm); 508 } 509 314 510 static PyMethodDef Py_filterbank_methods[] = { 315 511 {"set_triangle_bands", (PyCFunction) Py_filterbank_set_triangle_bands, 316 METH_VARARGS, "set coefficients of filterbanks"},512 METH_VARARGS, Py_filterbank_set_triangle_bands_doc}, 317 513 {"set_mel_coeffs_slaney", (PyCFunction) Py_filterbank_set_mel_coeffs_slaney, 318 METH_VARARGS, "set coefficients of filterbank as in Auditory Toolbox"},514 METH_VARARGS, Py_filterbank_set_mel_coeffs_slaney_doc}, 319 515 {"set_mel_coeffs", (PyCFunction) Py_filterbank_set_mel_coeffs, 320 METH_VARARGS, "set coefficients of filterbank to linearly spaced mel scale"},516 METH_VARARGS, Py_filterbank_set_mel_coeffs_doc}, 321 517 {"set_mel_coeffs_htk", (PyCFunction) Py_filterbank_set_mel_coeffs_htk, 322 METH_VARARGS, "set coefficients of filterbank to linearly spaced mel scale"},518 METH_VARARGS, Py_filterbank_set_mel_coeffs_htk_doc}, 323 519 {"get_coeffs", (PyCFunction) Py_filterbank_get_coeffs, 324 METH_NOARGS, "get coefficients of filterbank"},520 METH_NOARGS, Py_filterbank_get_coeffs_doc}, 325 521 {"set_coeffs", (PyCFunction) Py_filterbank_set_coeffs, 326 METH_VARARGS, "set coefficients of filterbank"},522 METH_VARARGS, Py_filterbank_set_coeffs_doc}, 327 523 {"set_power", (PyCFunction) Py_filterbank_set_power, 328 METH_VARARGS, "set power applied to filterbank input spectrum"}, 524 METH_VARARGS, Py_filterbank_set_power_doc}, 525 {"get_power", (PyCFunction) Py_filterbank_get_power, 526 METH_NOARGS, Py_filterbank_get_power_doc}, 329 527 {"set_norm", (PyCFunction) Py_filterbank_set_norm, 330 METH_VARARGS, "set norm applied to filterbank input spectrum"}, 528 METH_VARARGS, Py_filterbank_set_norm_doc}, 529 {"get_norm", (PyCFunction) Py_filterbank_get_norm, 530 METH_NOARGS, Py_filterbank_get_norm_doc}, 331 531 {NULL} 332 532 }; -
python/ext/py-musicutils.c
rf87e191 r868c6b8 40 40 } 41 41 42 level_lin = Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_level_lin(&vec));42 level_lin = PyFloat_FromDouble(aubio_level_lin(&vec)); 43 43 if (level_lin == NULL) { 44 44 PyErr_SetString (PyExc_ValueError, "failed computing level_lin"); … … 68 68 } 69 69 70 db_spl = Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_db_spl(&vec));70 db_spl = PyFloat_FromDouble(aubio_db_spl(&vec)); 71 71 if (db_spl == NULL) { 72 72 PyErr_SetString (PyExc_ValueError, "failed computing db_spl"); … … 97 97 } 98 98 99 silence_detection = Py _BuildValue("I",aubio_silence_detection(&vec, threshold));99 silence_detection = PyLong_FromLong(aubio_silence_detection(&vec, threshold)); 100 100 if (silence_detection == NULL) { 101 101 PyErr_SetString (PyExc_ValueError, "failed computing silence_detection"); … … 126 126 } 127 127 128 level_detection = Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_level_detection(&vec, threshold));128 level_detection = PyFloat_FromDouble(aubio_level_detection(&vec, threshold)); 129 129 if (level_detection == NULL) { 130 130 PyErr_SetString (PyExc_ValueError, "failed computing level_detection"); … … 195 195 } 196 196 if (htk != NULL && PyObject_IsTrue(htk) == 1) 197 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_hztomel_htk(v));197 return PyFloat_FromDouble(aubio_hztomel_htk(v)); 198 198 else 199 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_hztomel(v));199 return PyFloat_FromDouble(aubio_hztomel(v)); 200 200 } 201 201 … … 212 212 } 213 213 if (htk != NULL && PyObject_IsTrue(htk) == 1) 214 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_meltohz_htk(v));214 return PyFloat_FromDouble(aubio_meltohz_htk(v)); 215 215 else 216 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_meltohz(v));216 return PyFloat_FromDouble(aubio_meltohz(v)); 217 217 } 218 218 … … 224 224 return NULL; 225 225 } 226 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_hztomel_htk(v));226 return PyFloat_FromDouble(aubio_hztomel_htk(v)); 227 227 } 228 228 … … 234 234 return NULL; 235 235 } 236 return Py _BuildValue(AUBIO_NPY_SMPL_CHR,aubio_meltohz_htk(v));237 } 236 return PyFloat_FromDouble(aubio_meltohz_htk(v)); 237 } -
python/ext/py-phasevoc.c
rf87e191 r868c6b8 91 91 self->hop_s = Py_default_vector_length/2; 92 92 93 if (self == NULL) {94 return NULL;95 }96 97 93 if (win_s > 0) { 98 94 self->win_s = win_s; -
python/lib/gen_code.py
rf87e191 r868c6b8 234 234 235 235 def gen_doc(self): 236 out = """ 237 // TODO: add documentation 238 static char Py_{shortname}_doc[] = \"undefined\"; 236 sig = [] 237 for p in self.input_params: 238 name = p['name'] 239 defval = aubiodefvalue[name].replace('"','\\\"') 240 sig.append("{name}={defval}".format(defval=defval, name=name)) 241 out = """ 242 #ifndef PYAUBIO_{shortname}_doc 243 #define PYAUBIO_{shortname}_doc "{shortname}({sig})" 244 #endif /* PYAUBIO_{shortname}_doc */ 245 246 static char Py_{shortname}_doc[] = "" 247 PYAUBIO_{shortname}_doc 248 ""; 239 249 """ 240 return out.format( **self.__dict__)250 return out.format(sig=', '.join(sig), **self.__dict__) 241 251 242 252 def gen_new(self): -
python/tests/test_mfcc.py
rf87e191 r868c6b8 117 117 buf_size, n_filters, n_coeffs, samplerate = 512, 20, 10, 16000 118 118 m = mfcc(buf_size, n_filters, n_coeffs, samplerate) 119 m.set_scale(10.) 119 m.set_scale(10.5) 120 assert m.get_scale() == 10.5 120 121 m(cvec(buf_size)) 121 122 … … 123 124 buf_size, n_filters, n_coeffs, samplerate = 512, 20, 10, 16000 124 125 m = mfcc(buf_size, n_filters, n_coeffs, samplerate) 125 m.set_power(2.) 126 m.set_power(2.5) 127 assert m.get_power() == 2.5 126 128 m(cvec(buf_size)) 127 129
Note: See TracChangeset
for help on using the changeset viewer.