Skip to main content
Skip table of contents

SbBeamformerV2

Overview

Frequency domain based beamformer

Discussion

This module implements a frequency domain based beamformer. The module has a multichannel input pin "in" which correspond to N microphone signals. The microphone signals must already be in the frequency domain (e.g., after an FFT or WOLA filterbank). The module has an internal table of complex filter coefficients of size [numMics, numBins]. The module multiples each microphone signal by complex coefficients and then sums across all microphone channels. This corresponds to filtering each microphone signal and summing the results.

The module has the ability to store multiple coefficient sets. The argument NUMBEAMS specifies how many different beams to store. The first input pin index is an integer value and specifies which set of beamformer coefficients to use. The index is zero based and must be in the range [0 NUMBEAMS-1]. The function will automatically clip index so that it is in a valid range.

By default, the module outputs a single beam. The third argument OUTPUTALL allows you to output all beams simultaneously. In this case, the module will have a single multichannel output pin with NUMBEAMS channels. In the multichannel case, the input index pin is removed.

The sixth argument OUTPUTNOISEGAIN, when set to 1, calculates the noise gain of the beamformer of each bin. If OUTPUTALL == 0, the noise gain corresponds to the current index of the beamformer If OUTPUTALL == 1, the noise gain of all stored beam coefficients will be outputted, with each channel corresponding to each coefficient set.

The coefficients are ordered as follows. The first 2 * numBins * numMics coefficients correspond to the first beamformer. The coefficient are ordered first based on input channel and then on frequency bin. The coefficient are interleaved real / imag values. The beamformer coefficients can be loaded using the function sb_beamformer_config.m

Type Definition

CODE
typedef struct _ModuleSbBeamformerV2
{
    ModuleInstanceDescriptor instance;            // Common Audio Weaver module instance structure
    INT32 numBeams;                               // Number of beams allocated.
    INT32 numCoeffs;                              // Number of coefficients to allocate
    INT32 numBins;                                // Number of bins this beamformer is calculating on
    FLOAT32* coeffs;                              // Complex beamformer coefficients.
    FLOAT32* noiseGain;                           // Beamformer noise gain - real numbers.
} ModuleSbBeamformerV2Class;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

numBeams

int

const

1

1

Unrestricted

numCoeffs

int

const

1

132

Unrestricted

numBins

int

const

1

1

Unrestricted

coeffs

float*

parameter

0

[2 x 33]

Unrestricted

noiseGain

float*

derived

1

[1 x 33]

Unrestricted

Pins

Input Pins

Name: index

Description: Selects beam

Data type: int

Channel range: 1

Block size range: Unrestricted

Sample rate range: Unrestricted

Complex support: Real

Name: in

Description: Complex data

Data type: float

Channel range: 2

Block size range: Unrestricted

Sample rate range: Unrestricted

Complex support: Complex

Output Pins

Name: out

Description: Beam output

Data type: float

Name: noiseGain

Description: Noise Gain of this Beamformer

Data type: float

MATLAB Usage

File Name: sb_beamformer_v2_module.m

CODE
 M = sb_beamformer_v2_module(NAME, NUMBEAMS, OUTPUTALL, NUMBINS, NUMMICS, FFTSIZE, BFTYPE, OUTPUTNOISEGAIN)
 Creates a frequency domain based beamformer.  The module operates
 on complex subband data (complex in and complex out).  The WOLA
 filterbanks go outside of this module.  Arguments:
    NAME - name of the module.
    NUMBEAMS - number of look directions [default = 6]
    OUTPUTALL - Boolean which specifies that the module should
       output all beams at once (default = 0).
    NUMBINS - the default number of bins this subband beam former will
    use.  This is the initial value and the final NUMBINS is taken from
    the input wire.
    NUMMICS - value with specifies the number of microphones in this
    subband beamformer.
    FFTSIZE - size of the WOLA FFT which will be used with this module.
    If empty (the default), then the module will try and infer the FFTSIZE
    based on NUMBINS.  For example, if NUMBINS = 65 then the FFTSIZE is
    assumed to be 128.
    BFTYPE - specifies whether the basic 2 mic inspector (=0) or the
             advanced inspector (=1) will be used in the Designer GUI.
 The first input pin is an index which specifies which beam
 to output.  This is zero based in the range [0 NUMBEAMS-1].  The
 second input is the complex data.
 When OUTPUTALL==1, then the module will have NUMBEAMS output pins
 each outputing a different beam direction.
 WHEN OUTPUTNOISEGAIN==1, then the module will have an additional output
 pin that will output the beamformer noise gain on a bin by bin basis.
 The output type of this output is the same out the BF output.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.