SAF
Loading...
Searching...
No Matches
sldoa_internal.h File Reference

A spatially-localised active-intensity (SLAI) based direction-of- arrival estimator (SLDoA) More...

#include "sldoa.h"
#include "saf.h"
#include "saf_externals.h"

Go to the source code of this file.

Data Structures

struct  sldoa_data
 Main struct for sldoa. More...
 

Macros

#define SLDOA_FRAME_SIZE   ( 512 )
 Framesize, in time-domain samples.
 
#define ORDER2NUMSECTORS(L)   ( L*L )
 Macro to convert SH order to number of sectors.
 
#define HOP_SIZE   ( 128 )
 STFT hop size.
 
#define HYBRID_BANDS   ( HOP_SIZE + 5 )
 hybrid mode incurs an additional 5 bands

 
#define TIME_SLOTS   ( SLDOA_FRAME_SIZE / HOP_SIZE )
 Processing relies on fdHop = 16.
 
#define MAX_NUM_SECTORS   ( 64 )
 maximum number of sectors, TODO: expand beyond 64 (which is the max possible in the spherecovering grids we currently use)
 
#define NUM_DISP_SLOTS   ( 2 )
 Number of display slots; needs to be at least 2.
 

Functions

void sldoa_setCodecStatus (void *const hSld, CODEC_STATUS newStatus)
 Sets codec status (see CODEC_STATUS enum)
 
void sldoa_initAna (void *const hSld)
 Intialises the codec variables, based on current global/user parameters.
 
void sldoa_initTFT (void *const hSld)
 Initialise the filterbank used by sldoa.
 
void sldoa_estimateDoA (float_complex **SHframeTF, int anaOrder, float_complex *secCoeffs, float doa[MAX_NUM_SECTORS][TIME_SLOTS][2], float energy[MAX_NUM_SECTORS][TIME_SLOTS])
 Estimates the DoA using the active intensity vectors derived from spatially localised sectors, as in [1,2].
 

Detailed Description

A spatially-localised active-intensity (SLAI) based direction-of- arrival estimator (SLDoA)

VBAP gain patterns are imposed on the spherical harmonic signals, such that the DoA can be estimated in a spatially-constrained region; thus mitigating the effect of interferes and reflections arriving from other directions. The DoA is estimated per sector for each frequency band.

The algorithms within sldoa were developed in collaboration with Symeon Delikaris-Manias and Angelo Farina, and are explained in more detail in [1,2]

See also
[1] McCormack, L., Delikaris-Manias, S., Politis, A., Pavlidi, D., Farina, A., Pinardi, D. and Pulkki, V., 2019. Applications of Spatially Localized Active-Intensity Vectors for Sound-Field Visualization. Journal of the Audio Engineering Society, 67(11), pp.840-854.
[2] McCormack, L., Delikaris-Manias, S., Farina, A., Pinardi, D., and Pulkki, V., "Real-time conversion of sensor array signals into spherical harmonic signals with applications to spatially localised sub-band sound-field analysis," in Audio Engineering Society Convention 144, Audio Engineering Society, 2018.
Author
Leo McCormack
Date
18.10.2017
License
ISC

Definition in file sldoa_internal.h.

Macro Definition Documentation

◆ HOP_SIZE

#define HOP_SIZE   ( 128 )

STFT hop size.

Definition at line 69 of file sldoa_internal.h.

◆ HYBRID_BANDS

#define HYBRID_BANDS   ( HOP_SIZE + 5 )

hybrid mode incurs an additional 5 bands

Definition at line 70 of file sldoa_internal.h.

◆ MAX_NUM_SECTORS

#define MAX_NUM_SECTORS   ( 64 )

maximum number of sectors, TODO: expand beyond 64 (which is the max possible in the spherecovering grids we currently use)

Definition at line 72 of file sldoa_internal.h.

◆ NUM_DISP_SLOTS

#define NUM_DISP_SLOTS   ( 2 )

Number of display slots; needs to be at least 2.

On slower systems that skip frames, consider adding more slots.

Definition at line 73 of file sldoa_internal.h.

◆ ORDER2NUMSECTORS

#define ORDER2NUMSECTORS ( L)    ( L*L )

Macro to convert SH order to number of sectors.

Definition at line 68 of file sldoa_internal.h.

◆ SLDOA_FRAME_SIZE

#define SLDOA_FRAME_SIZE   ( 512 )

Framesize, in time-domain samples.

Definition at line 65 of file sldoa_internal.h.

◆ TIME_SLOTS

#define TIME_SLOTS   ( SLDOA_FRAME_SIZE / HOP_SIZE )

Processing relies on fdHop = 16.

Definition at line 71 of file sldoa_internal.h.

Function Documentation

◆ sldoa_estimateDoA()

void sldoa_estimateDoA ( float_complex ** SHframeTF,
int anaOrder,
float_complex * secCoeffs,
float doa[MAX_NUM_SECTORS][TIME_SLOTS][2],
float energy[MAX_NUM_SECTORS][TIME_SLOTS] )

Estimates the DoA using the active intensity vectors derived from spatially localised sectors, as in [1,2].

Note
If anaOrder is 1, then the algorithm reverts to the standard active- intensity based DoA estimation.
Parameters
[in]SHframeTFInput SH frame; MAX_NUM_SH_SIGNALS x TIME_SLOTS
[in]anaOrderAnalysis order (1:AI, 2+: SLAI)
[in]secCoeffsSector coefficients for this order
[out]doaResulting DoA estimates per timeslot and sector
[out]energyResulting sector energies per time slot
See also
[1] McCormack, L., Delikaris-Manias, S., Farina, A., Pinardi, D., and Pulkki, V., “Real-time conversion of sensor array signals into spherical harmonic signals with applications to spatially localised sub-band sound-field analysis,” in Audio Engineering Society Convention 144, Audio Engineering Society, 2018.
[2] McCormack, L., Delikaris-Manias, S., Politis, A., Pavlidi, D., Farina, A., Pinardi, D. and Pulkki, V., 2019. Applications of Spatially Localized Active-Intensity Vectors for Sound-Field Visualization. Journal of the Audio Engineering Society, 67(11), pp.840-854.

Definition at line 145 of file sldoa_internal.c.

◆ sldoa_initAna()

void sldoa_initAna ( void *const hSld)

Intialises the codec variables, based on current global/user parameters.

The formulae for calculating the sector coefficients can be found in [1,2].

See also
[1] McCormack, L., Delikaris-Manias, S., Farina, A., Pinardi, D., and Pulkki, V., “Real-time conversion of sensor array signals into spherical harmonic signals with applications to spatially localised sub-band sound-field analysis,” in Audio Engineering Society Convention 144, Audio Engineering Society, 2018.
[2] McCormack, L., Delikaris-Manias, S., Politis, A., Pavlidi, D., Farina, A., Pinardi, D. and Pulkki, V., 2019. Applications of Spatially Localized Active-Intensity Vectors for Sound-Field Visualization. Journal of the Audio Engineering Society, 67(11), pp.840-854.

Definition at line 60 of file sldoa_internal.c.

◆ sldoa_initTFT()

void sldoa_initTFT ( void *const hSld)

Initialise the filterbank used by sldoa.

Note
Call this function before sldoa_initAna()

Input Arguments: hSld - sldoa handle

Definition at line 127 of file sldoa_internal.c.

◆ sldoa_setCodecStatus()

void sldoa_setCodecStatus ( void *const hSld,
CODEC_STATUS newStatus )

Sets codec status (see CODEC_STATUS enum)

Definition at line 49 of file sldoa_internal.c.