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
22 #define PY_AUBIO_MUSICUTILS_H
33
44 static 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"
621 "\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"
828 "\n"
9−"Example\n"
29+"Returns\n"
1030 "-------\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"
1141 "\n"
12−">>> window('hanningz', 1024)\n"
42+">>> aubio.window('hanningz', 1024)\n"
1343 "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+"";
1594
1695 PyObject * Py_aubio_window(PyObject *self, PyObject *args);
1796

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