Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ladder Filter #122

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

swesterfeld
Copy link
Collaborator

This is the implementation of a Moog-style lowpass ladderfilter with saturation and 2x oversampling. The number of poles is configurable . Filter modes are available for 6db/octave, 12db/octave, 18db/octave and 24db/octave.

I don't have any TODOs left right now, so this could either be the final version, or at least fairly close to the final version. I'm discarding the commit history here, this is not so interesting. The necessary changes for the resampler (#121) are included in this branch.

Right now the resampling is done with the FPU (as plugins/bseblockutils.cc is not getting compiled), but that is still fast enough for daily use. I've also noticed that BSE doesn't enforce SSE-alignment of input/output buffers, so right now SSE support is broken; if that were fixed, performance would be a bit better.

Of course this depends a bit on which inputs/outputs are connected, but for the common case one (stereo) ladder filter takes

  • 0.4% CPU usage with FPU resampling
  • 0.33% CPU usage with SSE resampling

This is a resonant lowpass ladder filter, the number of poles can be adjusted
to set the filter steepness.

Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
Signed-off-by: Stefan Westerfeld <stefan@space.twc.de>
@tim-janik
Copy link
Owner

It'd be great to have this ported to the new AudioSignal::Processor API and also be able to enable key-tracking

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants