Skip to content

Audio convolution algorithm in Rust for real-time audio processing

License

Notifications You must be signed in to change notification settings

holoplot/fft-convolution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fft-convolution

A rust implementation of convolution in the frequency domain (suitable for real-time use) inspired by the HiFi-LoFi FFT Convolver which is MIT licensed.

As of the time of this writing there does not seem to be a rust implementation of FFT convolution algorithms that is suitable for real-time use. One can find an older rust port of just the FFTConvolver class, but it does not support real-time switching of impulse responses and does not include implementations for the TwoStageFFTConvolver and CrossfadeConvolver classes.

As the original C++ implementation, this library implements:

  • Partitioned convolution algorithm (using uniform block sizes)
  • Optional support for non-uniform block sizes (TwoStageFFTConvolver)

On top of that it implements:

  • Real-time safe switching of impulse responses in the FFTConvolver
  • Real-time and artefact-free switching of impulse responses using the CrossfadeConvolver

Compared to the original C++ implementation, this implementation does not provide:

  • Its own FFT implementation (it currently uses the rustfft crate)
  • The option to use SSE instructions in the FFTConvolver

Prerequisites:

  • rust >=1.72.0

About

Audio convolution algorithm in Rust for real-time audio processing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages