/aubio-rs

Rust bindings for Aubio library

Primary LanguageRust

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.