Sndfilter
Algorithms for sound filters, like reverb, dynamic range compression, lowpass, highpass, notch, etc
Install / Use
/learn @velipso/SndfilterREADME
sndfilter
Algorithms for sound filters, like reverb, dynamic range compression, lowpass, highpass, notch, etc.
It's easy to find countless math equations on sound filters, but a bit harder to find simple source code. This library is my attempt at cleaning up and presenting the math-heavy filter algorithms for the programming community.
Please note that I favored simple code over fast code. Hopefully it's made it more understandable.
(0BSD License)
Build Instructions
The ./build script is a simple bash script that compiles the source files using clang. It's
dirt simple, I promise.
Simply run ./build and the executable should be ./tgt/sndfilter.
C++ Support
This project is pure C, but I've left PRs open for those who want C++ support. Check them out, they might save you some time:
Filters
- Reverb (Algorithmic)
- Compressor
- Low-Pass (Cutoff, Resonance)
- High-Pass (Cutoff, Resonance)
- Band-Pass (Frequency, Q)
- Notch/Band-stop (Frequency, Q)
- Peaking (Frequency, Q, Gain)
- All-Pass (Frequency, Q)
- Low Shelf (Frequency, Q, Gain)
- High Shelf (Frequency, Q, Gain)
Implementation
The reverb.c, compressor.c, and biquad.c are the core algorithms.
I do not understand the biquad math, so please don't ask me any questions :-). The core formulas were extracted from Biquad.cpp (Chromium source), and cleaned up a bit to make easier to read.
The compressor came from DynamicsCompressorKernel.cpp (also from Chromium), and cleaned up a bit more. I swapped out the adaptive release curve and simplified the knee calculations. I feel a little more comfortable with that algorithm because there isn't a whole lot of magical math involved.
The reverb effect is a complete rewrite of Freeverb3's Progenitor2 algorithm. It took quite a lot of effort to tear apart the algorithm and rebuild it, but I'm pretty sure it's right.
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
