I'm working on a hobby project to reduce ambient low-frequency noise generated from HVAC equipment within a small area of a room. The noise is predictable and concentrated between 55Hz and 120Hz. Aggressive passive noise attenuation efforts have failed at these frequencies, and so ANC may be the only option. I have basic analog mixing equipment, microphones and speakers, and am now researching DSP and related hardware requirements for ANC.
My preliminary research has led me to believe that a Filtered Least Mean Squared (FxLMS) algorithm may be the best choice for an application like this. Because it would be implemented in a "open" space, my understanding is that the secondary path filter of the FxLMS (as opposed to a simple LMS) would be critical. The related diagram would be:
- x(n) is the reference signal recorded via a mic near the HVAC noise source, fed through a preamp and available as a line-level signal.
- e(n) is the error signal recorded via a mic in the cancellation area, fed through a preamp and available as a line-level signal.
- y(n) is the cancellation signal that will be sent as a line-level signal to a powered sub with an integrated LPF near the cancellation area (filter output).
- d(n) is the ambient noise to be cancelled after traveling from the source the the cancellation area.
My understanding is that this is conceptually a pretty straightforward ANC setup, and it is referenced in some detail in numerous publicly available resources (e.g. here and here). However, what is not clear to me is the hardware requirements to implement the DSP filter part (the blue box).
I'm assuming that the real-time synchronization between the sampled x(n)/e(n) signals and the final y(n) output requires a specialized DSP board. I suppose that the algorithm itself could be programmed in Matlab or C (samples are available), but refining, compiling and embedding the result onto a board from scratch seems like something that may require expertise that I do not currently have. So I'm wondering if there are more "black box" solutions available somewhere for this sort of thing.
The closest things I could find are the SigmaDSP Audio Processors, possibly the evaluation versions of this board or this one. If I'm understanding it correctly these come with a huge library of pre-compiled filters that can be chained together and mapped to various I/O via a GUI. One of the available filters seems to be an FxLMS (source), but it's hard to tell which SigmaDSP boards are capable of running that filter or if there are other special considerations that I need to be aware of given an application like this.
So on the hardware side what would be the "lowest barrier to entry" for an application like this? Though I have a background in systems engineering, I do not have extensive experience in audio signal processing. I'm also wondering if this is the kind of problem space that may require significant additional background theory knowledge before tackling.