- Timestamp:
- Dec 19, 2018, 7:31:45 PM (6 years ago)
- Branches:
- feature/cnn, feature/crepe, feature/timestretch, fix/ffmpeg5, master
- Children:
- 22d7902
- Parents:
- 6e157df (diff), d0f19a7 (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:
-
- 2 added
- 2 deleted
- 37 edited
Legend:
- Unmodified
- Added
- Removed
-
python/README.md
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 2 2 #include <structmember.h> 3 3 4 #include "aubio-docstrings.h" 4 5 #include "aubio-generated.h" 5 6 -
python/ext/aubiomodule.c
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 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
r6e157df rcb0d7d0 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/lib/gen_code.py
r6e157df rcb0d7d0 235 235 236 236 def gen_doc(self): 237 out = """ 238 // TODO: add documentation 239 static char Py_{shortname}_doc[] = \"undefined\"; 237 sig = [] 238 for p in self.input_params: 239 name = p['name'] 240 defval = aubiodefvalue[name].replace('"','\\\"') 241 sig.append("{name}={defval}".format(defval=defval, name=name)) 242 out = """ 243 #ifndef PYAUBIO_{shortname}_doc 244 #define PYAUBIO_{shortname}_doc "{shortname}({sig})" 245 #endif /* PYAUBIO_{shortname}_doc */ 246 247 static char Py_{shortname}_doc[] = "" 248 PYAUBIO_{shortname}_doc 249 ""; 240 250 """ 241 return out.format( **self.__dict__)251 return out.format(sig=', '.join(sig), **self.__dict__) 242 252 243 253 def gen_new(self): -
python/tests/test_aubio.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase 5 4 … … 16 15 17 16 if __name__ == '__main__': 17 from unittest import main 18 18 main() 19 -
python/tests/test_aubio_cmd.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from numpy.testing import TestCase 3 4 import aubio.cmd 4 from nose2 import main5 from numpy.testing import TestCase6 5 7 6 class aubio_cmd(TestCase): … … 32 31 33 32 if __name__ == '__main__': 33 from unittest import main 34 34 main() -
python/tests/test_aubio_cut.py
r6e157df rcb0d7d0 2 2 3 3 import aubio.cut 4 from nose2 import main5 4 from numpy.testing import TestCase 6 5 … … 14 13 15 14 if __name__ == '__main__': 15 from unittest import main 16 16 main() -
python/tests/test_cvec.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 import numpy as np 5 4 from numpy.testing import TestCase, assert_equal … … 142 141 143 142 if __name__ == '__main__': 143 from unittest import main 144 144 main() -
python/tests/test_dct.py
r6e157df rcb0d7d0 67 67 except AssertionError: 68 68 self.skipTest('creating aubio.dct with size %d did not fail' % size) 69 70 if __name__ == '__main__': 71 from unittest import main 72 main() -
python/tests/test_fft.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase 5 4 from numpy.testing import assert_equal, assert_almost_equal … … 213 212 214 213 if __name__ == '__main__': 214 from unittest import main 215 215 main() -
python/tests/test_filter.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal, assert_almost_equal 5 4 from aubio import fvec, digital_filter 6 from .utils import array_from_text_file5 from utils import array_from_text_file 7 6 8 7 class aubio_filter_test_case(TestCase): … … 95 94 96 95 if __name__ == '__main__': 96 from unittest import main 97 97 main() -
python/tests/test_filterbank.py
r6e157df rcb0d7d0 5 5 6 6 from aubio import cvec, filterbank, float_type 7 from .utils import array_from_text_file7 from utils import array_from_text_file 8 8 9 9 class aubio_filterbank_test_case(TestCase): … … 88 88 89 89 if __name__ == '__main__': 90 import nose291 nose2.main()90 from unittest import main 91 main() -
python/tests/test_filterbank_mel.py
r6e157df rcb0d7d0 3 3 import numpy as np 4 4 from numpy.testing import TestCase, assert_equal, assert_almost_equal 5 from _tools import assert_warns 5 6 6 7 from aubio import fvec, cvec, filterbank, float_type 7 8 import warnings9 warnings.filterwarnings('ignore', category=UserWarning, append=True)10 8 11 9 class aubio_filterbank_mel_test_case(TestCase): … … 76 74 freq_list = [0, samplerate//4, samplerate // 2 + 1] 77 75 f = filterbank(len(freq_list)-2, 1024) 78 # TODO add assert_warns79 f.set_triangle_bands(fvec(freq_list), samplerate)76 with assert_warns(UserWarning): 77 f.set_triangle_bands(fvec(freq_list), samplerate) 80 78 81 79 def test_triangle_freqs_with_not_enough_filters(self): … … 84 82 freq_list = [0, 100, 1000, 4000, 8000, 10000] 85 83 f = filterbank(len(freq_list)-3, 1024) 86 # TODO add assert_warns87 f.set_triangle_bands(fvec(freq_list), samplerate)84 with assert_warns(UserWarning): 85 f.set_triangle_bands(fvec(freq_list), samplerate) 88 86 89 87 def test_triangle_freqs_with_too_many_filters(self): … … 92 90 freq_list = [0, 100, 1000, 4000, 8000, 10000] 93 91 f = filterbank(len(freq_list)-1, 1024) 94 # TODO add assert_warns95 f.set_triangle_bands(fvec(freq_list), samplerate)92 with assert_warns(UserWarning): 93 f.set_triangle_bands(fvec(freq_list), samplerate) 96 94 97 95 def test_triangle_freqs_with_double_value(self): … … 100 98 freq_list = [0, 100, 1000, 4000, 4000, 4000, 10000] 101 99 f = filterbank(len(freq_list)-2, 1024) 102 # TODO add assert_warns103 f.set_triangle_bands(fvec(freq_list), samplerate)100 with assert_warns(UserWarning): 101 f.set_triangle_bands(fvec(freq_list), samplerate) 104 102 105 103 def test_triangle_freqs_with_triple(self): … … 108 106 freq_list = [0, 100, 1000, 4000, 4000, 4000, 10000] 109 107 f = filterbank(len(freq_list)-2, 1024) 110 # TODO add assert_warns 111 f.set_triangle_bands(fvec(freq_list), samplerate) 108 with assert_warns(UserWarning): 109 f.set_triangle_bands(fvec(freq_list), samplerate) 110 112 111 113 112 def test_triangle_freqs_without_norm(self): … … 169 168 170 169 if __name__ == '__main__': 171 import nose2172 nose2.main()170 from unittest import main 171 main() -
python/tests/test_fvec.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 import numpy as np 5 4 from numpy.testing import TestCase, assert_equal, assert_almost_equal … … 149 148 150 149 if __name__ == '__main__': 150 from unittest import main 151 151 main() -
python/tests/test_fvec_shift.py
r6e157df rcb0d7d0 31 31 self.run_shift_ishift(7) 32 32 33 from unittest import main34 33 if __name__ == '__main__': 34 from unittest import main 35 35 main() -
python/tests/test_hztomel.py
r6e157df rcb0d7d0 4 4 from numpy.testing import TestCase 5 5 from numpy.testing import assert_equal, assert_almost_equal 6 from _tools import assert_warns 6 7 import numpy as np 7 8 import aubio … … 38 39 39 40 def test_meltohz_negative(self): 40 # TODO add assert_warns41 assert_equal(meltohz(-1), 0)41 with assert_warns(UserWarning): 42 assert_equal(meltohz(-1), 0) 42 43 43 44 def test_hztomel_negative(self): 44 # TODO add assert_warns45 assert_equal(hztomel(-1), 0)45 with assert_warns(UserWarning): 46 assert_equal(hztomel(-1), 0) 46 47 47 48 … … 58 59 59 60 def test_meltohz_negative(self): 60 # TODO add assert_warns61 assert_equal(meltohz(-1, htk=True), 0)61 with assert_warns(UserWarning): 62 assert_equal(meltohz(-1, htk=True), 0) 62 63 assert_almost_equal(meltohz(2000, htk=True), 3428.7, decimal=1) 63 64 assert_almost_equal(meltohz(1000, htk=True), 1000., decimal=1) 64 65 65 66 def test_hztomel_negative(self): 66 # TODO add assert_warns 67 assert_equal(hztomel(-1, htk=True), 0) 67 with assert_warns(UserWarning): 68 assert_equal(meltohz(-1, htk=True), 0) 69 with assert_warns(UserWarning): 70 assert_equal(hztomel(-1, htk=True), 0) 68 71 assert_almost_equal(hztomel(1000, htk=True), 1000., decimal=1) 69 72 -
python/tests/test_mathutils.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal 5 4 from numpy import array, arange, isnan, isinf … … 102 101 103 102 if __name__ == '__main__': 103 from unittest import main 104 104 main() -
python/tests/test_mfcc.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from nose2 import main 4 from nose2.tools import params 3 from _tools import parametrize, assert_raises 5 4 from numpy import random, count_nonzero 6 5 from numpy.testing import TestCase … … 16 15 new_deflts = [1024, 40, 13, 44100] 17 16 18 class aubio_mfcc(TestCase):17 class Test_aubio_mfcc(object): 19 18 20 def setUp(self): 21 self.o = mfcc() 19 members_args = 'name' 22 20 23 def test_default_creation(self): 24 pass 25 26 def test_delete(self): 27 del self.o 28 29 @params(*new_params) 21 @parametrize(members_args, new_params) 30 22 def test_read_only_member(self, name): 31 o = self.o32 with self.assertRaises((TypeError, AttributeError)):23 o = mfcc() 24 with assert_raises((TypeError, AttributeError)): 33 25 setattr(o, name, 0) 34 26 35 @param s(*zip(new_params, new_deflts))27 @parametrize('name, expected', zip(new_params, new_deflts)) 36 28 def test_default_param(self, name, expected): 37 29 """ test mfcc.{:s} = {:d} """.format(name, expected) 38 o = self.o39 self.assertEqual( getattr(o, name), expected)30 o = mfcc() 31 assert getattr(o, name) == expected 40 32 41 33 class aubio_mfcc_wrong_params(TestCase): … … 83 75 84 76 85 class aubio_mfcc_all_parameters(TestCase):77 class Test_aubio_mfcc_all_parameters(object): 86 78 87 @params(79 run_values = [ 88 80 (2048, 40, 13, 44100), 89 81 (1024, 40, 13, 44100), … … 101 93 (1024, 40, 40, 44100), 102 94 (1024, 40, 3, 44100), 103 ) 95 ] 96 run_args = ['buf_size', 'n_filters', 'n_coeffs', 'samplerate'] 97 98 @parametrize(run_args, run_values) 104 99 def test_run_with_params(self, buf_size, n_filters, n_coeffs, samplerate): 105 100 " check mfcc can run with reasonable parameters " … … 149 144 150 145 if __name__ == '__main__': 151 main() 146 from _tools import run_module_suite 147 run_module_suite() -
python/tests/test_midi2note.py
r6e157df rcb0d7d0 3 3 4 4 from aubio import midi2note 5 from nose2.tools import params 6 import unittest 5 from _tools import parametrize, assert_raises 7 6 8 7 list_of_known_midis = ( … … 16 15 ) 17 16 18 class midi2note_good_values(unittest.TestCase):17 class Test_midi2note_good_values(object): 19 18 20 @param s(*list_of_known_midis)19 @parametrize('midi, note', list_of_known_midis) 21 20 def test_midi2note_known_values(self, midi, note): 22 21 " known values are correctly converted " 23 self.assertEqual ( midi2note(midi), note)22 assert midi2note(midi) == (note) 24 23 25 class midi2note_wrong_values(unittest.TestCase):24 class Test_midi2note_wrong_values(object): 26 25 27 26 def test_midi2note_negative_value(self): 28 27 " fails when passed a negative value " 29 self.assertRaises(ValueError, midi2note, -2)28 assert_raises(ValueError, midi2note, -2) 30 29 31 30 def test_midi2note_large(self): 32 31 " fails when passed a value greater than 127 " 33 self.assertRaises(ValueError, midi2note, 128)32 assert_raises(ValueError, midi2note, 128) 34 33 35 34 def test_midi2note_floating_value(self): 36 35 " fails when passed a floating point " 37 self.assertRaises(TypeError, midi2note, 69.2)36 assert_raises(TypeError, midi2note, 69.2) 38 37 39 38 def test_midi2note_character_value(self): 40 39 " fails when passed a value that can not be transformed to integer " 41 self.assertRaises(TypeError, midi2note, "a")40 assert_raises(TypeError, midi2note, "a") 42 41 43 42 if __name__ == '__main__': 44 import nose245 nose2.main()43 from _tools import run_module_suite 44 run_module_suite() -
python/tests/test_musicutils.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 import numpy as np 5 4 from numpy.testing import TestCase 6 from numpy.testing .utilsimport assert_equal, assert_almost_equal5 from numpy.testing import assert_equal, assert_almost_equal 7 6 from aubio import window, level_lin, db_spl, silence_detection, level_detection 8 7 from aubio import fvec, float_type … … 86 85 87 86 if __name__ == '__main__': 87 from unittest import main 88 88 main() -
python/tests/test_note2midi.py
r6e157df rcb0d7d0 5 5 6 6 from aubio import note2midi, freq2note, note2freq, float_type 7 from n ose2.tools import params8 import unittest7 from numpy.testing import TestCase 8 from _tools import parametrize, assert_raises, skipTest 9 9 10 10 list_of_known_notes = ( … … 45 45 ) 46 46 47 class note2midi_good_values(unittest.TestCase):47 class Test_note2midi_good_values(object): 48 48 49 @param s(*list_of_known_notes)49 @parametrize('note, midi', list_of_known_notes) 50 50 def test_note2midi_known_values(self, note, midi): 51 51 " known values are correctly converted " 52 self.assertEqual ( note2midi(note), midi )52 assert note2midi(note) == midi 53 53 54 @param s(*list_of_known_notes_with_unicode_issues)54 @parametrize('note, midi', list_of_known_notes_with_unicode_issues) 55 55 def test_note2midi_known_values_with_unicode_issues(self, note, midi): 56 " known values are correctly converted, unless decoding is expected to fail"56 " difficult values are correctly converted unless expected failure " 57 57 try: 58 self.assertEqual ( note2midi(note), midi )58 assert note2midi(note) == midi 59 59 except UnicodeEncodeError as e: 60 # platforms with decoding failures include: 61 # - osx: python <= 2.7.10 62 # - win: python <= 2.7.12 60 63 import sys 61 str fmt = "len(u'\\U0001D12A') != 1, excpected decoding failure | {:s} | {:s} {:s}"62 str res = strfmt.format(e, sys.platform, sys.version)63 # happens with: darwin 2.7.10, windows 2.7.1264 strmsg = "len(u'\\U0001D12A') != 1, expected decoding failure" 65 strmsg += " | upgrade to Python 3 to fix" 66 strmsg += " | {:s} | {:s} {:s}" 64 67 if len('\U0001D12A') != 1 and sys.version[0] == '2': 65 s elf.skipTest(strres + " | upgrade to Python 3 to fix")68 skipTest(strmsg.format(repr(e), sys.platform, sys.version)) 66 69 else: 67 70 raise 68 71 69 class note2midi_wrong_values( unittest.TestCase):72 class note2midi_wrong_values(TestCase): 70 73 71 74 def test_note2midi_missing_octave(self): … … 105 108 self.assertRaises(ValueError, note2midi, 'CB+-3') 106 109 107 @params(*list_of_unknown_notes) 110 class Test_note2midi_unknown_values(object): 111 112 @parametrize('note', list_of_unknown_notes) 108 113 def test_note2midi_unknown_values(self, note): 109 114 " unknown values throw out an error " 110 self.assertRaises(ValueError, note2midi, note)115 assert_raises(ValueError, note2midi, note) 111 116 112 class freq2note_simple_test( unittest.TestCase):117 class freq2note_simple_test(TestCase): 113 118 114 119 def test_freq2note_above(self): … … 120 125 self.assertEqual("A4", freq2note(439)) 121 126 122 class note2freq_simple_test( unittest.TestCase):127 class note2freq_simple_test(TestCase): 123 128 124 129 def test_note2freq(self): … … 134 139 135 140 if __name__ == '__main__': 136 import nose2137 nose2.main()141 from _tools import run_module_suite 142 run_module_suite() -
python/tests/test_notes.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal, assert_almost_equal 5 from aubio import notes 4 from aubio import notes, source 5 import numpy as np 6 from utils import list_all_sounds 7 8 list_of_sounds = list_all_sounds('sounds') 6 9 7 10 AUBIO_DEFAULT_NOTES_SILENCE = -70. … … 53 56 self.o.set_release_drop(val) 54 57 55 from .utils import list_all_sounds56 list_of_sounds = list_all_sounds('sounds')57 58 58 class aubio_notes_sinewave(TestCase): 59 59 60 60 def analyze_file(self, filepath, samplerate=0): 61 from aubio import source62 import numpy as np63 61 win_s = 512 # fft size 64 62 hop_s = 256 # hop size … … 93 91 94 92 if __name__ == '__main__': 93 from unittest import main 95 94 main() -
python/tests/test_onset.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal, assert_almost_equal 5 4 from aubio import onset, fvec … … 117 116 118 117 if __name__ == '__main__': 118 from unittest import main 119 119 main() -
python/tests/test_phasevoc.py
r6e157df rcb0d7d0 2 2 3 3 from numpy.testing import TestCase, assert_equal, assert_array_less 4 from _tools import parametrize 4 5 from aubio import fvec, cvec, pvoc, float_type 5 from nose2 import main6 from nose2.tools import params7 6 import numpy as np 8 7 … … 19 18 return np.random.rand(hop_s).astype(float_type) * 2. - 1. 20 19 21 class aubio_pvoc_test_case(TestCase):20 class Test_aubio_pvoc_test_case(object): 22 21 """ pvoc object test case """ 23 22 … … 66 65 assert_equal ( t, 0.) 67 66 68 @params( 67 resynth_noise_args = "hop_s, ratio" 68 resynth_noise_values = [ 69 69 ( 256, 8), 70 70 ( 256, 4), … … 88 88 (8192, 4), 89 89 (8192, 2), 90 ) 90 ] 91 92 @parametrize(resynth_noise_args, resynth_noise_values) 91 93 def test_resynth_steps_noise(self, hop_s, ratio): 92 94 """ check the resynthesis of a random signal is correct """ … … 94 96 self.reconstruction(sigin, hop_s, ratio) 95 97 96 @params( 98 resynth_sine_args = "samplerate, hop_s, ratio, freq" 99 resynth_sine_values = [ 97 100 (44100, 256, 8, 441), 98 101 (44100, 256, 4, 1203), … … 109 112 (96000, 1024, 8, 47000), 110 113 (96000, 1024, 8, 20), 111 ) 114 ] 115 116 @parametrize(resynth_sine_args, resynth_sine_values) 112 117 def test_resynth_steps_sine(self, samplerate, hop_s, ratio, freq): 113 118 """ check the resynthesis of a sine is correct """ … … 200 205 201 206 if __name__ == '__main__': 207 from unittest import main 202 208 main() 203 -
python/tests/test_pitch.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import TestCase, main 4 from numpy.testing import assert_equal 3 from numpy.testing import TestCase, assert_equal 5 4 from numpy import sin, arange, mean, median, isnan, pi 6 5 from aubio import fvec, pitch, freqtomidi, float_type … … 117 116 for algo in pitch_algorithms: 118 117 for mode in signal_modes: 119 test_method = create_test (algo, mode)120 test_method.__name__ = 'test_pitch_%s_%d_%d_%dHz_sin_%.0f' % ( algo,118 _test_method = create_test (algo, mode) 119 _test_method.__name__ = 'test_pitch_%s_%d_%d_%dHz_sin_%.0f' % ( algo, 121 120 mode[0], mode[1], mode[2], mode[3] ) 122 setattr (aubio_pitch_Sinusoid, test_method.__name__,test_method)121 setattr (aubio_pitch_Sinusoid, _test_method.__name__, _test_method) 123 122 124 123 if __name__ == '__main__': 124 from unittest import main 125 125 main() -
python/tests/test_sink.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from nose2 import main4 from nose2.tools import params5 3 from numpy.testing import TestCase 6 4 from aubio import fvec, source, sink 7 from .utils import list_all_sounds, get_tmp_sink_path, del_tmp_sink_path 8 9 import warnings 10 warnings.filterwarnings('ignore', category=UserWarning, append=True) 5 from utils import list_all_sounds, get_tmp_sink_path, del_tmp_sink_path 6 from _tools import parametrize, skipTest, assert_raises 11 7 12 8 list_of_sounds = list_all_sounds('sounds') … … 24 20 all_params.append((hop_size, samplerate, soundfile)) 25 21 26 class aubio_sink_test_case(TestCase): 27 28 def setUp(self): 29 if not len(list_of_sounds): 30 self.skipTest('add some sound files in \'python/tests/sounds\'') 22 class Test_aubio_sink(object): 31 23 32 24 def test_wrong_filename(self): 33 with self.assertRaises(RuntimeError):25 with assert_raises(RuntimeError): 34 26 sink('') 35 27 36 28 def test_wrong_samplerate(self): 37 with self.assertRaises(RuntimeError):29 with assert_raises(RuntimeError): 38 30 sink(get_tmp_sink_path(), -1) 39 31 40 32 def test_wrong_samplerate_too_large(self): 41 with self.assertRaises(RuntimeError):33 with assert_raises(RuntimeError): 42 34 sink(get_tmp_sink_path(), 1536001, 2) 43 35 44 36 def test_wrong_channels(self): 45 with self.assertRaises(RuntimeError):37 with assert_raises(RuntimeError): 46 38 sink(get_tmp_sink_path(), 44100, -1) 47 39 48 40 def test_wrong_channels_too_large(self): 49 with self.assertRaises(RuntimeError):41 with assert_raises(RuntimeError): 50 42 sink(get_tmp_sink_path(), 44100, 202020) 51 43 … … 67 59 shutil.rmtree(tmpdir) 68 60 69 @param s(*all_params)61 @parametrize('hop_size, samplerate, path', all_params) 70 62 def test_read_and_write(self, hop_size, samplerate, path): 71 72 63 try: 73 64 f = source(path, samplerate, hop_size) 74 65 except RuntimeError as e: 75 self.skipTest('failed opening with hop_s = {:d}, samplerate = {:d} ({:s})'.format(hop_size, samplerate, str(e))) 66 err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})' 67 skipTest(err_msg.format(str(e), hop_size, samplerate)) 76 68 if samplerate == 0: samplerate = f.samplerate 77 69 sink_path = get_tmp_sink_path() … … 85 77 del_tmp_sink_path(sink_path) 86 78 87 @param s(*all_params)79 @parametrize('hop_size, samplerate, path', all_params) 88 80 def test_read_and_write_multi(self, hop_size, samplerate, path): 89 81 try: 90 82 f = source(path, samplerate, hop_size) 91 83 except RuntimeError as e: 92 self.skipTest('failed opening with hop_s = {:d}, samplerate = {:d} ({:s})'.format(hop_size, samplerate, str(e))) 84 err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})' 85 skipTest(err_msg.format(str(e), hop_size, samplerate)) 93 86 if samplerate == 0: samplerate = f.samplerate 94 87 sink_path = get_tmp_sink_path() … … 126 119 127 120 if __name__ == '__main__': 128 main() 121 from _tools import run_module_suite 122 run_module_suite() -
python/tests/test_slicing.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal 5 4 from aubio import slice_source_at_stamps 6 from .utils import count_files_in_directory, get_default_test_sound7 from .utils import count_samples_in_directory, count_samples_in_file5 from utils import count_files_in_directory, get_default_test_sound 6 from utils import count_samples_in_directory, count_samples_in_file 8 7 9 8 import tempfile … … 168 167 169 168 if __name__ == '__main__': 169 from unittest import main 170 170 main() -
python/tests/test_source.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from nose2 import main 4 from nose2.tools import params 3 5 4 from numpy.testing import TestCase, assert_equal 6 5 from aubio import source 7 from .utils import list_all_sounds 8 9 import warnings 10 warnings.filterwarnings('ignore', category=UserWarning, append=True) 6 from utils import list_all_sounds 7 import unittest 8 from _tools import parametrize, assert_raises, assert_equal, skipTest 11 9 12 10 list_of_sounds = list_all_sounds('sounds') … … 14 12 hop_sizes = [512, 1024, 64] 15 13 16 path =None14 default_test_sound = len(list_of_sounds) and list_of_sounds[0] or None 17 15 18 16 all_params = [] … … 22 20 all_params.append((hop_size, samplerate, soundfile)) 23 21 22 no_sounds_msg = "no test sounds, add some in 'python/tests/sounds/'!" 24 23 25 class aubio_source_test_case_base(TestCase): 24 _debug = False 26 25 27 def setUp(self): 28 if not len(list_of_sounds): 29 self.skipTest('add some sound files in \'python/tests/sounds\'') 30 self.default_test_sound = list_of_sounds[0] 26 class Test_aubio_source_test_case(object): 31 27 32 class aubio_source_test_case(aubio_source_test_case_base): 33 34 @params(*list_of_sounds) 28 @parametrize('filename', list_of_sounds) 35 29 def test_close_file(self, filename): 36 30 samplerate = 0 # use native samplerate … … 39 33 f.close() 40 34 41 @param s(*list_of_sounds)35 @parametrize('filename', list_of_sounds) 42 36 def test_close_file_twice(self, filename): 43 37 samplerate = 0 # use native samplerate … … 47 41 f.close() 48 42 49 class aubio_source_read_test_case(aubio_source_test_case_base):43 class Test_aubio_source_read(object): 50 44 51 45 def read_from_source(self, f): … … 57 51 assert_equal(samples[read:], 0) 58 52 break 59 #result_str = "read {:.2f}s ({:d} frames in {:d} blocks at {:d}Hz) from {:s}" 60 #result_params = total_frames / float(f.samplerate), total_frames, total_frames//f.hop_size, f.samplerate, f.uri 61 #print (result_str.format(*result_params)) 53 if _debug: 54 result_str = "read {:.2f}s ({:d} frames" 55 result_str += " in {:d} blocks at {:d}Hz) from {:s}" 56 result_params = total_frames / float(f.samplerate), total_frames, \ 57 total_frames//f.hop_size, f.samplerate, f.uri 58 print (result_str.format(*result_params)) 62 59 return total_frames 63 60 64 @param s(*all_params)61 @parametrize('hop_size, samplerate, soundfile', all_params) 65 62 def test_samplerate_hopsize(self, hop_size, samplerate, soundfile): 66 63 try: 67 64 f = source(soundfile, samplerate, hop_size) 68 65 except RuntimeError as e: 69 self.skipTest('failed opening with hop_s = {:d}, samplerate = {:d} ({:s})'.format(hop_size, samplerate, str(e))) 66 err_msg = 'failed opening with hop_s={:d}, samplerate={:d} ({:s})' 67 skipTest(err_msg.format(hop_size, samplerate, str(e))) 70 68 assert f.samplerate != 0 71 69 read_frames = self.read_from_source(f) 72 70 if 'f_' in soundfile and samplerate == 0: 73 71 import re 74 f = re.compile( '.*_\([0:9]*f\)_.*')72 f = re.compile(r'.*_\([0:9]*f\)_.*') 75 73 match_f = re.findall('([0-9]*)f_', soundfile) 76 74 if len(match_f) == 1: 77 75 expected_frames = int(match_f[0]) 78 self.assertEqual(expected_frames, read_frames)76 assert_equal(expected_frames, read_frames) 79 77 80 @param s(*list_of_sounds)78 @parametrize('p', list_of_sounds) 81 79 def test_samplerate_none(self, p): 82 80 f = source(p) … … 84 82 self.read_from_source(f) 85 83 86 @param s(*list_of_sounds)84 @parametrize('p', list_of_sounds) 87 85 def test_samplerate_0(self, p): 88 86 f = source(p, 0) … … 90 88 self.read_from_source(f) 91 89 92 @param s(*list_of_sounds)90 @parametrize('p', list_of_sounds) 93 91 def test_zero_hop_size(self, p): 94 92 f = source(p, 0, 0) … … 97 95 self.read_from_source(f) 98 96 99 @param s(*list_of_sounds)97 @parametrize('p', list_of_sounds) 100 98 def test_seek_to_half(self, p): 101 99 from random import randint … … 109 107 assert a == b + c 110 108 111 @param s(*list_of_sounds)109 @parametrize('p', list_of_sounds) 112 110 def test_duration(self, p): 113 111 total_frames = 0 … … 118 116 total_frames += read 119 117 if read < f.hop_size: break 120 self.assertEqual(duration, total_frames)118 assert_equal (duration, total_frames) 121 119 122 120 123 class aubio_source_test_wrong_params(TestCase):121 class Test_aubio_source_wrong_params(object): 124 122 125 123 def test_wrong_file(self): 126 with self.assertRaises(RuntimeError):124 with assert_raises(RuntimeError): 127 125 source('path_to/unexisting file.mp3') 128 126 129 class aubio_source_test_wrong_params_with_file(aubio_source_test_case_base): 127 @unittest.skipIf(default_test_sound is None, no_sounds_msg) 128 class Test_aubio_source_wrong_params_with_file(TestCase): 130 129 131 130 def test_wrong_samplerate(self): 132 with self.assertRaises(ValueError):133 source( self.default_test_sound, -1)131 with assert_raises(ValueError): 132 source(default_test_sound, -1) 134 133 135 134 def test_wrong_hop_size(self): 136 with self.assertRaises(ValueError):137 source( self.default_test_sound, 0, -1)135 with assert_raises(ValueError): 136 source(default_test_sound, 0, -1) 138 137 139 138 def test_wrong_channels(self): 140 with self.assertRaises(ValueError):141 source( self.default_test_sound, 0, 0, -1)139 with assert_raises(ValueError): 140 source(default_test_sound, 0, 0, -1) 142 141 143 142 def test_wrong_seek(self): 144 f = source( self.default_test_sound)145 with self.assertRaises(ValueError):143 f = source(default_test_sound) 144 with assert_raises(ValueError): 146 145 f.seek(-1) 147 146 148 147 def test_wrong_seek_too_large(self): 149 f = source( self.default_test_sound)148 f = source(default_test_sound) 150 149 try: 151 with self.assertRaises(ValueError):150 with assert_raises(ValueError): 152 151 f.seek(f.duration + f.samplerate * 10) 153 except AssertionError:154 s elf.skipTest('seeking after end of stream failed raising ValueError')152 except: 153 skipTest('seeking after end of stream failed raising ValueError') 155 154 156 class aubio_source_readmulti_test_case(aubio_source_read_test_case):155 class Test_aubio_source_readmulti(Test_aubio_source_read): 157 156 158 157 def read_from_source(self, f): … … 164 163 assert_equal(samples[:,read:], 0) 165 164 break 166 #result_str = "read {:.2f}s ({:d} frames in {:d} channels and {:d} blocks at {:d}Hz) from {:s}" 167 #result_params = total_frames / float(f.samplerate), total_frames, f.channels, int(total_frames/f.hop_size), f.samplerate, f.uri 168 #print (result_str.format(*result_params)) 165 if _debug: 166 result_str = "read {:.2f}s ({:d} frames in {:d} channels" 167 result_str += " and {:d} blocks at {:d}Hz) from {:s}" 168 result_params = total_frames / float(f.samplerate), total_frames, \ 169 f.channels, int(total_frames/f.hop_size), \ 170 f.samplerate, f.uri 171 print (result_str.format(*result_params)) 169 172 return total_frames 170 173 171 class aubio_source_with(aubio_source_test_case_base):174 class Test_aubio_source_with(object): 172 175 173 #@params(*list_of_sounds) 174 @params(*list_of_sounds) 176 @parametrize('filename', list_of_sounds) 175 177 def test_read_from_mono(self, filename): 176 178 total_frames = 0 … … 186 188 187 189 if __name__ == '__main__': 188 main() 190 from _tools import run_module_suite 191 run_module_suite() -
python/tests/test_source_channels.py
r6e157df rcb0d7d0 9 9 import numpy as np 10 10 from numpy.testing import assert_equal 11 from .utils import get_tmp_sink_path11 from utils import get_tmp_sink_path 12 12 13 13 class aubio_source_test_case(unittest.TestCase): -
python/tests/test_specdesc.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase, assert_equal, assert_almost_equal 5 4 from numpy import random, arange, log, zeros … … 230 229 231 230 if __name__ == '__main__': 231 from unittest import main 232 232 main() -
python/tests/test_zero_crossing_rate.py
r6e157df rcb0d7d0 1 1 #! /usr/bin/env python 2 2 3 from unittest import main4 3 from numpy.testing import TestCase 5 4 from aubio import fvec, zero_crossing_rate … … 44 43 45 44 if __name__ == '__main__': 45 from unittest import main 46 46 main() -
python/tests/utils.py
r6e157df rcb0d7d0 9 9 10 10 def array_from_text_file(filename, dtype = 'float'): 11 filename = os.path.join(os.path.dirname(__file__), filename) 12 with open(filename) as f: 13 lines = f.readlines() 14 return np.array([line.split() for line in lines], 15 dtype = dtype) 11 realpathname = os.path.join(os.path.dirname(__file__), filename) 12 return np.loadtxt(realpathname, dtype = dtype) 16 13 17 14 def list_all_sounds(rel_dir): … … 39 36 os.unlink(path) 40 37 except WindowsError as e: 41 print("deleting {:s} failed ({:s}), reopening".format(path, repr(e))) 42 with open(path, 'wb') as f: 43 f.close() 44 try: 45 os.unlink(path) 46 except WindowsError as f: 47 print("deleting {:s} failed ({:s}), aborting".format(path, repr(e))) 38 # removing the temporary directory sometimes fails on windows 39 import warnings 40 errmsg = "failed deleting temporary file {:s} ({:s})" 41 warnings.warn(UserWarning(errmsg.format(path, repr(e)))) 48 42 49 43 def array_from_yaml_file(filename):
Note: See TracChangeset
for help on using the changeset viewer.