cinder / Cinder

Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.
http://libcinder.org
Other
5.28k stars 939 forks source link

Add EqualizerNode (a FilterNode which supports an abritrary number of… #2297

Closed mincequi closed 11 months ago

mincequi commented 1 year ago

EqualizerNode is a FilterNode which supports an arbitrary number of filters, while the FilterBiquadNode only supports a single filter.

This also fixes quite a few bugs in shelving and low/high pass filters... Please tell me what you think

richardeakin commented 1 year ago

Hi @mincequi, sorry for the delay in looking at these PRs and thank you for submitting them.

I'm open to adding an EqualizerNode as a convenience over building a node network from what is already provided in FilterNode.h/cpp, however I think we should keep an addition like that separate from any bug fixes. Can you explain what you had to fix in Biquad.cpp? I took a brief look and saw some variable renames but I don't see any change in functionality.

Personally, I think it would be fine for a conglomerate node like this to live in FilterNode.cpp, since there are no extra dependencies and it also keeps the number of files / translation units down.

Last, it would be nice to get some testing code for any new audio functionality, and to make sure there are no regressions. I'll admit that they've fallen a bit behind with all the Visual Studio updates, but I'm in the process of getting all the tests working again as they did before in this branch, I'll PR it into main when it's ready.