1 | #! /usr/bin/env python |
---|
2 | # -*- coding: utf8 -*- |
---|
3 | |
---|
4 | """ |
---|
5 | aubio |
---|
6 | ===== |
---|
7 | |
---|
8 | Provides a number of classes and functions for music and audio signal |
---|
9 | analysis. |
---|
10 | |
---|
11 | How to use the documentation |
---|
12 | ---------------------------- |
---|
13 | |
---|
14 | Documentation of the python module is available as docstrings provided |
---|
15 | within the code, and a reference guide available online from `the |
---|
16 | aubio homepage <https://aubio.org/documentation>`_. |
---|
17 | |
---|
18 | The docstrings examples are written assuming `aubio` and `numpy` have been |
---|
19 | imported with: |
---|
20 | |
---|
21 | >>> import aubio |
---|
22 | >>> import numpy as np |
---|
23 | """ |
---|
24 | |
---|
25 | import numpy |
---|
26 | from ._aubio import __version__ as version |
---|
27 | from ._aubio import float_type |
---|
28 | from ._aubio import * |
---|
29 | from .midiconv import * |
---|
30 | from .slicing import * |
---|
31 | |
---|
32 | |
---|
33 | class fvec(numpy.ndarray): |
---|
34 | """fvec(input_arg=1024) |
---|
35 | A vector holding float samples. |
---|
36 | |
---|
37 | If `input_arg` is an `int`, a 1-dimensional vector of length `input_arg` |
---|
38 | will be created and filled with zeros. Otherwise, if `input_arg` is an |
---|
39 | `array_like` object, it will be converted to a 1-dimensional vector of |
---|
40 | type :data:`float_type`. |
---|
41 | |
---|
42 | Parameters |
---|
43 | ---------- |
---|
44 | input_arg : `int` or `array_like` |
---|
45 | Can be a positive integer, or any object that can be converted to |
---|
46 | a numpy array with :func:`numpy.array`. |
---|
47 | |
---|
48 | Examples |
---|
49 | -------- |
---|
50 | >>> aubio.fvec(10) |
---|
51 | array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32) |
---|
52 | >>> aubio.fvec([0,1,2]) |
---|
53 | array([0., 1., 2.], dtype=float32) |
---|
54 | >>> a = np.arange(10); type(a), type(aubio.fvec(a)) |
---|
55 | (<class 'numpy.ndarray'>, <class 'numpy.ndarray'>) |
---|
56 | >>> a.dtype, aubio.fvec(a).dtype |
---|
57 | (dtype('int64'), dtype('float32')) |
---|
58 | |
---|
59 | Notes |
---|
60 | ----- |
---|
61 | |
---|
62 | In the Python world, `fvec` is simply a subclass of |
---|
63 | :class:`numpy.ndarray`. In practice, any 1-dimensional `numpy.ndarray` of |
---|
64 | `dtype` :data:`float_type` may be passed to methods accepting |
---|
65 | `fvec` as parameter. For instance, `sink()` or `pvoc()`. |
---|
66 | |
---|
67 | See Also |
---|
68 | -------- |
---|
69 | cvec : a container holding spectral data |
---|
70 | numpy.ndarray : parent class of :class:`fvec` |
---|
71 | numpy.zeros : create a numpy array filled with zeros |
---|
72 | numpy.array : create a numpy array from an existing object |
---|
73 | """ |
---|
74 | def __new__(cls, input_arg=1024): |
---|
75 | if isinstance(input_arg, int): |
---|
76 | if input_arg == 0: |
---|
77 | raise ValueError("vector length of 1 or more expected") |
---|
78 | return numpy.zeros(input_arg, dtype=float_type, order='C') |
---|
79 | else: |
---|
80 | np_input = numpy.array(input_arg, dtype=float_type, order='C') |
---|
81 | if len(np_input.shape) != 1: |
---|
82 | raise ValueError("input_arg should have shape (n,)") |
---|
83 | if np_input.shape[0] == 0: |
---|
84 | raise ValueError("vector length of 1 or more expected") |
---|
85 | return np_input |
---|