SAF
Loading...
Searching...
No Matches
saf_vbap.c File Reference

Public source for the VBAP/MDAP module (SAF_VBAP_MODULE) More...

#include "saf_vbap.h"
#include "saf_vbap_internal.h"

Go to the source code of this file.

Macros

#define ENABLE_VBAP_DEBUGGING_CODE   0
 Enable to also export VBAP gain tables to a .txt file (for debugging purposes)
 

Functions

void generateVBAPgainTable3D_srcs (float *src_dirs_deg, int S, float *ls_dirs_deg, int L, int omitLargeTriangles, int enableDummies, float spread, float **gtable, int *N_gtable, int *nTriangles)
 Generates a 3-D VBAP [1] gain table based on specified source and loudspeaker directions, with optional spreading [2].
 
void generateVBAPgainTable3D (float *ls_dirs_deg, int L, int az_res_deg, int el_res_deg, int omitLargeTriangles, int enableDummies, float spread, float **gtable, int *N_gtable, int *nTriangles)
 Generates a 3-D VBAP gain table based on specified loudspeaker directions, with optional spreading [2].
 
void compressVBAPgainTable3D (float *vbap_gtable, int nTable, int nDirs, float *vbap_gtableComp, int *vbap_gtableIdx)
 Compresses a VBAP gain table to use less memory and CPU (by removing the elements which are just zero)
 
void VBAPgainTable2InterpTable (float *vbap_gtable, int nTable, int nDirs)
 Renormalises a VBAP gain table (in-place) so it may be utilised for interpolation of data (for example, powermaps or HRTFs)
 
void generateVBAPgainTable2D_srcs (float *src_dirs_deg, int S, float *ls_dirs_deg, int L, float **gtable, int *N_gtable, int *nPairs)
 Generates a 2-D VBAP gain table based on specified source and loudspeaker directions.
 
void generateVBAPgainTable2D (float *ls_dirs_deg, int L, int az_res_deg, float **gtable, int *N_gtable, int *nPairs)
 Generates a 2-D VBAP gain table based on specified loudspeaker directions.
 
void getPvalues (float DTT, float *freq, int nFreq, float *pValues)
 Calculates the frequency dependent pValues, which can be applied to ENERGY normalised VBAP gains, to compensate for the room effect on the perceived loudness fluctuations of sources when panning between loudspeakers.
 
void findLsTriplets (float *ls_dirs_deg, int L, int omitLargeTriangles, float **out_vertices, int *numOutVertices, int **out_faces, int *numOutFaces)
 Computes the 3D convex-hull of a spherical grid of loudspeaker directions.
 
void invertLsMtx3D (float *U_spkr, int *ls_groups, int N_group, float **layoutInvMtx)
 Inverts a 3x3 loudspeaker matrix.
 
void getSpreadSrcDirs3D (float src_azi_rad, float src_elev_rad, float spread, int num_src, int num_rings_3d, float *U_spread)
 Computes a set of points which surround the source direction given a specific degree of spread.
 
void vbap3D (float *src_dirs, int src_num, int ls_num, int *ls_groups, int nFaces, float spread, float *layoutInvMtx, float **GainMtx)
 Calculates 3D VBAP gains given pre-computed loudspeaker triangles for each source direction.
 
void findLsPairs (float *ls_dirs_deg, int L, int **out_pairs, int *numOutPairs)
 Calculates loudspeaker pairs for a circular grid of loudspeaker directions.
 
void invertLsMtx2D (float *U_spkr, int *ls_pairs, int N_pairs, float **layoutInvMtx)
 Inverts a 2x2 loudspeaker matrix.
 
void vbap2D (float *src_dirs, int src_num, int ls_num, int *ls_pairs, int N_pairs, float *layoutInvMtx, float **GainMtx)
 Calculates 2D VBAP gains for pre-calculated loudspeaker pairs and predefined source positions.
 

Detailed Description

Public source for the VBAP/MDAP module (SAF_VBAP_MODULE)

VBAP functions largely derived from the MATLAB library found in [1].

See also
[1] https://github.com/polarch/Vector-Base-Amplitude-Panning Copyright (c) 2015, Archontis Politis, BSD-3-Clause License
Author
Leo McCormack
Date
02.10.2017
License
ISC

Definition in file saf_vbap.c.

Macro Definition Documentation

◆ ENABLE_VBAP_DEBUGGING_CODE

#define ENABLE_VBAP_DEBUGGING_CODE   0

Enable to also export VBAP gain tables to a .txt file (for debugging purposes)

Definition at line 38 of file saf_vbap.c.