Showing the changes to python (3 of 3 files). Show all
Unified · Split
| @@ -3,17 +3,20 @@ · 2 unmodified lines | |||
| 3 | PyObject * | 3 | PyObject * |
| 4 | Py_aubio_window(PyObject *self, PyObject *args) | 4 | Py_aubio_window(PyObject *self, PyObject *args) |
| 5 | { | 5 | { |
| 6 | PyObject *output = NULL; | ||
| 7 | char_t *wintype = NULL; | 6 | char_t *wintype = NULL; |
| 8 | uint_t winlen = 0; | 7 | uint_t winlen = 0; |
| 9 | fvec_t *window; | 8 | fvec_t *window = NULL; |
| 10 | 9 | ||
| 11 | if (!PyArg_ParseTuple (args, "|sd", &wintype, &winlen)) { | 10 | if (!PyArg_ParseTuple (args, "|sI", &wintype, &winlen)) { |
| 12 | PyErr_SetString (PyExc_ValueError, | 11 | PyErr_SetString (PyExc_ValueError, "failed parsing arguments"); |
| 13 | "failed parsing arguments"); | ||
| 14 | return NULL; | 12 | return NULL; |
| 15 | } | 13 | } |
| 16 | 14 | ||
| 17 | //return (PyObject *) PyAubio_CFvecToArray(vec); | 15 | window = new_aubio_window(wintype, winlen); |
| 18 | Py_RETURN_NONE; | 16 | if (window == NULL) { |
| 17 | PyErr_SetString (PyExc_ValueError, "failed computing window"); | ||
| 18 | return NULL; | ||
| 19 | } | ||
| 20 | |||
| 21 | return (PyObject *) PyAubio_CFvecToArray(window); | ||
| 19 | } | 22 | } |
| @@ -9,7 +9,9 @@ static char Py_aubio_window_doc[] = "" · 8 unmodified lines | |||
| 9 | "Example\n" | 9 | "Example\n" |
| 10 | "-------\n" | 10 | "-------\n" |
| 11 | "\n" | 11 | "\n" |
| 12 | ">>> window('hanningz', 1024)"; | 12 | ">>> window('hanningz', 1024)\n" |
| 13 | "array([ 0.00000000e+00, 9.41753387e-06, 3.76403332e-05, ...,\n" | ||
| 14 | " 8.46982002e-05, 3.76403332e-05, 9.41753387e-06], dtype=float32)"; | ||
| 13 | 15 | ||
| 14 | PyObject * Py_aubio_window(PyObject *self, PyObject *args); | 16 | PyObject * Py_aubio_window(PyObject *self, PyObject *args); |
| 15 | 17 | ||
| @@ -1,6 +1,7 @@ | |||
| 1 | #! /usr/bin/env python | 1 | #! /usr/bin/env python |
| 2 | 2 | ||
| 3 | from numpy.testing import TestCase | 3 | from numpy.testing import TestCase |
| 4 | from numpy.testing.utils import assert_almost_equal | ||
| 4 | from aubio import window | 5 | from aubio import window |
| 5 | 6 | ||
| 6 | class aubio_window(TestCase): | 7 | class aubio_window(TestCase): |
| @@ -24,6 +25,14 @@ class aubio_window(TestCase): · 17 unmodified lines | |||
| 24 | else: | 25 | else: |
| 25 | self.fail('non-integer window length does not raise a ValueError') | 26 | self.fail('non-integer window length does not raise a ValueError') |
| 26 | 27 | ||
| 28 | def test_compute_hanning_1024(self): | ||
| 29 | from numpy import cos, arange | ||
| 30 | from math import pi | ||
| 31 | size = 1024 | ||
| 32 | aubio_window = window("hanning", size) | ||
| 33 | numpy_window = .5 - .5 * cos(2. * pi * arange(size) / size) | ||
| 34 | assert_almost_equal(aubio_window, numpy_window) | ||
| 35 | |||
| 27 | if __name__ == '__main__': | 36 | if __name__ == '__main__': |
| 28 | from unittest import main | 37 | from unittest import main |
| 29 | main() | 38 | main() |