History

python/ext/py-musicutils.*: add shift(fvec) and ishift(fvec)

Paul Brossier committed 8 years ago

Commit b5322751 parent 6f3dfc03 files · +80 −0Browse files

Showing the changes to python/ext (3 of 3 files). Show all

Unified · Split

3 files
  1. python/ext/aubiomodule.c +2 −0
  2. python/ext/py-musicutils.c +48 −0
  3. python/ext/py-musicutils.h +30 −0
python/ext/aubiomodule.c+2−0
@@ -242,6 +242,8 @@ static PyMethodDef aubio_methods[] = { · 241 unmodified lines
242242 {"silence_detection", Py_aubio_silence_detection, METH_VARARGS, Py_aubio_silence_detection_doc},
243243 {"level_detection", Py_aubio_level_detection, METH_VARARGS, Py_aubio_level_detection_doc},
244244 {"window", Py_aubio_window, METH_VARARGS, Py_aubio_window_doc},
245+ {"shift", Py_aubio_shift, METH_VARARGS, Py_aubio_shift_doc},
246+ {"ishift", Py_aubio_ishift, METH_VARARGS, Py_aubio_ishift_doc},
245247 {NULL, NULL, 0, NULL} /* Sentinel */
246248 };
247249
python/ext/py-musicutils.c+48−0
@@ -133,3 +133,51 @@ Py_aubio_level_detection(PyObject *self, PyObject *args) · 132 unmodified lines
133133
134134 return level_detection;
135135 }
136+
137+PyObject *
138+Py_aubio_shift(PyObject *self, PyObject *args)
139+{
140+ PyObject *input;
141+ fvec_t vec;
142+
143+ if (!PyArg_ParseTuple (args, "O:shift", &input)) {
144+ return NULL;
145+ }
146+
147+ if (input == NULL) {
148+ return NULL;
149+ }
150+
151+ if (!PyAubio_ArrayToCFvec(input, &vec)) {
152+ return NULL;
153+ }
154+
155+ fvec_shift(&vec);
156+
157+ //Py_RETURN_NONE;
158+ return (PyObject *) PyAubio_CFvecToArray(&vec);
159+}
160+
161+PyObject *
162+Py_aubio_ishift(PyObject *self, PyObject *args)
163+{
164+ PyObject *input;
165+ fvec_t vec;
166+
167+ if (!PyArg_ParseTuple (args, "O:shift", &input)) {
168+ return NULL;
169+ }
170+
171+ if (input == NULL) {
172+ return NULL;
173+ }
174+
175+ if (!PyAubio_ArrayToCFvec(input, &vec)) {
176+ return NULL;
177+ }
178+
179+ fvec_ishift(&vec);
180+
181+ //Py_RETURN_NONE;
182+ return (PyObject *) PyAubio_CFvecToArray(&vec);
183+}
python/ext/py-musicutils.h+30−0
@@ -71,4 +71,34 @@ static char Py_aubio_level_detection_doc[] = "" · 70 unmodified lines
7171
7272 PyObject * Py_aubio_level_detection(PyObject *self, PyObject *args);
7373
74+static char Py_aubio_shift_doc[] = ""
75+"Swap left and right partitions of a vector\n"
76+"\n"
77+"Returns the swapped vector. The input vector is also modified.\n"
78+"\n"
79+"For a vector of length N, the partition is split at index N - N//2.\n"
80+"\n"
81+"Example\n"
82+"-------\n"
83+"\n"
84+">>> import numpy\n"
85+">>> shift(numpy.arange(3, dtype=aubio.float_type))\n"
86+"array([2., 0., 1.], dtype=" AUBIO_NPY_SMPL_STR ")";
87+PyObject * Py_aubio_shift(PyObject *self, PyObject *args);
88+
89+static char Py_aubio_ishift_doc[] = ""
90+"Swap right and left partitions of a vector\n"
91+"\n"
92+"Returns the swapped vector. The input vector is also modified.\n"
93+"\n"
94+"Unlike with shift(), the partition is split at index N//2.\n"
95+"\n"
96+"Example\n"
97+"-------\n"
98+"\n"
99+">>> import numpy\n"
100+">>> ishift(numpy.arange(3, dtype=aubio.float_type))\n"
101+"array([1., 2., 0.], dtype=" AUBIO_NPY_SMPL_STR ")";
102+PyObject * Py_aubio_ishift(PyObject *self, PyObject *args);
103+
74104 #endif /* PY_AUBIO_MUSICUTILS_H */

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