I am working on #Beamforming of linear array of microphones and one of my tasks is to provide real time audio of user selected beams. Currently, i am working on its MATLAB simulations. One problem i am facing is the audio 'clicks/glitches' when audio is shifted from one beam to other beam. On analysis, it was found that this problem occurs because of phase and gain differences (breaks) of signal chunks (e.g. 200 ms of duration) when shifted from one beam to other.
I require to smooth out the audio transition when shifted from one beam to other. Is there any sort of filter or some other solution for it please?
Instead of switching, you can "cross-fade" over some time interval, such as 100ms. Linear amplitude ramps are pretty standard, but I would probably use half a raised cosine (half a Hann window).
Thanks for help. I am unfortunately not familiar with cross fading. Can you kindly indicate some useful literature in this regard?
Say you have two channels. You want to switch power from channel 1 to channel 2. You start by multiplying by \( p = \cos(2\pi f \Delta t) \) for channel 1 and \( (1 - p) \) for channel 2. \( f \) determines how fast you transition and \( \Delta t \) determines how many steps you take. This is a cross fade, where the power of one side is reduced at the same rate the other side is increased. You can use linear too, but this is smoother because the derivative of the change is zero at start and end.
Thanks Dr Mike for help. I will try to implement this technique. Will this cater(smooth) for 'clicks' due to phase mismatch when shifting from one beam/channel to other one or it will smooth only gain mismatch?
"Phase mismatch" may not be what's happening. If you consider that one beamformer output is #1 and the other is #2 then they are simply NOT the same. So, any switch will cause a click due to the likely abrupt change in the signal. A cross-fade will eiliminate this abrupt change. It won't do anything about gain.