1
$\begingroup$

Background

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.

Algorithm

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:

enter image description here

Where:

  • 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).

Possibilities

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.

$\endgroup$
  • $\begingroup$ I think Arduino family (maybe Dou) can be considered as easiest. Boards like Raspberry pi of course exist but I do not know if there is a real time OS available for it. $\endgroup$ – MimSaad Jul 23 '18 at 18:27
  • $\begingroup$ Arduino certainly looks interesting. I had a look at the various libraries and it seems like some basic audio filter tools are available which I suppose could be the basis of a more complex custom filter. I'll need to dig further into that one. $\endgroup$ – rjacobs Jul 26 '18 at 3:36
1
$\begingroup$

I would recommend checking out "Design of active noise control system with the TMS320 family" by Sen Kuo [[report link]].

TMS320 chips are specifically designed to perform various ANC tasks. In the report, they even provide code for programming LMS and FxLMS.

In a lot of the literature on real-time ANC, the control system is implemented using these chip sets. So in my opinion, these chips would be a good place to start. Alternatively, I'm sure this system could be implemented with a variety of microcontrollers, but I am not aware of any other hardware specifically designed for ANC.

Side note: I would consider looking into the leaky FxLMS algorithm as well. It's no more complex than regular FxLMS, but provides more stability to the adaptive algorithm (although reduces the steady state performance). The leakage term is typically necessary in real-time practical control systems.

$\endgroup$
  • $\begingroup$ Thanks @Jbean. I had come across that report previously, but as I am new to this domain, it was hard to filter it out from all the other related academic papers on the topic. As it was an older report I am have bypassed it thinking the hardware options had changed since its publication. Anyway, I'll will highlight it as a reference now. Also, thanks for the note on the "leaky" factor. All practical notes like that are very much appreciated! I just noticed that the algorithm available for the SigmaDSP Audio Processors does include a variable for that too (bit.ly/2MCEI8N). $\endgroup$ – rjacobs Aug 12 '18 at 15:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.