SigmaStudio Adaptive Mixer?
Hello,
I have been using the ADAU1761 Eval board and the latest SigmaStudio for a couple of months now to try and implement an adaptive noise cancellation with 2 digital microphones as audio inputs. This noise canceling is part of me and my 5-Person Senior Design team at Georgia Tech's school of Electrical Engineering. We have 2 weeks before we must present the final demonstration. So, a quick resolution to this question is greatly appreciated.
About a month ago, I thought I had found a breakthrough when I discovered this SigmaStudio Help pdf from 2006 which describes 2 different "Adaptive Mixer" blocks within the SigmaStudio library. Those blocks however, appear to be gone from the latest SigmaStudio version. The relevant part of that PDF can be found attached.
Now, To work around that we have just recently implemented an adaptive filter from the raw building blocks, (using MatLab to model the filter and translating over the blocks from the MatLab/Simulink DSP filter building tools to SigmaStudio) but it is very inconsistent. When using sine wave tones as controlled inputs, it seems to work perfectly sometimes (quite at random) and not work at all most of the time. It relies on the "Signal Subtract" basic DSP block to remove the calculated noise. From what we are hearing, when the filter isn't working, my team thinks the "signal subtract" might be actually adding the noise to the output signal instead of taking it away.
Can someone please provide guidance to where I can find/acquire the Adaptive Mixer blocks mentioned in the 2006 PDF? If not, can someone please provide insight as to why the "signal subtract" might be adding signals instead? I will try to get a copy of the SigmaStudio file and post it here tomorrow to provide further reference to our current algorithm.
Thank you,
-Mark-
Audio Signal Processors
sigmastudio
SigmaDSP Audio Processors
evaluationboard
adau1761
SigmaDSP
Show More
The adaptive mixer blocks are currently not supported in SigmaStudio, so these won't be a solution for your design.
I'm not aware of any problems with using the signal subtract block. If you are trying to remove noise from a signal by subtracting from the original, you need to be sure that the original signal and the filtered signal stay as close to in phase with each other as possible. If the phase relationship between the two is not constant, then your subtraction operation could remove the filtered signal (when they are in phase), but add the signals together when they are out of phase.
Do you think you could provide an example SigmaStudio project in which you're seeing these problems with the block?
Here (attached) is the current SigmaStudio project file. I have added a couple of comments to show you what you are looking at.
Also, the sampling frequency must stay at 11KHz with this set of 11 loop block repetitions.
If you can inform me as to how we can keep the 2 inputs to the signal subtract block in phase, that would be nice.
(Also, the hi-pass filter early in the flow is a placeholder for a wind-removal filter which we have been having 'clicking' issues with. I'll ask that as a separate discussion question)
Every delay and feedback block in your design here is adding a 1-sample delay to the signal in your adaptive filter algorithm. I believe that in order to get good phase matching between the adaptive signal and the unprocessed signal, you will need to compensate with an equivalent delay in the unprocessed signal path. You should determine the total delay that you are adding to the lower path and put the same delay in the upper path. The phase shift of this fixed delay will increase at higher frequencies, so there will likely be an upper limit to frequencies that you'll be able to cancel with the adaptive filter path.
I also noticed that your input tone blocks were set to the incorrect sampling rate. Once you set the system fs to 11 kHz, you need to also click the fs button to the left of that box to set the system sampling rate of the other blocks. There is a detailed description on this EngineerZone post.
I had a look at the project file. Each of the adaptive blocks appears to have a circular reference. E.g: C = C + B
Which means if you use a DSP readback block at the output it can only ever be at its maximum.
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.