Source code for aubio

#! /usr/bin/env python
# -*- coding: utf8 -*-

"""
aubio
=====

Provides a number of classes and functions for music and audio signal
analysis.

How to use the documentation
----------------------------

Documentation of the python module is available as docstrings provided
within the code, and a reference guide available online from `the
aubio homepage <https://aubio.org/documentation>`_.

The docstrings examples are written assuming `aubio` and `numpy` have been
imported with:

>>> import aubio
>>> import numpy as np
"""

import numpy
from ._aubio import __version__ as version
from ._aubio import float_type
from ._aubio import *
from .midiconv import *
from .slicing import *


[docs]class fvec(numpy.ndarray): """fvec(input_arg=1024) A vector holding float samples. If `input_arg` is an `int`, a 1-dimensional vector of length `input_arg` will be created and filled with zeros. Otherwise, if `input_arg` is an `array_like` object, it will be converted to a 1-dimensional vector of type :data:`float_type`. Parameters ---------- input_arg : `int` or `array_like` Can be a positive integer, or any object that can be converted to a numpy array with :func:`numpy.array`. Examples -------- >>> aubio.fvec(10) array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32) >>> aubio.fvec([0,1,2]) array([0., 1., 2.], dtype=float32) >>> a = np.arange(10); type(a), type(aubio.fvec(a)) (<class 'numpy.ndarray'>, <class 'numpy.ndarray'>) >>> a.dtype, aubio.fvec(a).dtype (dtype('int64'), dtype('float32')) Notes ----- In the Python world, `fvec` is simply a subclass of :class:`numpy.ndarray`. In practice, any 1-dimensional `numpy.ndarray` of `dtype` :data:`float_type` may be passed to methods accepting `fvec` as parameter. For instance, `sink()` or `pvoc()`. See Also -------- cvec : a container holding spectral data numpy.ndarray : parent class of :class:`fvec` numpy.zeros : create a numpy array filled with zeros numpy.array : create a numpy array from an existing object """ def __new__(cls, input_arg=1024): if isinstance(input_arg, int): if input_arg == 0: raise ValueError("vector length of 1 or more expected") return numpy.zeros(input_arg, dtype=float_type, order='C') else: np_input = numpy.array(input_arg, dtype=float_type, order='C') if len(np_input.shape) != 1: raise ValueError("input_arg should have shape (n,)") if np_input.shape[0] == 0: raise ValueError("vector length of 1 or more expected") return np_input