Rust Audio

Useful Links for DSP and Audio Programming


This is a companion discussion topic for the original entry at https://rust.audio/articles/useful-resources/
1 Like

I realized that I should have put this together awhile ago instead of spamming the chat with this stuff over and over, sorry for not doing this earlier.

Textbooks

  • Designing Audio Effects in C++ - Will Pirkle
    • Great DSP theory, only math background needed is high school trig/algebra
    • Code examples in C++
  • Designing Software Synthesizer plugins in C++ - Will Pirkle
    • Strongly recommend reading the FX book first, but the code is more in line with the first edition
    • Strong chapter on virtual analog filters.
    • Code examples in C++
  • Applied Digital Signal Processing - Manolakis & Ingle
    • Code examples in MATLAB, almost everything is covered by GNU Octave’s signal package
    • Great overview of the FFT, sample rate conversion, and FIR filter design theory
    • Heavy on the math, but good practice problems
    • Includes a decent chapter on statistical signal processing
  • Discrete Time Signal Processing - Oppenheim & Schafer
    • the DSP bible
  • A Digital Signal Processing Primer
    • Good beginner textbook, more or less a “getting started” guide for audio DSP
  • Digital Audio Signal Processing - Zölzer
    • No code examples, but strong theory
    • Great chapter on IIR filter designs and discussion of topologies
  • DAFX - multiple authors
    • aka the digital audio cookbook, just about all you need for music signal processing
  • The Art of VA Filter Design - Vadim Zavalishin
    • Sort of the jumping off point for “zero delay feedback” (ZDF) filters (terrible name), very useful

Journals

Journal research tip: If you can’t afford access, be sure to search for the paper title in google first, many authors will host the PDFs of their publications on their own pages.

Links

Forums

Non-Rust stuff that’s still useful

  • Intel IPP
    • C lib that’s more or less impossible to beat in performance, esp. for the FFT
    • on crates.io
  • FFTW
    • the “fastest fourier transform in the west”
    • C lib for the FFT, hard to beat in performance
    • Open source, but GPL
    • on crates.io
  • GNU Octave
    • open source alternative to MATLAB
    • signal and control packages have most of the DSP stuff you’ll need

Less audio specific

  • plotters
    • dope plotting library in Rust, useful for developing DSP algorithms if you don’t want to use MATLAB/Octave
  • Agner Fog’s optimization resources
    • the C++ optimization guide is still relevant for hand optimizing Rust code
    • excellent overview of the x86_64 ISA and instruction latency
  • Matt Godbolt’s Compiler Explorer
    • quick and ASM output for rustc with different versions
    • since DSP algorithms are small, it’s very useful for seeing things like auto vectorization
  • criterion
    • easily the best benchmarking solution in Rust today

I’ll update this post if I remember anything

2 Likes