Changeset 4615886a


Ignore:
Timestamp:
Jul 10, 2015, 2:08:22 AM (4 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink, feature/constantq, feature/pitchshift, feature/pydocstrings, feature/timestretch, master, pitchshift, sampler, timestretch, yinfft+
Children:
665b711
Parents:
5a7e2c3
Message:

ext/py-musicutils.c: add db_spl

Location:
python
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • python/ext/aubiomodule.c

    r5a7e2c3 r4615886a  
    242242  {"min_removal", Py_min_removal, METH_VARARGS, Py_min_removal_doc},
    243243  {"level_lin", Py_aubio_level_lin, METH_VARARGS, Py_aubio_level_lin_doc},
     244  {"db_spl", Py_aubio_db_spl, METH_VARARGS, Py_aubio_db_spl_doc},
    244245  {"window", Py_aubio_window, METH_VARARGS, Py_aubio_window_doc},
    245246  {NULL, NULL} /* Sentinel */
  • python/ext/py-musicutils.c

    r5a7e2c3 r4615886a  
    5151  return level_lin;
    5252}
     53
     54PyObject *
     55Py_aubio_db_spl(PyObject *self, PyObject *args)
     56{
     57  PyObject *input;
     58  fvec_t *vec;
     59  PyObject *db_spl;
     60
     61  if (!PyArg_ParseTuple (args, "O:db_spl", &input)) {
     62    PyErr_SetString (PyExc_ValueError, "failed parsing arguments");
     63    return NULL;
     64  }
     65
     66  if (input == NULL) {
     67    return NULL;
     68  }
     69
     70  vec = PyAubio_ArrayToCFvec (input);
     71  if (vec == NULL) {
     72    return NULL;
     73  }
     74
     75  db_spl = Py_BuildValue("f", aubio_db_spl(vec));
     76  if (db_spl == NULL) {
     77    PyErr_SetString (PyExc_ValueError, "failed computing db_spl");
     78    return NULL;
     79  }
     80
     81  return db_spl;
     82}
  • python/tests/test_musicutils.py

    r5a7e2c3 r4615886a  
    66from math import pi
    77
    8 from aubio import window, level_lin
     8from aubio import window, level_lin, db_spl
    99
    1010from aubio import fvec
     
    5656        assert_equal(level_lin(-ones(1024, dtype="float32")), 1.)
    5757
     58class aubio_db_spl(TestCase):
     59    def test_accept_fvec(self):
     60        db_spl(fvec(1024))
     61
     62    def test_fail_not_fvec(self):
     63        try:
     64            db_spl("default")
     65        except ValueError, e:
     66            pass
     67        else:
     68            self.fail('non-number input phase does not raise a TypeError')
     69
     70    def test_zeros_is_inf(self):
     71        from math import isinf
     72        assert isinf(db_spl(fvec(1024)))
     73
     74    def test_minus_ones_is_zero(self):
     75        from numpy import ones
     76        assert_equal(db_spl(-ones(1024, dtype="float32")), 0.)
     77
    5878if __name__ == '__main__':
    5979    from unittest import main
Note: See TracChangeset for help on using the changeset viewer.