Crate aubio

Source
Expand description

§Safe bindings for aubio library

github crate docs GPL-3.0 CI

This crate provides safe Rust bindings to aubio C library.

Aubio is a library to label music and sounds.

It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.

Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio.

Aubio provide several algorithms and routines, including:

  • several onset detection methods
  • different pitch detection methods
  • tempo tracking and beat detection
  • MFCC (mel-frequency cepstrum coefficients)
  • FFT and phase vocoder
  • up/down-sampling
  • digital filters (low pass, high pass, and more)
  • spectral filtering
  • transient/steady-state separation
  • sound file read and write access
  • various mathematics utilities for music applications

The name aubio comes from audio with a typo: some errors are likely to be found in the results.

§Crate features

The following features can be used to customize configuration:

  • bindgen Force generate bindings itself instead of use pre-generated (useful for unsupported archs)
  • builtin Force compile builtin aubio C library
  • pkg-config Use pkg-config to find installed libraries
  • shared Build shared aubio C-library
  • static Build static aubio C-library
  • fftw3 Enable using fftw3 library
  • intelipp Enable using Intel IPP library
  • accelerate Enable using acceleration framework on apple platforms
  • blas Enable using blas library
  • atlas Enable using atlas library
  • double Enable double presicion of audio sample data

When pkg-config feature is used the installed aubio library will be used if found.

To force build and link builtin version you can use builtin feature.

The features such as fftw3, intelipp, accelerate, blas, atlas and double is take an effect only for builtin aubio C library.

Modules§

vec
Vector data wrappers

Macros§

carr
farr

Structs§

FFT
FFT (Fast Fourier Transformation) object
FilterBank
Filterbank object.
FnLogger
Closure logger wrapper
Log
Logging
MFCC
MFCC object
Note
Recognized note data
Notes
Notes detection object
Onset
Onset detection object
PVoc
Phase vocoder object
Pitch
Pitch detection object
Resampler
Resampler object
SpecDesc
Spectral description object
Tempo
Tempo detection object

Enums§

Error
The error type
LogLevel
Logging level
OnsetMode
Onset detection function
PitchMode
Pitch detection method
PitchUnit
Pitch output unit
ResampleMode
Resampling method
SpecShape
Spectral shape descriptor
WindowType
The window function type

Traits§

AsNativeStr
The trait for null-terminated string constants
Logger
Log output handler
SpecMethod
Spectral description function

Functions§

bin_to_freq
Convert frequency bin to frequency (Hz)
bin_to_hz
Convert frequency bin to frequency (Hz)
bin_to_midi
Convert frequency bin to midi value
db_spl
Compute sound pressure level (SPL) in dB.
freq_to_bin
Convert frequency (Hz) to frequency bin
freq_to_midi
Convert frequency (Hz) to midi value in range 0..128
hz_to_bin
Convert frequency (Hz) to frequency bin
hz_to_mel
Convert frequency (Hz) to mel
hz_to_mel_htk
Convert frequency (Hz) to mel
level_detection
Get buffer level if level >= threshold, 1.0 otherwise
level_lin
Compute sound level on a linear scale.
mel_to_hz
Convert mel to frequency (Hz)
mel_to_hz_htk
Convert mel to frequency (Hz)
midi_to_bin
Convert midi value to frequency bin
midi_to_freq
Convert midi value in range 0..128 to frequency (Hz)
silence_detection
Check if buffer level in dB SPL is under a given threshold.
unwrap_2pi
Compute the principal argument
zero_crossing_rate
Zero-crossing rate (ZCR)

Type Aliases§

Result
The alias for result type with payload
Smpl
Sample data type
Status
The alias for rusult type without payload