History

[python] improve docstrings for window

Paul Brossier committed 8 years ago

Commit 16e2bb01 parent 7a7dea21 file · +84 −5Browse files

Showing the changes to python (1 of 1 file). Show all

Unified · Split

python/ext/py-musicutils.h+84−5
@@ -2,16 +2,95 @@ · 1 unmodified line
2#define PY_AUBIO_MUSICUTILS_H2#define PY_AUBIO_MUSICUTILS_H
3 3
4static char Py_aubio_window_doc[] = ""4static char Py_aubio_window_doc[] = ""
5"window(string, integer) -> fvec\n"5"window(window_type, size)\n"
6"\n"
7"Create a window of length `size`. `window_type` should be one\n"
8"of the following:\n"
9"\n"
10"- `default` (same as `hanningz`).\n"
11"- `ones`\n"
12"- `rectangle`\n"
13"- `hamming`\n"
14"- `hanning`\n"
15"- `hanningz` [1]_\n"
16"- `blackman`\n"
17"- `blackman_harris`\n"
18"- `gaussian`\n"
19"- `welch`\n"
20"- `parzen`\n"
6"\n"21"\n"
7"Create a window\n"22"Parameters\n"
23"----------\n"
24"window_type : str\n"
25" Type of window.\n"
26"size : int\n"
27" Length of window.\n"
8"\n"28"\n"
9"Example\n"29"Returns\n"
10"-------\n"30"-------\n"
31"fvec\n"
32" Array of shape `(length,)` containing the new window.\n"
33"\n"
34"See Also\n"
35"--------\n"
36"pvoc, fft\n"
37"\n"
38"Examples\n"
39"--------\n"
40"Compute a zero-phase Hann window on `1024` points:\n"
11"\n"41"\n"
12">>> window('hanningz', 1024)\n"42">>> aubio.window('hanningz', 1024)\n"
13"array([ 0.00000000e+00, 9.41753387e-06, 3.76403332e-05, ...,\n"43"array([ 0.00000000e+00, 9.41753387e-06, 3.76403332e-05, ...,\n"
14" 8.46982002e-05, 3.76403332e-05, 9.41753387e-06], dtype=float32)";44" 8.46982002e-05, 3.76403332e-05, 9.41753387e-06], dtype=float32)\n"
45"\n"
46"Plot different window types with `matplotlib <https://matplotlib.org/>`_:\n"
47"\n"
48">>> import matplotlib.pyplot as plt\n"
49">>> modes = ['default', 'ones', 'rectangle', 'hamming', 'hanning',\n"
50"... 'hanningz', 'blackman', 'blackman_harris', 'gaussian',\n"
51"... 'welch', 'parzen']; n = 2048\n"
52">>> for m in modes: plt.plot(aubio.window(m, n), label=m)\n"
53"...\n"
54">>> plt.legend(); plt.show()\n"
55"\n"
56"Note\n"
57"----\n"
58"The following examples contain the equivalent source code to compute\n"
59"each type of window with `NumPy <https://numpy.org>`_:\n"
60"\n"
61">>> n = 1024; x = np.arange(n, dtype=aubio.float_type)\n"
62">>> ones = np.ones(n).astype(aubio.float_type)\n"
63">>> rectangle = 0.5 * ones\n"
64">>> hanning = 0.5 - 0.5 * np.cos(2 * np.pi * x / n)\n"
65">>> hanningz = 0.5 * (1 - np.cos(2 * np.pi * x / n))\n"
66">>> hamming = 0.54 - 0.46 * np.cos(2.*np.pi * x / (n - 1))\n"
67">>> blackman = 0.42 \\\n"
68"... - 0.50 * np.cos(2 * np.pi * x / (n - 1)) \\\n"
69"... + 0.08 * np.cos(4 * np.pi * x / (n - 1))\n"
70">>> blackman_harris = 0.35875 \\\n"
71"... - 0.48829 * np.cos(2 * np.pi * x / (n - 1)) \\\n"
72"... + 0.14128 * np.cos(4 * np.pi * x / (n - 1)) \\\n"
73"... + 0.01168 * np.cos(6 * np.pi * x / (n - 1))\n"
74">>> gaussian = np.exp( - 0.5 * ((x - 0.5 * (n - 1)) \\\n"
75"... / (0.25 * (n - 1)) )**2 )\n"
76">>> welch = 1 - ((2 * x - n) / (n + 1))**2\n"
77">>> parzen = 1 - np.abs((2 * x - n) / (n + 1))\n"
78">>> default = hanningz\n"
79"References\n"
80"----------\n"
81#if 0
82"`Window function <https://en.wikipedia.org/wiki/Window_function>`_ on\n"
83"Wikipedia.\n"
84"\n"
85#endif
86".. [1] Amalia de Götzen, Nicolas Bernardini, and Daniel Arfib. Traditional\n"
87" (?) implementations of a phase vocoder: the tricks of the trade.\n"
88" In *Proceedings of the International Conference on Digital Audio\n"
89" Effects* (DAFx-00), pages 37–44, University of Verona, Italy, 2000.\n"
90" (`online version <"
91"https://www.cs.princeton.edu/courses/archive/spr09/cos325/Bernardini.pdf"
92">`_).\n"
93"";
15 94
16PyObject * Py_aubio_window(PyObject *self, PyObject *args);95PyObject * Py_aubio_window(PyObject *self, PyObject *args);
17 96

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t