SAF
|
Files | |
file | saf_utilities.h |
Main header for the utilities module (SAF_UTILITIES_MODULE) | |
file | saf_utility_bessel.c |
A collection of routines for computing spherical and cylindrical Bessel and Hankel functions, including their derivatives. | |
file | saf_utility_bessel.h |
A collection of routines for computing spherical and cylindrical Bessel and Hankel functions, including their derivatives. | |
file | saf_utility_complex.c |
Contains wrappers for handling complex numbers across both C99-compliant compilers and Microsoft Visual Compiler (MSVC) | |
file | saf_utility_complex.h |
Contains wrappers for handling complex numbers across both C99-compliant compilers and Microsoft Visual Compiler (MSVC) | |
file | saf_utility_decor.c |
A collection of signal decorrelators. | |
file | saf_utility_decor.h |
A collection of signal decorrelators. | |
file | saf_utility_dvf.c |
Distance variation function filter coefficient data [1]. | |
file | saf_utility_dvf.h |
Distance variation function filter coefficient data [1]. | |
file | saf_utility_fft.c |
Wrappers for optimised discrete/fast Fourier transform (FFT) routines. | |
file | saf_utility_fft.h |
Wrappers for optimised discrete/fast Fourier transform (FFT) routines. | |
file | saf_utility_filters.c |
A collection of IIR/FIR filter and filterbank designs. | |
file | saf_utility_filters.h |
A collection of IIR/FIR filter and filterbank designs. | |
file | saf_utility_geometry.c |
A collection of computational geometry related functions. | |
file | saf_utility_geometry.h |
A collection of computational geometry related functions. | |
file | saf_utility_latticeCoeffs.c |
Lattice allpass coefficients which are useful for decorrelation. | |
file | saf_utility_loudspeaker_presets.c |
A collection of loudspeaker array directions and (nearly) uniform spherical grids. | |
file | saf_utility_loudspeaker_presets.h |
A collection of loudspeaker array directions and (nearly) uniform spherical grids. | |
file | saf_utility_matrixConv.c |
Matrix and multi-channel convolvers. | |
file | saf_utility_matrixConv.h |
Matrix and multi-channel convolvers. | |
file | saf_utility_misc.c |
A collection of miscellaneous functions. | |
file | saf_utility_misc.h |
A collection of miscellaneous functions. | |
file | saf_utility_pitch.c |
A collection of pitch shifting algorithms. | |
file | saf_utility_pitch.h |
A collection of pitch shifting algorithms. | |
file | saf_utility_qmf.c |
An implementation of the complex Quadrature Mirror Filterbank (QMF) described in [1]. | |
file | saf_utility_qmf.h |
An implementation of the complex Quadrature Mirror Filterbank (QMF) described in [1]. | |
file | saf_utility_sensorarray_presets.c |
A collection of microphone array sensor directions. | |
file | saf_utility_sensorarray_presets.h |
A collection of microphone array sensor directions. | |
file | saf_utility_sort.c |
A collection of useful sorting functions. | |
file | saf_utility_sort.h |
A collection of useful sorting functions. | |
file | saf_utility_veclib.c |
Wrappers for optimised linear algebra routines, utilising CBLAS and LAPACK, and/or SIMD intrinsics. | |
file | saf_utility_veclib.h |
Wrappers for optimised linear algebra routines, utilising CBLAS and LAPACK, and/or SIMD intrinsics. | |
Data Structures | |
struct | quaternion_data |
Quaternion data structure. More... | |
struct | voronoi_data |
Data structure for Voronoi diagrams. More... | |
Macros | |
#define | NUM_EARS 2 |
2 (true for most humans) | |
#define | SAF_MIN(a, b) (( (a) < (b) ) ? (a) : (b)) |
Returns the minimum of the two values. | |
#define | SAF_MAX(a, b) (( (a) > (b) ) ? (a) : (b)) |
Returns the maximum of the two values. | |
#define | SAF_CLAMP(a, min, max) (SAF_MAX(min, SAF_MIN(max, a))) |
Ensures value "a" is clamped between the "min" and "max" values. | |
#define | SAF_TRUE ( 1 ) |
Boolean true. | |
#define | SAF_FALSE ( 0 ) |
Boolean false. | |
#define | SAF_PI ( 3.14159265358979323846264338327950288f ) |
pi constant (single precision) | |
#define | SAF_PId ( 3.14159265358979323846264338327950288 ) |
pi constant (double precision) | |
#define | SAF_ISPOW2(x) (((x & ~(x-1))==x) ? x : 0) |
Returns 0 if "x" is not a power of 2. | |
#define | ISEVEN(n) ((n%2 == 0) ? 1 : 0) |
Returns 1 if "n" is even valued, and 0 if it is not. | |
#define | ISODD(n) ((n%2 != 0) ? 1 : 0) |
Returns 1 if "n" is odd valued, and 0 if it is not. | |
#define | SQRT4PI ( 3.544907701811032f ) |
sqrt(4pi) (single precision) | |
#define | FOURPI ( 12.566370614359172f ) |
4pi (single precision) | |
#define | ELEV2INCL(E) ( (SAF_PI/2.0f - E) ) |
Converts elevation to inclincation, (in radians) | |
#define | DEG2RAD(x) (x * SAF_PI / 180.0f) |
Converts degrees to radians. | |
#define | RAD2DEG(x) (x * 180.0f / SAF_PI) |
Converts radians to degrees | |
#define | MKSTRING_(s) #s |
Used to make strings inside of Macros. | |
#define | MKSTRING(s) MKSTRING_(s) |
Used to make strings inside of Macros. | |
#define | SAF_UNUSED(x) (void)(x) |
Indicates that a particular variable is unused (& squelches any warnings) | |
#define | saf_print_warning(message) |
Macro to print a warning message along with the filename and line number. | |
#define | saf_print_error(message) |
Macro to print a error message along with the filename and line number. | |
#define | saf_assert(x, message) |
Macro to make an assertion, along with a string explaining its purpose. | |
#define | SAF_CASSERT(predicate, file) _impl_CASSERT_LINE(predicate,__LINE__,file) |
A compile time assertion check. | |
#define | _impl_PASTE(a, b) a##b |
CASSERT helper macro. | |
#define | _impl_CASSERT_LINE(predicate, line, file) typedef char _impl_PASTE(assertion_failed_##file##_,line)[2*!!(predicate)-1]; |
CASSERT helper macro. | |
Functions | |
void | bessel_Jn (int N, double *z, int nZ, double *J_n, double *dJ_n) |
Computes the values of the (cylindrical) Bessel function of the first kind (Jn) and it's derivative (dJn) | |
void | bessel_Jn_ALL (int N, double *z, int nZ, double *J_n, double *dJ_n) |
Computes the (cylindrical) Bessel function of the first kind (Jn) and their derivatives (dJn) for ALL orders from 0 to N. | |
void | bessel_Yn (int N, double *z, int nZ, double *Y_n, double *dY_n) |
Computes the values of the (cylindrical) Bessel function of the second kind (Yn) and it's derivative (dYn) | |
void | bessel_Yn_ALL (int N, double *z, int nZ, double *Y_n, double *dY_n) |
Computes the (cylindrical) Bessel function of the second kind (Yn) and their derivatives (dYn) for ALL orders from 0 to N. | |
void | hankel_Hn1 (int N, double *z, int nZ, double_complex *Hn1_n, double_complex *dHn1_n) |
Computes the values of the (cylindrical) Hankel function of the first kind (Hn1) and it's derivative (dHn1) | |
void | hankel_Hn1_ALL (int N, double *z, int nZ, double_complex *Hn1_n, double_complex *dHn1_n) |
Computes the (cylindrical) Hankel function of the first kind (Hn1) and their derivatives (dHn1) for ALL orders from 0 to N. | |
void | hankel_Hn2 (int N, double *z, int nZ, double_complex *Hn2_n, double_complex *dHn2_n) |
Computes the values of the (cylindrical) Hankel function of the second kind (Hn2) and it's derivative (dHn2) | |
void | hankel_Hn2_ALL (int N, double *z, int nZ, double_complex *Hn2_n, double_complex *dHn2_n) |
Computes the (cylindrical) Hankel function of the second kind (Hn2) and their derivatives (dHn2) for ALL orders from 0 to N. | |
int | bessel_jn (int N, double *z, int nZ, double *j_n, double *dj_n) |
Computes the values of the spherical Bessel function of the first kind (jn) and it's derivative (djn) | |
void | bessel_jn_ALL (int N, double *z, int nZ, int *maxN, double *j_n, double *dj_n) |
Computes the spherical Bessel function of the first kind (jn) and their derivatives (djn) for ALL orders from 0 to N. | |
int | bessel_in (int N, double *z, int nZ, double *i_n, double *di_n) |
Computes the values of the modified spherical Bessel function of the first kind (in) and it's derivative (din) | |
void | bessel_in_ALL (int N, double *z, int nZ, int *maxN, double *i_n, double *di_n) |
Computes the modified spherical Bessel function of the first kind (in) and their derivatives (din) for ALL orders from 0 to N. | |
int | bessel_yn (int N, double *z, int nZ, double *y_n, double *dy_n) |
Computes the values of the spherical Bessel function of the second kind (yn) and it's derivative (dyn) | |
void | bessel_yn_ALL (int N, double *z, int nZ, int *maxN, double *y_n, double *dy_n) |
Computes the spherical Bessel function of the second kind (yn) and their derivatives (dyn) for ALL orders from 0 to N. | |
int | bessel_kn (int N, double *z, int nZ, double *k_n, double *dk_n) |
Computes the values of the modified spherical Bessel function of the second kind (kn) and it's derivative (dkn) | |
void | bessel_kn_ALL (int N, double *z, int nZ, int *maxN, double *k_n, double *dk_n) |
Computes the modified spherical Bessel function of the second kind (kn) and their derivatives (dkn) for ALL orders from 0 to N. | |
int | hankel_hn1 (int N, double *z, int nZ, double_complex *h_n1, double_complex *dh_n1) |
Computes the values of the spherical Hankel function of the first kind (hn1) and it's derivative (dhn1) | |
void | hankel_hn1_ALL (int N, double *z, int nZ, int *maxN, double_complex *h_n1, double_complex *dh_n1) |
Computes the spherical Hankel function of the first kind (hn1) and their derivatives (dhn1) for ALL orders from 0 to N. | |
int | hankel_hn2 (int N, double *z, int nZ, double_complex *h_n2, double_complex *dh_n2) |
Computes the values of the spherical Hankel function of the second kind (hn2) and it's derivative (dhn2) | |
void | hankel_hn2_ALL (int N, double *z, int nZ, int *maxN, double_complex *h_n2, double_complex *dh_n2) |
Computes the spherical Hankel function of the second kind (hn2) and their derivatives (dhn2) for ALL orders from 0 to N. | |
void | getDecorrelationDelays (int nChannels, float *freqs, int nFreqs, float fs, int maxTFdelay, int hopSize, int *delayTF) |
Returns delay values for multiple channels per frequency, such that once applied to an input signal (via simple frequency-dependent delay lines), the resulting signal is decorrelated w.r.t the original. | |
void | synthesiseNoiseReverb (int nChannels, float fs, float *t60, float *fcen_oct, int nBands, int flattenFLAG, float **rir_filt, int *rir_len) |
Returns quick and dirty exponentially decaying noise bursts. | |
void | latticeDecorrelator_create (void **phDecor, float fs, int hopsize, float *freqVector, int nBands, int nCH, int *orders, float *freqCutoffs, int nCutoffs, int maxDelay, int lookupOffset, float enComp_coeff) |
Creates an instance of the lattice all-pass-filter-based multi-channel signal decorrelator. | |
void | latticeDecorrelator_destroy (void **phDecor) |
Destroys an instance of the lattice all-pass-filter-based multi-channel signal decorrelator. | |
void | latticeDecorrelator_reset (void *hDecor) |
Sets the internal buffers to zero. | |
void | latticeDecorrelator_apply (void *hDecor, float_complex ***inFrame, int nTimeSlots, float_complex ***decorFrame) |
Applies the lattice all-pass-filter-based multi-channel signal decorrelator. | |
void | transientDucker_create (void **phDucker, int nCH, int nBands) |
Creates an instance of the transient ducker/extractor. | |
void | transientDucker_destroy (void **phDucker) |
Destroys an instance of the transient ducker. | |
void | transientDucker_apply (void *hDucker, float_complex ***inFrame, int nTimeSlots, float alpha, float beta, float_complex ***residualFrame, float_complex ***transientFrame) |
Applies the transient ducker, returning either the "ducked" input frame, or the transient part of the input frame, or both. | |
void | calcDVFCoeffs (float alpha, float rho, float fs, float *b, float *a) |
Calculate the Distance Variation Function (DVF) filter coefficients, as described in [1]. | |
void | interpDVFShelfParams (float theta, float rho, float *iG0, float *iGInf, float *iFc) |
Calculate the shelving filter parameters for the Distance Variation Function filter from the source (ipsilateral) azimuth and distance. | |
void | dvfShelfCoeffs (float g0, float gInf, float fc, float fs, float *b0, float *b1, float *a1) |
Calculate the DVF filter coefficients from shelving filter parameters. | |
void | calcDVFShelfParams (int i, float rho, float *g0, float *gInf, float *fc) |
Calculate the high shelf gains and cutoff parameters, given a azimuth index i and distance rho . | |
void | doaToIpsiInteraural (float azimuth, float elevation, float *alphaLR, float *betaLR) |
Convert a frontal azimuth/elevation to a modified Interaural-Polar coordinate. | |
void | getUniformFreqVector (int fftSize, float fs, float *freqVector) |
Calculates the frequencies (in Hz) of uniformly spaced bins, for a given FFT size and sampling rate. | |
void | fftconv (float *x, float *h, int x_len, int h_len, int nCH, float *y) |
FFT-based convolution of signal 'x' with filter 'h'. | |
void | fftfilt (float *x, float *h, int x_len, int h_len, int nCH, float *y) |
FFT-based convolution for FIR filters. | |
void | hilbert (float_complex *x, int x_len, float_complex *y) |
Computes the discrete-time analytic signal via the Hilbert transform [1]. | |
void | saf_stft_create (void **const phSTFT, int winsize, int hopsize, int nCHin, int nCHout, SAF_STFT_FDDATA_FORMAT FDformat) |
Creates an instance of saf_stft. | |
void | saf_stft_destroy (void **const phSTFT) |
Destroys an instance of saf_stft. | |
void | saf_stft_forward (void *const hSTFT, float **dataTD, int framesize, float_complex ***dataFD) |
Performs the forward-STFT operation for the current frame. | |
void | saf_stft_backward (void *const hSTFT, float_complex ***dataFD, int framesize, float **dataTD) |
Performs the backward-STFT operation for the current frame. | |
void | saf_stft_flushBuffers (void *const hSTFT) |
Flushes the internal buffers with zeros. | |
void | saf_stft_channelChange (void *const hSTFT, int new_nCHin, int new_nCHout) |
Changes the number of input/output channels. | |
void | saf_rfft_create (void **const phFFT, int N) |
Creates an instance of saf_rfft; real<->half-complex (conjugate-symmetric) FFT. | |
void | saf_rfft_destroy (void **const phFFT) |
Destroys an instance of saf_rfft. | |
void | saf_rfft_forward (void *const hFFT, float *inputTD, float_complex *outputFD) |
Performs the forward-FFT operation; use for real to complex (conjugate symmetric) transformations. | |
void | saf_rfft_backward (void *const hFFT, float_complex *inputFD, float *outputTD) |
Performs the backward-FFT operation; use for complex (conjugate symmetric) to real transformations. | |
void | saf_fft_create (void **const phFFT, int N) |
Creates an instance of saf_fft; complex<->complex FFT. | |
void | saf_fft_destroy (void **const phFFT) |
Destroys an instance of saf_fft. | |
void | saf_fft_forward (void *const hFFT, float_complex *inputTD, float_complex *outputFD) |
Performs the forward-FFT operation; use for complex to complex transformations. | |
void | saf_fft_backward (void *const hFFT, float_complex *inputFD, float_complex *outputTD) |
Performs the backward-FFT operation; use for complex to complex transformations. | |
void | getWindowingFunction (WINDOWING_FUNCTION_TYPES type, int winlength, float *win) |
Computes the weights of a specific windowing function. | |
void | getOctaveBandCutoffFreqs (float *centreFreqs, int nCentreFreqs, float *cutoffFreqs) |
Converts octave band CENTRE frequencies into CUTOFF frequencies. | |
void | flattenMinphase (float *x, int len) |
Equalises input sequence by its minimum phase form, in order to bring its magnitude response to unity, as described in [1]. | |
void | interpolateFiltersH (int inFFTsize, int outFFTsize, int nFilters, float_complex *filters_in, float_complex *filters_out) |
Interpolate filters (w.r.t. | |
float | convertBW2Q (float BW) |
Converts filter octave band-width to Q-factor. | |
float | convertQ2BW (float Q) |
Converts filter Q-factor to octave band-width. | |
void | biQuadCoeffs (BIQUAD_FILTER_TYPES filterType, float fc, float fs, float Q, float gain_dB, float b[3], float a[3]) |
Calculates 2nd order IIR filter coefficients [1]. | |
void | applyBiQuadFilter (float b[3], float a[3], float w_z_12[2], float *signal, int nSamples) |
Applies biQuad filter to an input signal using the direct form II difference equation: https://en.wikipedia.org/wiki/Digital_biquad_filter. | |
void | evalBiQuadTransferFunction (float b[3], float a[3], float *freqs, int nFreqs, float fs, int mag2dB, float *magnitude, float *phase_rad) |
Evaluates the 2nd order IIR transfer function at one or more frequencies, returning its magnitude and/or phase response. | |
void | evalIIRTransferFunction (double *b, double *a, int nCoeffs, float *freqs, int nFreqs, float fs, int mag2dB, float *magnitude, float *phase_rad) |
Computes magnitude and phase response of an IIR filter from its coefficients at user-specified frequencies (Hz). | |
void | evalIIRTransferFunctionf (float *b, float *a, int nCoeffs, float *freqs, int nFreqs, float fs, int mag2dB, float *magnitude, float *phase_rad) |
Computes magnitude and phase response of an IIR filter from its coefficients (floats) at user-specified frequencies (Hz). | |
void | applyIIR (float *in_signal, int nSamples, int nCoeffs, float *b, float *a, float *wz, float *out_signal) |
Applies an IIR filter to a time-domain signal (using the direct form II difference equation) | |
void | butterCoeffs (BUTTER_FILTER_TYPES filterType, int order, float cutoff1, float cutoff2, float sampleRate, double *b_coeffs, double *a_coeffs) |
Computes Butterworth IIR filter coefficients [1]. | |
void | faf_IIRFilterbank_create (void **phFaF, int order, float *fc, int nCutoffFreqs, float sampleRate, int maxNumSamples) |
Computes a bank of IIR filter coefficients required to divide a signal into frequency bands, based on the design by Favrot & Faller [1]. | |
void | faf_IIRFilterbank_apply (void *hFaF, float *inSig, float **outBands, int nSamples) |
Applies the Favrot & Faller filterbank. | |
void | faf_IIRFilterbank_flushBuffers (void *hFaF) |
Zeros the delay lines used during faf_IIRFilterbank_apply() | |
void | faf_IIRFilterbank_destroy (void **hFaF) |
Destroys an instance of the Favrot & Faller filterbank. | |
void | FIRCoeffs (FIR_FILTER_TYPES filterType, int order, float cutoff1, float cutoff2, float sampleRate, WINDOWING_FUNCTION_TYPES windowType, int scalingFLAG, float *filter) |
Computes FIR filter coefficients by windowing. | |
void | FIRFilterbank (int order, float *fc, int nCutoffFreqs, float sampleRate, WINDOWING_FUNCTION_TYPES windowType, int scalingFLAG, float *filterbank) |
Computes a bank of FIR filter coefficients required to divide a signal into frequency bands. | |
void | quaternion2rotationMatrix (quaternion_data *Q, float R[3][3]) |
Constructs a 3x3 rotation matrix based on a quaternion. | |
void | rotationMatrix2quaternion (float R[3][3], quaternion_data *Q) |
Calculates the quaternion corresponding to a 3x3 rotation matrix. | |
void | euler2Quaternion (float alpha, float beta, float gamma, int degreesFlag, EULER_ROTATION_CONVENTIONS convention, quaternion_data *Q) |
Converts Euler angles to a quaternion. | |
void | quaternion2euler (quaternion_data *Q, int degreesFlag, EULER_ROTATION_CONVENTIONS convention, float *alpha, float *beta, float *gamma) |
Converts a quaternion to Euler angles. | |
void | euler2rotationMatrix (float alpha, float beta, float gamma, int degreesFlag, EULER_ROTATION_CONVENTIONS convention, float R[3][3]) |
Constructs a 3x3 rotation matrix from the Euler angles. | |
void | yawPitchRoll2Rzyx (float yaw, float pitch, float roll, int rollPitchYawFLAG, float R[3][3]) |
Constructs a 3x3 rotation matrix from the Euler angles, using the yaw-pitch-roll (zyx) convention. | |
void | sph2cart (float *sph, int nDirs, int anglesInDegreesFLAG, float *cart) |
Converts spherical coordinates to Cartesian coordinates. | |
void | cart2sph (float *cart, int nDirs, int anglesInDegreesFLAG, float *sph) |
Converts Cartesian coordinates to spherical coordinates. | |
void | unitSph2cart (float *dirs, int nDirs, int anglesInDegreesFLAG, float *dirs_xyz) |
Converts spherical coordinates to Cartesian coordinates of unit length. | |
void | unitCart2sph (float *dirs_xyz, int nDirs, int anglesInDegreesFLAG, float *dirs) |
Converts Cartesian coordinates of unit length to spherical coordinates. | |
void | sphElev2incl (float *dirsElev, int nDirs, int degreesFlag, float *dirsIncl) |
Converts spherical coordinates of unit length from elevation to inclination. | |
void | sphIncl2Elev (float *dirsIncl, int nDirs, int degreesFlag, float *dirsElev) |
Converts spherical coordinates of unit length from inclination to elevation. | |
float | L2_norm3 (float v[3]) |
Returns the L2 (Euclidean) norm of a 3-element vector. | |
float | L2_norm (float *v, int lenV) |
Returns the L2 (Euclidean) norm of an arbitrary length vector. | |
float | Frob_norm (float *M, int lenX, int lenY) |
Returns the Frobenius Norm of a matrix M, of dimensions: lenX x lenY. | |
void | crossProduct3 (float a[3], float b[3], float c[3]) |
Cross product between two 3-element floating point vectors (c = a x b) | |
float | getDistBetweenPointAndLine (float point[3], float v1[3], float v2[3]) |
Returns the distance between a "point" and an infinite line described by the two points "v1" and "v2". | |
float | getDistBetween2Points (float point_a[3], float point_b[3]) |
Returns the distance between "point_a" and "point_b". | |
void | convhull3d (const float *vertices, const int nVert, int **faces, int *nFaces) |
Builds the convex hull of an arrangement of vertices in 3-dimensional space. | |
void | convhullnd (const float *points, const int nPoints, const int nd, int **faces, int *nFaces) |
Builds the convex hull of an arrangement of points in N-dimensional space. | |
void | delaunaynd (const float *points, const int nPoints, const int nd, int **DT, int *nDT) |
Computes the Delaunay triangulation of an arrangement of points in N-dimensional space. | |
void | sphDelaunay (const float *dirs_deg, const int nDirs, int **faces, int *nFaces, float *vertices) |
Delaunay triangulation of a spherical arrangement of points. | |
void | sphVoronoi (int *faces, int nFaces, float *vertices, int nDirs, voronoi_data *voronoi) |
Computes the Voronoi diagram for a spherical arrangement of points. | |
void | sphVoronoiAreas (voronoi_data *voronoi, float *areas) |
Computes the areas of a Voronoi diagram on the unit sphere [sum(areas)=4pi]. | |
void | getVoronoiWeights (float *dirs_deg, int nDirs, int diagFLAG, float *weights) |
Computes the integration weights, based on the areas of each face of the corresponding Voronoi diagram [sum(weights)=4pi]. | |
void | saf_matrixConv_create (void **const phMC, int hopSize, float *H, int length_h, int nCHin, int nCHout, int usePartFLAG) |
Creates an instance of matrixConv. | |
void | saf_matrixConv_destroy (void **const phMC) |
Destroys an instance of matrixConv. | |
void | saf_matrixConv_reset (void *const hMC) |
Flushes internal buffers with zeros. | |
void | saf_matrixConv_apply (void *const hMC, float *inputSigs, float *outputSigs) |
Performs the matrix convolution. | |
void | saf_multiConv_create (void **const phMC, int hopSize, float *H, int length_h, int nCH, int usePartFLAG) |
Creates an instance of multiConv. | |
void | saf_multiConv_destroy (void **const phMC) |
Destroys an instance of multiConv. | |
void | saf_multiConv_reset (void *const hMC) |
Flushes internal buffers with zeros. | |
void | saf_multiConv_apply (void *const hMC, float *inputSigs, float *outputSigs) |
Performs the multi-channel convolution. | |
void | saf_TVConv_create (void **const phTVC, int hopSize, float **H, int length_h, int nIRs, int nCHout, int initIdx) |
Creates an instance of TVConv. | |
void | saf_TVConv_destroy (void **const phTVC) |
Destroys an instance of matrixConv. | |
void | saf_TVConv_apply (void *const hTVC, float *inputSigs, float *outputSigs, int irIdx) |
Performs the matrix convolution. | |
void | convert_0_360To_m180_180 (float *dirs_deg, int nDirs) |
Wraps around any angles exeeding 180 degrees (e.g., 200-> -160) | |
int | nextpow2 (int numsamp) |
A simple function which returns the next power of 2. | |
void | lagrangeWeights (int N, float *x, int len_x, float *weights) |
Computes Lagrange interpolation weights of order 'N' for value 'x'. | |
void | findERBpartitions (float *centerFreq, int nBands, float maxFreqLim, int **erb_idx, float **erb_freqs, int *nERBBands) |
This function takes a frequency vector and groups its frequencies into critical bands [Equivalent-Rectangular Bandwidth (ERB)]. | |
void | randperm (int len, int *randperm_inds) |
Returns the indices required to randomly permute a vector of length 'len'. | |
long double | factorial (int n) |
Factorial, accurate up to n<=25. | |
float | matlab_fmodf (float x, float y) |
C fmodf function, except it behaves like 'mod' in Matlab (i.e. | |
void | cxcorr (float *a, float *b, float *x_ab, size_t la, size_t lb) |
Calculates the cross correlation between two vectors. | |
void | rand_m1_1 (float *vector, int length) |
Generates random numbers between -1 and 1 and stores them in the input vector. | |
void | rand_cmplx_m1_1 (float_complex *vector, int length) |
Generates random numbers between -1 and 1 and stores them in the input vector for both the real and imaginary parts. | |
void | rand_0_1 (float *vector, int length) |
Generates random numbers between 0 and 1 and stores them in the input vector. | |
void | convd (double *x, double *h, int len_x, int len_h, double *y) |
Basic 1-D direct convolution in the time-domain (real double precision) | |
void | convz (double_complex *x, double_complex *h, int len_x, int len_h, double_complex *y) |
Basic 1-D direct convolution in the time-domain (complex double precision) | |
void | polyd_v (double *x, double *poly, int len_x) |
Convert roots of a vector to polynomial (real double precision) | |
void | polyz_v (double_complex *x, double_complex *poly, int len_x) |
Convert roots of a vector to polynomial (complex double precision) | |
void | polyd_m (double *X, double_complex *poly, int size_x) |
Convert roots of a matrix to polynomial (real double precision) | |
float | sumf (float *values, int nValues) |
Returns the sum of all values. | |
int | anyLessThanf (float *values, int nValues, float threshold) |
Returns 1, if any value in 'values' (nValues x 1) is less than 'threshold', otherwise, it returns 0. | |
void | unique_i (int *input, int nInputs, int **uniqueVals, int **uniqueInds, int *nUnique) |
Finds the unique values (and their indices) of the input vector. | |
void | findCombinations (int *arrValues, int nValues, int nElements, int **comb, int *nComb) |
Given an array of values, find all the possible combinations (nCr) for subgroups of "nElements"; derived based on [1]. | |
void | gexpm (float *D, int sizeD, int m1, float *Y) |
Numerically solves first-order, linear, homogeneous differential equation systems, with non-constant coefficients, by generalization of the Pade- approximant method for exponential matrices. | |
void | smb_pitchShift_create (void **hSmb, int nCH, int fftFrameSize, int osamp, float sampleRate) |
Creates an instance of SMB PitchShifter. | |
void | smb_pitchShift_destroy (void **const hSmb) |
Destroys an instance of SMB PitchShifter. | |
void | smb_pitchShift_apply (void *hSmb, float pitchShift, int frameSize, float *inFrame, float *outFrame) |
Performs pitch shifting of the input signals, while retaining the same time duration as the original using the algorithm detailed in [1]. | |
void | qmf_create (void **const phQMF, int nCHin, int nCHout, int hopsize, int hybridmode, QMF_FDDATA_FORMAT format) |
Creates an instance of the qmf filterbank. | |
void | qmf_destroy (void **const phQMF) |
Destroys an instance of the qmf filterbank. | |
void | qmf_analysis (void *const hQMF, float **dataTD, int framesize, float_complex ***dataFD) |
Performs QMF analysis of the input time-domain signals. | |
void | qmf_synthesis (void *const hQMF, float_complex ***dataFD, int framesize, float **dataTD) |
Performs QMF synthesis of the input frequency-domain signals. | |
void | qmf_channelChange (void *const hQMF, int new_nCHin, int new_nCHout) |
Changes the number input and/or output channels. | |
void | qmf_clearBuffers (void *const hQMF) |
Flushes the analysis and synthesis buffers with zeros. | |
int | qmf_getProcDelay (void *const hQMF) |
Returns the processing delay in samples. | |
int | qmf_getNBands (void *const hQMF) |
Returns the number of frequency bands. | |
void | qmf_getCentreFreqs (void *const hQMF, float fs, int nBands, float *centreFreq) |
Computes the QMF/hybrid-QMF centre frequencies. | |
void | qmf_FIRtoFilterbankCoeffs (float *hIR, int N_dirs, int nCH, int ir_len, int hopSize, int hybridmode, float_complex *hFB) |
Converts FIR filters into Filterbank Coefficients by passing them through the QMF filterbank. | |
void | sorti (int *in_vec, int *out_vec, int *new_indices, int len, int descendFLAG) |
Sort a vector of integer values into ascending/decending order (optionally returning the new indices as well) | |
void | sortf (float *in_vec, float *out_vec, int *new_indices, int len, int descendFLAG) |
Sort a vector of floating-point values into ascending/decending order (optionally returning the new indices as well) | |
void | sortd (double *in_vec, double *out_vec, int *new_indices, int len, int descendFLAG) |
Sort a vector of double floating-point values into ascending/decending order (optionally returning the new indices as well) | |
void | sortc (float_complex *in_vec, float_complex *out_vec, int len, int descendFLAG) |
Sort a vector of complex floating-point values into ascending/decending order. | |
void | sortz (double_complex *in_vec, double_complex *out_vec, int len, int descendFLAG) |
Sort a vector of complex double floating-point values into ascending/ decending order. | |
void | cmplxPairUp (double_complex *in_vec, double_complex *out_vec, int len) |
Pairs up complex numbers and sorts them in ascending order based on their real parts first, and then on their imaginary parts. | |
void | findClosestGridPoints (float *grid_dirs, int nGrid, float *target_dirs, int nTarget, int degFLAG, int *idx_closest, float *dirs_closest, float *angle_diff) |
Finds indicies into "grid_dirs" that are the closest to "target dirs". | |
void | findClosestGridPointsCartesian (float *grid_dirs_xyz, int nGrid, float *target_dirs_xyz, int nTarget, int *idx_closest, float *dirs_xyz_closest, float *angle_diff) |
Finds indicies into "grid_dirs_xyz" that are the closest to "target dirs_xyz". | |
void | utility_siminv (const float *a, const int len, int *index) |
Single-precision, index of minimum absolute value in a vector, i.e. | |
void | utility_ciminv (const float_complex *a, const int len, int *index) |
Single-precision, complex, index of maximum absolute value in a vector, i.e. | |
void | utility_diminv (const double *a, const int len, int *index) |
Double-precision, index of minimum absolute value in a vector, i.e. | |
void | utility_ziminv (const double_complex *a, const int len, int *index) |
Double-precision, complex, index of maximum absolute value in a vector, i.e. | |
void | utility_simaxv (const float *a, const int len, int *index) |
Single-precision, index of maximum absolute value in a vector, i.e. | |
void | utility_cimaxv (const float_complex *a, const int len, int *index) |
Single-precision, complex, index of maximum absolute value in a vector, i.e. | |
void | utility_dimaxv (const double *a, const int len, int *index) |
Double-precision, index of maximum absolute value in a vector, i.e. | |
void | utility_zimaxv (const double_complex *a, const int len, int *index) |
Double-precision, complex, index of maximum absolute value in a vector, i.e. | |
void | utility_svabs (const float *a, const int len, float *c) |
Single-precision, absolute values of vector elements, i.e. | |
void | utility_cvabs (const float_complex *a, const int len, float *c) |
Single-precision, complex, absolute values of vector elements, i.e. | |
void | utility_svmod (const float *a, const float *b, const int len, float *c) |
Single-precision, modulus of vector elements, i.e. | |
void | utility_svrecip (const float *a, const int len, float *c) |
Single-precision, vector-reciprocal/inversion, i.e. | |
void | utility_cvconj (const float_complex *a, const int len, float_complex *c) |
Single-precision, complex, vector-conjugate, i.e. | |
void | utility_zvconj (const double_complex *a, const int len, double_complex *c) |
Double-precision, complex, vector-conjugate, i.e. | |
void | utility_svvcopy (const float *a, const int len, float *c) |
Single-precision, vector-vector copy, i.e. | |
void | utility_cvvcopy (const float_complex *a, const int len, float_complex *c) |
Single-precision, complex, vector-vector copy, i.e. | |
void | utility_dvvcopy (const double *a, const int len, double *c) |
double-precision, vector-vector copy, i.e. | |
void | utility_zvvcopy (const double_complex *a, const int len, double_complex *c) |
double-precision, complex, vector-vector copy, i.e. | |
void | utility_svvadd (const float *a, const float *b, const int len, float *c) |
Single-precision, vector-vector addition, i.e. | |
void | utility_cvvadd (const float_complex *a, const float_complex *b, const int len, float_complex *c) |
Single-precision, complex, vector-vector addition, i.e. | |
void | utility_dvvadd (const double *a, const double *b, const int len, double *c) |
Double-precision, vector-vector addition, i.e. | |
void | utility_zvvadd (const double_complex *a, const double_complex *b, const int len, double_complex *c) |
Double-precision, complex, vector-vector addition, i.e. | |
void | utility_svvsub (const float *a, const float *b, const int len, float *c) |
Single-precision, vector-vector subtraction, i.e. | |
void | utility_cvvsub (const float_complex *a, const float_complex *b, const int len, float_complex *c) |
Single-precision, complex, vector-vector subtraction, i.e. | |
void | utility_dvvsub (const double *a, const double *b, const int len, double *c) |
Double-precision, vector-vector subtraction, i.e. | |
void | utility_zvvsub (const double_complex *a, const double_complex *b, const int len, double_complex *c) |
Double-precision, complex, vector-vector subtraction, i.e. | |
void | utility_svvmul (const float *a, const float *b, const int len, float *c) |
Single-precision, element-wise vector-vector multiplication i.e. | |
void | utility_cvvmul (const float_complex *a, const float_complex *b, const int len, float_complex *c) |
Single-precision, complex, element-wise vector-vector multiplication i.e. | |
void | utility_svvdot (const float *a, const float *b, const int len, float *c) |
Single-precision, vector-vector dot product, i.e. | |
void | utility_cvvdot (const float_complex *a, const float_complex *b, const int len, CONJ_FLAG flag, float_complex *c) |
Single-precision, complex, vector-vector dot product, i.e. | |
void | utility_svsmul (float *a, const float *s, const int len, float *c) |
Single-precision, multiplies each element in vector 'a' with a scalar 's', i.e. | |
void | utility_cvsmul (float_complex *a, const float_complex *s, const int len, float_complex *c) |
Single-precision, complex, multiplies each element in vector 'a' with a scalar 's', i.e. | |
void | utility_dvsmul (double *a, const double *s, const int len, double *c) |
Double-precision, multiplies each element in vector 'a' with a scalar 's', i.e. | |
void | utility_zvsmul (double_complex *a, const double_complex *s, const int len, double_complex *c) |
Double-precision, complex, multiplies each element in vector 'a' with a scalar 's', i.e. | |
void | utility_svsdiv (const float *a, const float *s, const int len, float *c) |
Single-precision, divides each element in vector 'a' with a scalar 's', i.e. | |
void | utility_svsadd (float *a, const float *s, const int len, float *c) |
Single-precision, adds each element in vector 'a' with a scalar 's', i.e. | |
void | utility_svssub (float *a, const float *s, const int len, float *c) |
Single-precision, subtracts each element in vector 'a' with a scalar 's', i.e. | |
void | utility_ssv2cv_inds (const float *sv, const int *inds, const int len, float *cv) |
Single-precision, sparse-vector to compressed vector given known indices i.e. | |
void | utility_csv2cv_inds (const float_complex *sv, const int *inds, const int len, float_complex *cv) |
Single-precision complex, sparse-vector to compressed vector given known indices. | |
void | utility_dsv2cv_inds (const double *sv, const int *inds, const int len, double *cv) |
Double-precision, sparse-vector to compressed vector given known indices i.e. | |
void | utility_zsv2cv_inds (const double_complex *sv, const int *inds, const int len, double_complex *cv) |
Double-precision complex, sparse-vector to compressed vector given known indices. | |
void | utility_ssvd_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_ssvd() | |
void | utility_ssvd_destroy (void **const phWork) |
De-allocate the working struct used by utility_ssvd() | |
void | utility_ssvd (void *const hWork, const float *A, const int dim1, const int dim2, float *U, float *S, float *V, float *sing) |
Singular value decomposition: single precision, i.e. | |
void | utility_csvd_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_csvd() | |
void | utility_csvd_destroy (void **const phWork) |
De-allocate the working struct used by utility_csvd() | |
void | utility_csvd (void *const hWork, const float_complex *A, const int dim1, const int dim2, float_complex *U, float_complex *S, float_complex *V, float *sing) |
Singular value decomposition: single precision complex, i.e. | |
void | utility_sseig_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_sseig() | |
void | utility_sseig_destroy (void **const phWork) |
De-allocate the working struct used by utility_sseig() | |
void | utility_sseig (void *const hWork, const float *A, const int dim, int sortDecFLAG, float *V, float *D, float *eig) |
Eigenvalue decomposition of a SYMMETRIC matrix: single precision, i.e. | |
void | utility_cseig_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_cseig() | |
void | utility_cseig_destroy (void **const phWork) |
De-allocate the working struct used by utility_cseig() | |
void | utility_cseig (void *const hWork, const float_complex *A, const int dim, int sortDecFLAG, float_complex *V, float_complex *D, float *eig) |
Eigenvalue decomposition of a SYMMETRIC/HERMITION matrix: single precision complex, i.e. | |
void | utility_ceigmp_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_ceigmp() | |
void | utility_ceigmp_destroy (void **const phWork) |
De-allocate the working struct used by utility_ceigmp() | |
void | utility_ceigmp (void *const hWork, const float_complex *A, const float_complex *B, const int dim, float_complex *VL, float_complex *VR, float_complex *D) |
Computes eigenvalues of a matrix pair using the QZ method, single precision complex, i.e. | |
void | utility_zeigmp_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_zeigmp() | |
void | utility_zeigmp_destroy (void **const phWork) |
De-allocate the working struct used by utility_zeigmp() | |
void | utility_zeigmp (void *const hWork, const double_complex *A, const double_complex *B, const int dim, double_complex *VL, double_complex *VR, double_complex *D) |
Computes eigenvalues of a matrix pair using the QZ method, double precision complex, i.e. | |
void | utility_ceig_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_ceig() | |
void | utility_ceig_destroy (void **const phWork) |
De-allocate the working struct used by utility_ceig() | |
void | utility_ceig (void *const hWork, const float_complex *A, const int dim, float_complex *VL, float_complex *VR, float_complex *D, float_complex *eig) |
Eigenvalue decomposition of a NON-SYMMETRIC matrix: single precision complex, i.e. | |
void | utility_zeig_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_zeig() | |
void | utility_zeig_destroy (void **const phWork) |
De-allocate the working struct used by utility_zeig() | |
void | utility_zeig (void *const hWork, const double_complex *A, const int dim, double_complex *VL, double_complex *VR, double_complex *D, double_complex *eig) |
Eigenvalue decomposition of a NON-SYMMETRIC matrix: double precision complex, i.e. | |
void | utility_sglslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_sglslv() | |
void | utility_sglslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_sglslv() | |
void | utility_sglslv (void *const hWork, const float *A, const int dim, float *B, int nCol, float *X) |
General linear solver: single precision, i.e. | |
void | utility_cglslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_cglslv() | |
void | utility_cglslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_cglslv() | |
void | utility_cglslv (void *const hWork, const float_complex *A, const int dim, float_complex *B, int nCol, float_complex *X) |
General linear solver: single precision complex, i.e. | |
void | utility_dglslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_dglslv() | |
void | utility_dglslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_dglslv() | |
void | utility_dglslv (void *const hWork, const double *A, const int dim, double *B, int nCol, double *X) |
General linear solver: double precision, i.e. | |
void | utility_zglslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_zglslv() | |
void | utility_zglslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_zglslv() | |
void | utility_zglslv (void *const hWork, const double_complex *A, const int dim, double_complex *B, int nCol, double_complex *X) |
General linear solver: double precision complex, i.e. | |
void | utility_sglslvt_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_sglslvt() | |
void | utility_sglslvt_destroy (void **const phWork) |
De-allocate the working struct used by utility_sglslvt() | |
void | utility_sglslvt (void *const hWork, const float *A, const int dim, float *B, int nCol, float *X) |
General linear solver (the other way): single precision, i.e. | |
void | utility_sslslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_sslslv() | |
void | utility_sslslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_sslslv() | |
void | utility_sslslv (void *const hWork, const float *A, const int dim, float *B, int nCol, float *X) |
Linear solver for SYMMETRIC positive-definate 'A': single precision, i.e. | |
void | utility_cslslv_create (void **const phWork, int maxDim, int maxNCol) |
(Optional) Pre-allocate the working struct used by utility_cslslv() | |
void | utility_cslslv_destroy (void **const phWork) |
De-allocate the working struct used by utility_cslslv() | |
void | utility_cslslv (void *const hWork, const float_complex *A, const int dim, float_complex *B, int nCol, float_complex *X) |
Linear solver for HERMITIAN positive-definate 'A': single precision complex, i.e. | |
void | utility_spinv_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_spinv() | |
void | utility_spinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_spinv() | |
void | utility_spinv (void *const hWork, const float *A, const int dim1, const int dim2, float *B) |
General matrix pseudo-inverse (the svd way): single precision, i.e. | |
void | utility_cpinv_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_cpinv() | |
void | utility_cpinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_cpinv() | |
void | utility_cpinv (void *const hWork, const float_complex *A, const int dim1, const int dim2, float_complex *B) |
General matrix pseudo-inverse (the svd way): single precision complex, i.e. | |
void | utility_dpinv_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_dpinv() | |
void | utility_dpinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_dpinv() | |
void | utility_dpinv (void *const hWork, const double *A, const int dim1, const int dim2, double *B) |
General matrix pseudo-inverse (the svd way): double precision, i.e. | |
void | utility_zpinv_create (void **const phWork, int maxDim1, int maxDim2) |
(Optional) Pre-allocate the working struct used by utility_zpinv() | |
void | utility_zpinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_zpinv() | |
void | utility_zpinv (void *const hWork, const double_complex *A, const int dim1, const int dim2, double_complex *B) |
General matrix pseudo-inverse (the svd way): double precision complex, i.e. | |
void | utility_schol_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_schol() | |
void | utility_schol_destroy (void **const phWork) |
De-allocate the working struct used by utility_schol() | |
void | utility_schol (void *const hWork, const float *A, const int dim, float *X) |
Cholesky factorisation of a symmetric matrix positive-definate matrix: single precision, i.e. | |
void | utility_cchol_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_cchol() | |
void | utility_cchol_destroy (void **const phWork) |
De-allocate the working struct used by utility_cchol() | |
void | utility_cchol (void *const hWork, const float_complex *A, const int dim, float_complex *X) |
Cholesky factorisation of a hermitian positive-definate matrix: single precision complex, i.e. | |
void | utility_sdet_create (void **const phWork, int maxN) |
(Optional) Pre-allocate the working struct used by utility_sdet() | |
void | utility_sdet_destroy (void **const phWork) |
De-allocate the working struct used by utility_sdet() | |
float | utility_sdet (void *const hWork, float *A, int N) |
Determinant of a Matrix, single precision, i,e. | |
void | utility_ddet_create (void **const phWork, int maxN) |
(Optional) Pre-allocate the working struct used by utility_ddet() | |
void | utility_ddet_destroy (void **const phWork) |
De-allocate the working struct used by utility_ddet() | |
double | utility_ddet (void *const hWork, double *A, int N) |
Determinant of a Matrix, double precision, i,e. | |
void | utility_sinv_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_sinv() | |
void | utility_sinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_sinv() | |
void | utility_sinv (void *const hWork, float *A, float *B, const int dim) |
Matrix inversion: single precision, i.e. | |
void | utility_dinv_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_dinv() | |
void | utility_dinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_dinv() | |
void | utility_dinv (void *const hWork, double *A, double *B, const int dim) |
Matrix inversion: double precision, i.e. | |
void | utility_cinv_create (void **const phWork, int maxDim) |
(Optional) Pre-allocate the working struct used by utility_cinv() | |
void | utility_cinv_destroy (void **const phWork) |
De-allocate the working struct used by utility_cinv() | |
void | utility_cinv (void *const hWork, float_complex *A, float_complex *B, const int dim) |
Matrix inversion: double precision complex, i.e. | |
Variables | |
const float | __lattice_coeffs_o20 [256][20] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 20th order. | |
const float | __lattice_coeffs_o18 [256][18] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 18th order. | |
const float | __lattice_coeffs_o16 [256][16] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 16th order. | |
const float | __lattice_coeffs_o15 [256][15] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 15th order. | |
const float | __lattice_coeffs_o14 [256][14] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 14th order. | |
const float | __lattice_coeffs_o12 [256][12] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 12th order. | |
const float | __lattice_coeffs_o10 [256][10] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 10th order. | |
const float | __lattice_coeffs_o8 [256][8] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 8th order. | |
const float | __lattice_coeffs_o6 [256][6] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 6th order. | |
const float | __lattice_coeffs_o4 [256][4] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 4th order. | |
const float | __lattice_coeffs_o3 [256][3] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 3rd order. | |
const float | __lattice_coeffs_o2 [256][2] |
Lattice all-pass filter coeffs (numerator) for 256 channels, 2nd order. | |
const float | __mono_dirs_deg [1][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a mono setup. | |
const float | __stereo_dirs_deg [2][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a stereo setup. | |
const float | __5pX_dirs_deg [5][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 5.x setup. | |
const float | __7pX_dirs_deg [7][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 7.x setup. | |
const float | __8pX_dirs_deg [8][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 8.x setup. | |
const float | __9pX_dirs_deg [9][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 9.x setup. | |
const float | __10pX_dirs_deg [10][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 10.x setup. | |
const float | __11pX_dirs_deg [11][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 11.x setup. | |
const float | __11pX_7_4_dirs_deg [11][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 7.4.x setup. | |
const float | __13pX_dirs_deg [13][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 13.x setup. | |
const float | __22pX_dirs_deg [22][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 22.x setup. | |
const float | __9_10_3p2_dirs_deg [24][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 9+10+3.2 setup BS 2051 recommedation: https://www.itu.int/rec/R-REC-BS.2051/en. | |
const float | __Aalto_MCC_dirs_deg [45][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the multi-channel anechoic chamber (MCC), at Aalto University. | |
const float | __Aalto_MCCsubset_dirs_deg [37][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the multi-channel anechoic chamber (MCC) sub-set, at Aalto University. | |
const float | __Aalto_Apaja_dirs_deg [29][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the audio-visual listening room (Apaja), at Aalto University. | |
const float | __Aalto_LR_dirs_deg [13][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the ITU standard listening room (LR), at Aalto University. | |
const float | __DTU_AVIL_dirs_deg [64][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the Audio Visual Immersion Lab (AVIL), at the Technical University of Denmark (DTU) | |
const float | __Zylia_Lab_dirs_deg [22][2] |
Loudspeaker directions [azimuth, Elevation] in degrees, for the 22.x setup, at Zylia Labs. | |
const float | __default_LScoords64_rad [64][2] |
Default Loudspeaker directions [azimuth, Elevation] in RADIANS! | |
const float | __default_LScoords128_deg [128][2] |
Default Loudspeaker directions [azimuth, Elevation] - to replace above! | |
const int | __Tdesign_degree_1_nPoints |
Number of directions in a minimum Tdesign of degree: 1. | |
const int | __Tdesign_degree_2_nPoints |
Number of directions in a minimum Tdesign of degree: 2. | |
const int | __Tdesign_degree_3_nPoints |
Number of directions in a minimum Tdesign of degree: 3. | |
const int | __Tdesign_degree_4_nPoints |
Number of directions in a minimum Tdesign of degree: 4. | |
const int | __Tdesign_degree_5_nPoints |
Number of directions in a minimum Tdesign of degree: 5. | |
const int | __Tdesign_degree_6_nPoints |
Number of directions in a minimum Tdesign of degree: 6. | |
const int | __Tdesign_degree_7_nPoints |
Number of directions in a minimum Tdesign of degree: 7. | |
const int | __Tdesign_degree_8_nPoints |
Number of directions in a minimum Tdesign of degree: 8. | |
const int | __Tdesign_degree_9_nPoints |
Number of directions in a minimum Tdesign of degree: 9. | |
const int | __Tdesign_degree_10_nPoints |
Number of directions in a minimum Tdesign of degree: 10. | |
const int | __Tdesign_degree_11_nPoints |
Number of directions in a minimum Tdesign of degree: 11. | |
const int | __Tdesign_degree_12_nPoints |
Number of directions in a minimum Tdesign of degree: 12. | |
const int | __Tdesign_degree_13_nPoints |
Number of directions in a minimum Tdesign of degree: 13. | |
const int | __Tdesign_degree_14_nPoints |
Number of directions in a minimum Tdesign of degree: 14. | |
const int | __Tdesign_degree_15_nPoints |
Number of directions in a minimum Tdesign of degree: 15. | |
const int | __Tdesign_degree_16_nPoints |
Number of directions in a minimum Tdesign of degree: 16. | |
const int | __Tdesign_degree_17_nPoints |
Number of directions in a minimum Tdesign of degree: 17. | |
const int | __Tdesign_degree_18_nPoints |
Number of directions in a minimum Tdesign of degree: 18. | |
const int | __Tdesign_degree_19_nPoints |
Number of directions in a minimum Tdesign of degree: 19. | |
const int | __Tdesign_degree_20_nPoints |
Number of directions in a minimum Tdesign of degree: 20. | |
const int | __Tdesign_degree_21_nPoints |
Number of directions in a minimum Tdesign of degree: 21. | |
const int | __Tdesign_degree_30_nPoints |
Number of directions in a minimum Tdesign of degree: 30. | |
const int | __Tdesign_degree_40_nPoints |
Number of directions in a minimum Tdesign of degree: 40. | |
const int | __Tdesign_degree_50_nPoints |
Number of directions in a minimum Tdesign of degree: 50. | |
const int | __Tdesign_degree_60_nPoints |
Number of directions in a minimum Tdesign of degree: 60. | |
const int | __Tdesign_degree_70_nPoints |
Number of directions in a minimum Tdesign of degree: 70. | |
const int | __Tdesign_degree_80_nPoints |
Number of directions in a minimum Tdesign of degree: 80. | |
const int | __Tdesign_degree_90_nPoints |
Number of directions in a minimum Tdesign of degree: 90. | |
const int | __Tdesign_degree_100_nPoints |
Number of directions in a minimum Tdesign of degree: 100. | |
const int | __Tdesign_degree_124_nPoints |
Number of directions in a minimum Tdesign of degree: 124. | |
const float | __Tdesign_degree_1_dirs_deg [2][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 1. | |
const float | __Tdesign_degree_2_dirs_deg [4][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 2. | |
const float | __Tdesign_degree_3_dirs_deg [6][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 3. | |
const float | __Tdesign_degree_4_dirs_deg [12][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 4. | |
const float | __Tdesign_degree_5_dirs_deg [12][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 5. | |
const float | __Tdesign_degree_6_dirs_deg [24][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 6. | |
const float | __Tdesign_degree_7_dirs_deg [24][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 7. | |
const float | __Tdesign_degree_8_dirs_deg [36][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 8. | |
const float | __Tdesign_degree_9_dirs_deg [48][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 9. | |
const float | __Tdesign_degree_10_dirs_deg [60][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 10. | |
const float | __Tdesign_degree_11_dirs_deg [70][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 11. | |
const float | __Tdesign_degree_12_dirs_deg [84][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 12. | |
const float | __Tdesign_degree_13_dirs_deg [94][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 13. | |
const float | __Tdesign_degree_14_dirs_deg [108][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 14. | |
const float | __Tdesign_degree_15_dirs_deg [120][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 15. | |
const float | __Tdesign_degree_16_dirs_deg [144][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 16. | |
const float | __Tdesign_degree_17_dirs_deg [156][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 17. | |
const float | __Tdesign_degree_18_dirs_deg [180][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 18. | |
const float | __Tdesign_degree_19_dirs_deg [204][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 19. | |
const float | __Tdesign_degree_20_dirs_deg [216][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 20. | |
const float | __Tdesign_degree_21_dirs_deg [240][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 21. | |
const float | __Tdesign_degree_30_dirs_deg [480][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 30. | |
const float | __Tdesign_degree_40_dirs_deg [840][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 40. | |
const float | __Tdesign_degree_50_dirs_deg [1296][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 50. | |
const float | __Tdesign_degree_60_dirs_deg [1860][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 60. | |
const float | __Tdesign_degree_70_dirs_deg [2520][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 70. | |
const float | __Tdesign_degree_80_dirs_deg [3276][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 80. | |
const float | __Tdesign_degree_90_dirs_deg [4140][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 90. | |
const float | __Tdesign_degree_100_dirs_deg [5100][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 100. | |
const float | __Tdesign_degree_124_dirs_deg [7812][2] |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 124. | |
const float * | __HANDLES_Tdesign_dirs_deg [21] |
minimum T-design HANDLES (up to degree 21 only). | |
const int | __Tdesign_nPoints_per_degree [21] |
Number of points in each t-design (up to degree 21 only). | |
const float | __SphCovering_4_dirs_deg [4][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 4 dirs. | |
const float | __SphCovering_5_dirs_deg [5][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 5 dirs. | |
const float | __SphCovering_6_dirs_deg [6][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 6 dirs. | |
const float | __SphCovering_7_dirs_deg [7][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 7 dirs. | |
const float | __SphCovering_8_dirs_deg [8][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 8 dirs. | |
const float | __SphCovering_9_dirs_deg [9][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 9 dirs. | |
const float | __SphCovering_10_dirs_deg [10][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 10 dirs. | |
const float | __SphCovering_11_dirs_deg [11][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 11 dirs. | |
const float | __SphCovering_12_dirs_deg [12][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 12 dirs. | |
const float | __SphCovering_13_dirs_deg [13][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 13 dirs. | |
const float | __SphCovering_14_dirs_deg [14][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 14 dirs. | |
const float | __SphCovering_15_dirs_deg [15][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 15 dirs. | |
const float | __SphCovering_16_dirs_deg [16][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 16 dirs. | |
const float | __SphCovering_17_dirs_deg [17][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 17 dirs. | |
const float | __SphCovering_18_dirs_deg [18][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 18 dirs. | |
const float | __SphCovering_19_dirs_deg [19][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 19 dirs. | |
const float | __SphCovering_20_dirs_deg [20][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 20 dirs. | |
const float | __SphCovering_21_dirs_deg [21][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 21 dirs. | |
const float | __SphCovering_22_dirs_deg [22][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 22 dirs. | |
const float | __SphCovering_23_dirs_deg [23][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 23 dirs. | |
const float | __SphCovering_24_dirs_deg [24][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 24 dirs. | |
const float | __SphCovering_25_dirs_deg [25][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 25 dirs. | |
const float | __SphCovering_26_dirs_deg [26][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 26 dirs. | |
const float | __SphCovering_27_dirs_deg [27][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 27 dirs. | |
const float | __SphCovering_28_dirs_deg [28][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 28 dirs. | |
const float | __SphCovering_29_dirs_deg [29][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 29 dirs. | |
const float | __SphCovering_30_dirs_deg [30][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 30 dirs. | |
const float | __SphCovering_31_dirs_deg [31][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 31 dirs. | |
const float | __SphCovering_32_dirs_deg [32][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 32 dirs. | |
const float | __SphCovering_33_dirs_deg [33][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 33 dirs. | |
const float | __SphCovering_34_dirs_deg [34][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 34 dirs. | |
const float | __SphCovering_35_dirs_deg [35][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 35 dirs. | |
const float | __SphCovering_36_dirs_deg [36][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 36 dirs. | |
const float | __SphCovering_37_dirs_deg [37][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 37 dirs. | |
const float | __SphCovering_38_dirs_deg [38][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 38 dirs. | |
const float | __SphCovering_39_dirs_deg [39][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 39 dirs. | |
const float | __SphCovering_40_dirs_deg [40][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 40 dirs. | |
const float | __SphCovering_41_dirs_deg [41][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 41 dirs. | |
const float | __SphCovering_42_dirs_deg [42][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 42 dirs. | |
const float | __SphCovering_43_dirs_deg [43][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 43 dirs. | |
const float | __SphCovering_44_dirs_deg [44][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 44 dirs. | |
const float | __SphCovering_45_dirs_deg [45][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 45 dirs. | |
const float | __SphCovering_46_dirs_deg [46][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 46 dirs. | |
const float | __SphCovering_47_dirs_deg [47][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 47 dirs. | |
const float | __SphCovering_48_dirs_deg [48][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 48 dirs. | |
const float | __SphCovering_49_dirs_deg [49][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 49 dirs. | |
const float | __SphCovering_50_dirs_deg [50][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 50 dirs. | |
const float | __SphCovering_51_dirs_deg [51][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 51 dirs. | |
const float | __SphCovering_52_dirs_deg [52][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 52 dirs. | |
const float | __SphCovering_53_dirs_deg [53][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 53 dirs. | |
const float | __SphCovering_54_dirs_deg [54][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 54 dirs. | |
const float | __SphCovering_55_dirs_deg [55][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 55 dirs. | |
const float | __SphCovering_56_dirs_deg [56][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 56 dirs. | |
const float | __SphCovering_57_dirs_deg [57][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 57 dirs. | |
const float | __SphCovering_58_dirs_deg [58][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 58 dirs. | |
const float | __SphCovering_59_dirs_deg [59][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 59 dirs. | |
const float | __SphCovering_60_dirs_deg [60][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 60 dirs. | |
const float | __SphCovering_61_dirs_deg [61][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 61 dirs. | |
const float | __SphCovering_62_dirs_deg [62][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 62 dirs. | |
const float | __SphCovering_63_dirs_deg [63][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 63 dirs. | |
const float | __SphCovering_64_dirs_deg [64][2] |
Directions [azimuth, Elevation] in degrees, for sphere covering: 64 dirs. | |
const float * | __HANDLES_SphCovering_dirs_deg [64] |
Sphere covering handles ( between 4..64 points only) | |
const int | __geosphere_ico_0_0_nPoints |
Number of directions in a ico geosphere of degree: 0. | |
const int | __geosphere_ico_1_0_nPoints |
Number of directions in a ico geosphere of degree: 1. | |
const int | __geosphere_ico_2_0_nPoints |
Number of directions in a ico geosphere of degree: 2. | |
const int | __geosphere_ico_3_0_nPoints |
Number of directions in a ico geosphere of degree: 3. | |
const int | __geosphere_ico_4_0_nPoints |
Number of directions in a ico geosphere of degree: 4. | |
const int | __geosphere_ico_5_0_nPoints |
Number of directions in a ico geosphere of degree: 5. | |
const int | __geosphere_ico_6_0_nPoints |
Number of directions in a ico geosphere of degree: 6. | |
const int | __geosphere_ico_7_0_nPoints |
Number of directions in a ico geosphere of degree: 7. | |
const int | __geosphere_ico_8_0_nPoints |
Number of directions in a ico geosphere of degree: 8. | |
const int | __geosphere_ico_9_0_nPoints |
Number of directions in a ico geosphere of degree: 9. | |
const int | __geosphere_ico_10_0_nPoints |
Number of directions in a ico geosphere of degree: 10. | |
const int | __geosphere_ico_11_0_nPoints |
Number of directions in a ico geosphere of degree: 11. | |
const int | __geosphere_ico_12_0_nPoints |
Number of directions in a ico geosphere of degree: 12. | |
const int | __geosphere_ico_13_0_nPoints |
Number of directions in a ico geosphere of degree: 13. | |
const int | __geosphere_ico_14_0_nPoints |
Number of directions in a ico geosphere of degree: 14. | |
const int | __geosphere_ico_15_0_nPoints |
Number of directions in a ico geosphere of degree: 15. | |
const int | __geosphere_ico_16_0_nPoints |
Number of directions in a ico geosphere of degree: 16. | |
const float | __geosphere_ico_0_0_dirs_deg [12][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 0. | |
const float | __geosphere_ico_1_0_dirs_deg [32][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 1. | |
const float | __geosphere_ico_2_0_dirs_deg [42][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 2. | |
const float | __geosphere_ico_3_0_dirs_deg [92][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 3. | |
const float | __geosphere_ico_4_0_dirs_deg [162][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 4. | |
const float | __geosphere_ico_5_0_dirs_deg [252][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 5. | |
const float | __geosphere_ico_6_0_dirs_deg [362][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 6. | |
const float | __geosphere_ico_7_0_dirs_deg [492][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 7. | |
const float | __geosphere_ico_8_0_dirs_deg [642][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 8. | |
const float | __geosphere_ico_9_0_dirs_deg [812][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 9. | |
const float | __geosphere_ico_10_0_dirs_deg [1002][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 10. | |
const float | __geosphere_ico_11_0_dirs_deg [1212][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 11. | |
const float | __geosphere_ico_12_0_dirs_deg [1442][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 12. | |
const float | __geosphere_ico_13_0_dirs_deg [1692][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 13. | |
const float | __geosphere_ico_14_0_dirs_deg [1962][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 14. | |
const float | __geosphere_ico_15_0_dirs_deg [2252][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 15. | |
const float | __geosphere_ico_16_0_dirs_deg [2562][2] |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 16. | |
const int | __geosphere_oct_0_0_nPoints |
Number of directions in a oct geosphere of degree: 0. | |
const int | __geosphere_oct_1_0_nPoints |
Number of directions in a oct geosphere of degree: 1. | |
const int | __geosphere_oct_2_0_nPoints |
Number of directions in a oct geosphere of degree: 2. | |
const int | __geosphere_oct_3_0_nPoints |
Number of directions in a oct geosphere of degree: 3. | |
const int | __geosphere_oct_4_0_nPoints |
Number of directions in a oct geosphere of degree: 4. | |
const int | __geosphere_oct_5_0_nPoints |
Number of directions in a oct geosphere of degree: 5. | |
const int | __geosphere_oct_6_0_nPoints |
Number of directions in a oct geosphere of degree: 6. | |
const int | __geosphere_oct_7_0_nPoints |
Number of directions in a oct geosphere of degree: 7. | |
const int | __geosphere_oct_8_0_nPoints |
Number of directions in a oct geosphere of degree: 8. | |
const int | __geosphere_oct_9_0_nPoints |
Number of directions in a oct geosphere of degree: 9. | |
const int | __geosphere_oct_10_0_nPoints |
Number of directions in a oct geosphere of degree: 10. | |
const int | __geosphere_oct_11_0_nPoints |
Number of directions in a oct geosphere of degree: 11. | |
const int | __geosphere_oct_12_0_nPoints |
Number of directions in a oct geosphere of degree: 12. | |
const int | __geosphere_oct_13_0_nPoints |
Number of directions in a oct geosphere of degree: 13. | |
const int | __geosphere_oct_14_0_nPoints |
Number of directions in a oct geosphere of degree: 14. | |
const int | __geosphere_oct_15_0_nPoints |
Number of directions in a oct geosphere of degree: 15. | |
const int | __geosphere_oct_16_0_nPoints |
Number of directions in a oct geosphere of degree: 16. | |
const float | __geosphere_oct_0_0_dirs_deg [6][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 0. | |
const float | __geosphere_oct_1_0_dirs_deg [14][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 1. | |
const float | __geosphere_oct_2_0_dirs_deg [18][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 2. | |
const float | __geosphere_oct_3_0_dirs_deg [38][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 3. | |
const float | __geosphere_oct_4_0_dirs_deg [66][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 4. | |
const float | __geosphere_oct_5_0_dirs_deg [102][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 5. | |
const float | __geosphere_oct_6_0_dirs_deg [146][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 6. | |
const float | __geosphere_oct_7_0_dirs_deg [198][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 7. | |
const float | __geosphere_oct_8_0_dirs_deg [258][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 8. | |
const float | __geosphere_oct_9_0_dirs_deg [326][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 9. | |
const float | __geosphere_oct_10_0_dirs_deg [402][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 10. | |
const float | __geosphere_oct_11_0_dirs_deg [486][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 11. | |
const float | __geosphere_oct_12_0_dirs_deg [578][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 12. | |
const float | __geosphere_oct_13_0_dirs_deg [678][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 13. | |
const float | __geosphere_oct_14_0_dirs_deg [786][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 14. | |
const float | __geosphere_oct_15_0_dirs_deg [902][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 15. | |
const float | __geosphere_oct_16_0_dirs_deg [1026][2] |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 16. | |
const float * | __HANDLES_geosphere_ico_dirs_deg [17] |
3LD geosphere HANDLES (freq = [0 0], [1 0],..., [16 0]) | |
const float * | __HANDLES_geosphere_oct_dirs_deg [17] |
3LD geosphere HANDLES (freq = [0 0], [1 0],..., [16 0]) | |
const int | __geosphere_ico_nPoints [17] |
3LD geosphere number of points (freq = [0 0], [1 0],..., [16 0]) | |
const int | __geosphere_oct_nPoints [17] |
3LD geosphere number of points (freq = [0 0], [1 0],..., [16 0]) | |
const float | __Aalto_Hydrophone_coords_rad [4][2] |
Sensor array coordinates for the custom hydrophone array made at Aalto University [1]. | |
const float | __Sennheiser_Ambeo_coords_rad [4][2] |
Sensor array coordinates for the Sennheiser Ambeo. | |
const float | __Core_Sound_TetraMic_coords_rad [4][2] |
Sensor array coordinates for the Core Sound TetraMic. | |
const float | __Sound_field_SPS200_coords_rad [4][2] |
Sensor array coordinates for the Sound-field SPS200. | |
const float | __Zoom_H3VR_coords_rad [4][2] |
Sensor array coordinates for the Zoom H3VR. | |
const float | __Zylia1D_coords_rad [19][2] |
Sensor array coordinates for the Zylia mic. | |
const float | __Eigenmike32_coords_rad [32][2] |
Sensor array coordinates for the Eigenmike32. | |
const float | __DTU_mic_coords_rad [52][2] |
Sensor array coordinates for the custom 52-sensor array built at the Technical University of Denmark (DTU) [1]. | |
const float | __Eigenmike64_coords_rad [64][2] |
Sensor array coordinates for the Eigenmike64. | |
const float | __default_SENSORcoords64_rad [64][2] |
Default sensor array coordinates. | |
const float | __default_SENSORcoords128_deg [128][2] |
Default sensor array coordinates. | |
const int | __Aalto_Hydrophone_maxOrder |
Max spherical harmonic order for the custom hydrophone array made at Aalto University. | |
const int | __Sennheiser_Ambeo_maxOrder |
Max spherical harmonic order for the Sennheiser Ambeo. | |
const int | __Core_Sound_TetraMic_maxOrder |
Max spherical harmonic order for the Core Sound TetraMic. | |
const int | __Sound_field_SPS200_maxOrder |
Max spherical harmonic order for the Sound-field SPS200. | |
const int | __Zylia_maxOrder |
Max spherical harmonic order for the Zylia mic. | |
const int | __Eigenmike32_maxOrder |
Max spherical harmonic order for the Eigenmike32. | |
const int | __DTU_mic_maxOrder |
Max spherical harmonic order for the custom 52-sensor array built at the Technical University of Denmark (DTU) | |
const int | __Eigenmike64_maxOrder |
Max spherical harmonic order for the Eigenmike64. | |
const float | __Zylia_freqRange [4] |
Sensor array frequency ranges for each SH order, for the Zylia array (should only be used as a rough estimate). | |
const float | __Eigenmike32_freqRange [6] |
Sensor array frequency ranges for each SH order, for the Eigenmike32 (should only be used as a rough estimate) | |
const float | __DTU_mic_freqRange [10] |
Sensor array frequency ranges for each SH order, for the DTU mic (should only be used as a rough estimate) | |
Utilities module
#define _impl_CASSERT_LINE | ( | predicate, | |
line, | |||
file ) typedef char _impl_PASTE(assertion_failed_##file##_,line)[2*!!(predicate)-1]; |
CASSERT helper macro.
Definition at line 88 of file saf_utility_misc.h.
#define _impl_PASTE | ( | a, | |
b ) a##b |
CASSERT helper macro.
Definition at line 86 of file saf_utility_misc.h.
#define DEG2RAD | ( | x | ) | (x * SAF_PI / 180.0f) |
Converts degrees to radians.
Definition at line 99 of file saf_utilities.h.
#define ELEV2INCL | ( | E | ) | ( (SAF_PI/2.0f - E) ) |
Converts elevation to inclincation, (in radians)
Definition at line 95 of file saf_utilities.h.
#define FOURPI ( 12.566370614359172f ) |
4pi (single precision)
Definition at line 92 of file saf_utilities.h.
#define ISEVEN | ( | n | ) | ((n%2 == 0) ? 1 : 0) |
Returns 1 if "n" is even valued, and 0 if it is not.
Definition at line 80 of file saf_utilities.h.
#define ISODD | ( | n | ) | ((n%2 != 0) ? 1 : 0) |
Returns 1 if "n" is odd valued, and 0 if it is not.
Definition at line 85 of file saf_utilities.h.
#define MKSTRING | ( | s | ) | MKSTRING_(s) |
Used to make strings inside of Macros.
Definition at line 114 of file saf_utilities.h.
#define MKSTRING_ | ( | s | ) | #s |
Used to make strings inside of Macros.
Definition at line 109 of file saf_utilities.h.
#define NUM_EARS 2 |
2 (true for most humans)
Definition at line 52 of file saf_utilities.h.
#define RAD2DEG | ( | x | ) | (x * 180.0f / SAF_PI) |
Converts radians to degrees
Definition at line 104 of file saf_utilities.h.
#define saf_assert | ( | x, | |
message ) |
Macro to make an assertion, along with a string explaining its purpose.
Definition at line 133 of file saf_utilities.h.
#define SAF_CASSERT | ( | predicate, | |
file ) _impl_CASSERT_LINE(predicate,__LINE__,file) |
A compile time assertion check.
Validate at compile time that the predicate is true without generating code. This can be used at any point in a source file where typedef is legal.
On success, compilation proceeds normally.
On failure, attempts to typedef an array type of negative size. The offending line will look like: typedef assertion_failed_file_h_42[-1] where file is the content of the second parameter which should typically be related in some obvious way to the containing file name, 42 is the line number in the file on which the assertion appears, and -1 is the result of a calculation based on the predicate failing.
[in] | predicate | The predicate to test. It must evaluate to something that can be coerced to a normal C boolean. |
[in] | file | A sequence of legal identifier characters that should uniquely identify the source file in which this condition appears. |
Taken from (no license): https://stackoverflow.com/questions/807244/c-compiler-asserts-how-to-implement
Definition at line 84 of file saf_utility_misc.h.
Ensures value "a" is clamped between the "min" and "max" values.
Definition at line 61 of file saf_utilities.h.
#define SAF_FALSE ( 0 ) |
Boolean false.
Definition at line 67 of file saf_utilities.h.
#define SAF_ISPOW2 | ( | x | ) | (((x & ~(x-1))==x) ? x : 0) |
Returns 0 if "x" is not a power of 2.
Definition at line 76 of file saf_utilities.h.
#define SAF_MAX | ( | a, | |
b ) (( (a) > (b) ) ? (a) : (b)) |
Returns the maximum of the two values.
Definition at line 58 of file saf_utilities.h.
#define SAF_MIN | ( | a, | |
b ) (( (a) < (b) ) ? (a) : (b)) |
Returns the minimum of the two values.
Definition at line 55 of file saf_utilities.h.
#define SAF_PI ( 3.14159265358979323846264338327950288f ) |
pi constant (single precision)
Definition at line 70 of file saf_utilities.h.
#define SAF_PId ( 3.14159265358979323846264338327950288 ) |
pi constant (double precision)
Definition at line 73 of file saf_utilities.h.
#define saf_print_error | ( | message | ) |
Macro to print a error message along with the filename and line number.
Definition at line 127 of file saf_utilities.h.
#define saf_print_warning | ( | message | ) |
Macro to print a warning message along with the filename and line number.
Definition at line 122 of file saf_utilities.h.
#define SAF_TRUE ( 1 ) |
#define SAF_UNUSED | ( | x | ) | (void)(x) |
Indicates that a particular variable is unused (& squelches any warnings)
Definition at line 118 of file saf_utilities.h.
#define SQRT4PI ( 3.544907701811032f ) |
sqrt(4pi) (single precision)
Definition at line 89 of file saf_utilities.h.
enum BIQUAD_FILTER_TYPES |
Bi-quadratic (second-order) IIR filter design options.
Definition at line 51 of file saf_utility_filters.h.
enum BUTTER_FILTER_TYPES |
Butterworth Infinite Impulse Response (IIR) filter design options.
Enumerator | |
---|---|
BUTTER_FILTER_LPF | low-pass filter |
BUTTER_FILTER_HPF | high-pass filter |
BUTTER_FILTER_BPF | band-pass filter |
BUTTER_FILTER_BSF | band-stop filter |
Definition at line 66 of file saf_utility_filters.h.
enum CONJ_FLAG |
Whether a vector should be conjugated or not (e.g.
prior to dot product)
Enumerator | |
---|---|
NO_CONJ | Do not take the conjugate. |
CONJ | Take the conjugate. |
Definition at line 40 of file saf_utility_veclib.h.
Available euler2rotationMatrix() conventions.
Definition at line 48 of file saf_utility_geometry.h.
enum FIR_FILTER_TYPES |
Finite Impulse Response (FIR) filter design options.
Enumerator | |
---|---|
FIR_FILTER_LPF | low-pass filter |
FIR_FILTER_HPF | high-pass filter |
FIR_FILTER_BPF | band-pass filter |
FIR_FILTER_BSF | band-stop filter |
Definition at line 75 of file saf_utility_filters.h.
enum QMF_FDDATA_FORMAT |
Options for how the frequency domain data is permuted when using qmf.
Enumerator | |
---|---|
QMF_BANDS_CH_TIME | nBands x nChannels x nTimeHops |
QMF_TIME_CH_BANDS | nTimeHops x nChannels x nBands |
Definition at line 43 of file saf_utility_qmf.h.
Options for how the frequency domain data is permuted when using saf_stft.
Enumerator | |
---|---|
SAF_STFT_BANDS_CH_TIME | nBands x nChannels x nTimeHops |
SAF_STFT_TIME_CH_BANDS | nTimeHops x nChannels x nBands |
Definition at line 49 of file saf_utility_fft.h.
Windowing function types.
Symmetric if winlength is odd, and asymmetric if winlength is even. Windows are evaluated: 0 <= n < winlength. Largely taken from: https://en.wikipedia.org/wiki/Window_function
Definition at line 90 of file saf_utility_filters.h.
int anyLessThanf | ( | float * | values, |
int | nValues, | ||
float | threshold ) |
Returns 1, if any value in 'values' (nValues x 1) is less than 'threshold', otherwise, it returns 0.
Definition at line 389 of file saf_utility_misc.c.
void applyBiQuadFilter | ( | float | b[3], |
float | a[3], | ||
float | w_z_12[2], | ||
float * | signal, | ||
int | nSamples ) |
Applies biQuad filter to an input signal using the direct form II difference equation: https://en.wikipedia.org/wiki/Digital_biquad_filter.
[in] | b | b filter coefficients; 3 x 1 |
[in] | a | a filter coefficients; 3 x 1 |
[in,out] | w_z_12 | Previous 2 wn samples (init as 0s); 2 x 1 |
[in,out] | signal | Signal to be filtered/filtered signal; nSamples x 1 |
[in] | nSamples | Number of samples in the signal |
Definition at line 553 of file saf_utility_filters.c.
void applyIIR | ( | float * | in_signal, |
int | nSamples, | ||
int | nCoeffs, | ||
float * | b, | ||
float * | a, | ||
float * | wz, | ||
float * | out_signal ) |
Applies an IIR filter to a time-domain signal (using the direct form II difference equation)
[in] | in_signal | Input signal; nSamples x 1 |
[in] | nSamples | Number of samples to process |
[in] | nCoeffs | Number of filter coefficients |
[in] | b | Filter coefficients for numerator; nCoeffs x 1 |
[out] | a | Filter coefficients for denominator; nCoeffs x 1 |
[in,out] | wz | Previous wn samples (initialise as 0s); (nCoeffs-1) x 1 |
[out] | out_signal | Output signal; nSamples x 1 |
Definition at line 739 of file saf_utility_filters.c.
int bessel_in | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | i_n, | ||
double * | di_n ) |
Computes the values of the modified spherical Bessel function of the first kind (in) and it's derivative (din)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | i_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | di_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 723 of file saf_utility_bessel.c.
void bessel_in_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double * | i_n, | ||
double * | di_n ) |
Computes the modified spherical Bessel function of the first kind (in) and their derivatives (din) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | i_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | di_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 756 of file saf_utility_bessel.c.
void bessel_Jn | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | J_n, | ||
double * | dJ_n ) |
Computes the values of the (cylindrical) Bessel function of the first kind (Jn) and it's derivative (dJn)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | J_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dJ_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 380 of file saf_utility_bessel.c.
int bessel_jn | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | j_n, | ||
double * | dj_n ) |
Computes the values of the spherical Bessel function of the first kind (jn) and it's derivative (djn)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | j_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dj_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 629 of file saf_utility_bessel.c.
void bessel_Jn_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | J_n, | ||
double * | dJ_n ) |
Computes the (cylindrical) Bessel function of the first kind (Jn) and their derivatives (dJn) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | J_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dJ_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 409 of file saf_utility_bessel.c.
void bessel_jn_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double * | j_n, | ||
double * | dj_n ) |
Computes the spherical Bessel function of the first kind (jn) and their derivatives (djn) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | j_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dj_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 662 of file saf_utility_bessel.c.
int bessel_kn | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | k_n, | ||
double * | dk_n ) |
Computes the values of the modified spherical Bessel function of the second kind (kn) and it's derivative (dkn)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | k_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dk_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 906 of file saf_utility_bessel.c.
void bessel_kn_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double * | k_n, | ||
double * | dk_n ) |
Computes the modified spherical Bessel function of the second kind (kn) and their derivatives (dkn) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | k_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dk_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 939 of file saf_utility_bessel.c.
void bessel_Yn | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | Y_n, | ||
double * | dY_n ) |
Computes the values of the (cylindrical) Bessel function of the second kind (Yn) and it's derivative (dYn)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Y_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dY_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 442 of file saf_utility_bessel.c.
int bessel_yn | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | y_n, | ||
double * | dy_n ) |
Computes the values of the spherical Bessel function of the second kind (yn) and it's derivative (dyn)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | y_n | Bessel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dy_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 817 of file saf_utility_bessel.c.
void bessel_Yn_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double * | Y_n, | ||
double * | dY_n ) |
Computes the (cylindrical) Bessel function of the second kind (Yn) and their derivatives (dYn) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Y_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dY_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 471 of file saf_utility_bessel.c.
void bessel_yn_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double * | y_n, | ||
double * | dy_n ) |
Computes the spherical Bessel function of the second kind (yn) and their derivatives (dyn) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | y_n | Bessel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dy_n | Bessel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 850 of file saf_utility_bessel.c.
void biQuadCoeffs | ( | BIQUAD_FILTER_TYPES | filterType, |
float | fc, | ||
float | fs, | ||
float | Q, | ||
float | gain_dB, | ||
float | b[3], | ||
float | a[3] ) |
Calculates 2nd order IIR filter coefficients [1].
[in] | filterType | See BIQUAD_FILTER_TYPES enum |
[in] | fc | Centre frequency, Hz |
[in] | fs | Sampling frequency, Hz |
[in] | Q | Q-factor |
[in] | gain_dB | Gain, dB |
[out] | b | b filter coefficients; 3 x 1 |
[out] | a | a filter coefficients; 3 x 1 |
Definition at line 339 of file saf_utility_filters.c.
void butterCoeffs | ( | BUTTER_FILTER_TYPES | filterType, |
int | order, | ||
float | cutoff1, | ||
float | cutoff2, | ||
float | sampleRate, | ||
double * | b_coeffs, | ||
double * | a_coeffs ) |
Computes Butterworth IIR filter coefficients [1].
The function is numerically identical to the default 'butter' function in Matlab
[in] | filterType | See BUTTER_FILTER_TYPES enum |
[in] | order | Filter order (N) |
[in] | cutoff1 | Filter1 cutoff in Hz, for LPF/HPF, and lower cutoff for BPF/BSF |
[in] | cutoff2 | Filter2 cutoff in Hz, not needed for LPF/HPF, this is the upper cutoff for BPF/BSF |
[in] | sampleRate | Sampling rate in Hz |
[out] | b_coeffs | Filter coefficients for the numerator; LPF/HPF: (order+1) x 1; BPF/BSF: (2*order+1) x 1 |
[out] | a_coeffs | Filter coefficients for the denominator; LPF/HPF: (order+1) x 1; BPF/BSF: (2*order+1) x 1 |
Definition at line 813 of file saf_utility_filters.c.
void calcDVFCoeffs | ( | float | alpha, |
float | rho, | ||
float | fs, | ||
float * | b, | ||
float * | a ) |
Calculate the Distance Variation Function (DVF) filter coefficients, as described in [1].
[in] | alpha | Lateral angle, similar the interaural-polar convention, but specified as an offset from the interaural axis, [0, 180] (deg). See doaToIpsiInteraural() to convert frontal azimuth/elevation to the expected format. |
[in] | rho | Source distance, normalized to head radius, >= 1. |
[in] | fs | Sample rate. |
[out] | b | Numerator coefficients for the DVF shelving filter. |
[out] | a | Denominator coefficients for the DVF shelving filter |
Definition at line 177 of file saf_utility_dvf.c.
void calcDVFShelfParams | ( | int | i, |
float | rho, | ||
float * | g0, | ||
float * | gInf, | ||
float * | fc ) |
Calculate the high shelf gains and cutoff parameters, given a azimuth index i
and distance rho
.
This will be called twice per parameter change and the shelf filter parameters will be linearly interpolated according to the azimuth.
[in] | i | Coefficient table row index |
[in] | rho | Normalized source distance (1 = head radius) |
[out] | g0 | High shelf gain at DC [dB] |
[out] | gInf | High shelf gain at Nyquist frequency [dB] |
[out] | fc | Shelf cutoff frequency [Hz] |
Definition at line 81 of file saf_utility_dvf.c.
void cart2sph | ( | float * | cart, |
int | nDirs, | ||
int | anglesInDegreesFLAG, | ||
float * | sph ) |
Converts Cartesian coordinates to spherical coordinates.
[in] | cart | Cartesian coordinates; FLAT: nDirs x 3 |
[in] | nDirs | Number of directions/coordinates |
[in] | anglesInDegreesFLAG | 0: dirs wanted in radians, 1: degrees instead |
[out] | sph | Spherical coordinates; FLAT: nDirs x 3 |
Definition at line 298 of file saf_utility_geometry.c.
void cmplxPairUp | ( | double_complex * | in_vec, |
double_complex * | out_vec, | ||
int | len ) |
Pairs up complex numbers and sorts them in ascending order based on their real parts first, and then on their imaginary parts.
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector |
[in] | len | Number of elements in vectors |
Definition at line 340 of file saf_utility_sort.c.
void convd | ( | double * | x, |
double * | h, | ||
int | len_x, | ||
int | len_h, | ||
double * | y ) |
Basic 1-D direct convolution in the time-domain (real double precision)
[in] | x | Input sequence; len_x x 1 |
[in] | h | Filter sequence; len_h x 1 |
[in] | len_x | Length of 'x' |
[in] | len_h | Length of 'h' |
[out] | y | Output sequence; (len_x+len_h-1) x 1 |
Definition at line 260 of file saf_utility_misc.c.
void convert_0_360To_m180_180 | ( | float * | dirs_deg, |
int | nDirs ) |
Wraps around any angles exeeding 180 degrees (e.g., 200-> -160)
Definition at line 51 of file saf_utility_misc.c.
float convertBW2Q | ( | float | BW | ) |
Converts filter octave band-width to Q-factor.
Definition at line 318 of file saf_utility_filters.c.
float convertQ2BW | ( | float | Q | ) |
Converts filter Q-factor to octave band-width.
Definition at line 326 of file saf_utility_filters.c.
void convhull3d | ( | const float * | vertices, |
const int | nVert, | ||
int ** | faces, | ||
int * | nFaces ) |
Builds the convex hull of an arrangement of vertices in 3-dimensional space.
This function employs algorithms originally implemented in MATLAB by George Papazafeiropoulos [1] (BSD 2-clause license), which are based on [2].
[in] | vertices | The vertices; FLAT: nDirs x 3 |
[in] | nVert | Number of vertices |
[out] | faces | (&) The face indices; FLAT: nFaces x 3 |
[out] | nFaces | (&) Number of faces found |
Definition at line 512 of file saf_utility_geometry.c.
void convhullnd | ( | const float * | points, |
const int | nPoints, | ||
const int | nd, | ||
int ** | faces, | ||
int * | nFaces ) |
Builds the convex hull of an arrangement of points in N-dimensional space.
This function employs algorithms originally implemented in MATLAB by George Papazafeiropoulos [1] (BSD 2-clause license), which are based on [2].
[in] | points | The input points; FLAT: nDirs x nd |
[in] | nPoints | Number of points |
[in] | nd | The number of dimensions (max=5) |
[out] | faces | (&) The face indices; FLAT: nFaces x nd |
[out] | nFaces | (&) Number of faces found |
Definition at line 539 of file saf_utility_geometry.c.
void convz | ( | double_complex * | x, |
double_complex * | h, | ||
int | len_x, | ||
int | len_h, | ||
double_complex * | y ) |
Basic 1-D direct convolution in the time-domain (complex double precision)
[in] | x | Input sequence; len_x x 1 |
[in] | h | Filter sequence; len_h x 1 |
[in] | len_x | Length of 'x' |
[in] | len_h | Length of 'h' |
[out] | y | Output sequence; (len_x+len_h-1) x 1 |
Definition at line 282 of file saf_utility_misc.c.
void crossProduct3 | ( | float | a[3], |
float | b[3], | ||
float | c[3] ) |
Cross product between two 3-element floating point vectors (c = a x b)
Definition at line 458 of file saf_utility_geometry.c.
void cxcorr | ( | float * | a, |
float * | b, | ||
float * | x_ab, | ||
size_t | la, | ||
size_t | lb ) |
Calculates the cross correlation between two vectors.
[in] | a | Vector a; la x 1 |
[in] | b | Vector b; lb x 1 |
[in] | la | Length of vector a |
[in] | lb | Length of vector b |
[out] | x_ab | Cross-correlation between a and b; (la + lb - 1) x 1 |
Definition at line 195 of file saf_utility_misc.c.
void delaunaynd | ( | const float * | points, |
const int | nPoints, | ||
const int | nd, | ||
int ** | DT, | ||
int * | nDT ) |
Computes the Delaunay triangulation of an arrangement of points in N-dimensional space.
This function employs algorithms originally implemented in MATLAB by George Papazafeiropoulos [1] (BSD 2-clause license), which are based on [2].
[in] | points | The intput points; FLAT: nDirs x nd |
[in] | nPoints | Number of points |
[in] | nd | The number of dimensions (max=5) |
[out] | DT | (&) The indices defining the Delaunay triangulation of the points; FLAT: nDT x (nd+1) |
[out] | nDT | (&) Number of triangulations |
Definition at line 566 of file saf_utility_geometry.c.
void doaToIpsiInteraural | ( | float | azimuth, |
float | elevation, | ||
float * | alphaLR, | ||
float * | betaLR ) |
Convert a frontal azimuth/elevation to a modified Interaural-Polar coordinate.
Whereas Interaural-Polar coordinates are with reference to the median plane, alpha [0, 90], beta [0, 180] this modification is with reference to the transverse plane (ipsilateral ear direction), alpha [0, 180], beta [0, 90]. This is intended for the input to interpDVFShelfParams()
for calculating DVF filter parameters, which are framed as an offset from the interaural axis, and based on a spherical head model (i.e. elevation translates to a change in lateral angle).
[in] | azimuth | Source DoA, 0˚ is forward-facing, angle increases counter-clockwise (deg, [-360, 360]). |
[in] | elevation | Source elevation, angles increase upward from the horizon (deg, [-180, 180]). |
[out] | alphaLR | 2-element array of lateral angle alpha for left and right ear (deg, [0,180]]). |
[out] | betaLR | 2-element array of vertal angle beta for left and right ear (deg, [0,90]]). |
Definition at line 191 of file saf_utility_dvf.c.
void dvfShelfCoeffs | ( | float | g0, |
float | gInf, | ||
float | fc, | ||
float | fs, | ||
float * | b0, | ||
float * | b1, | ||
float * | a1 ) |
Calculate the DVF filter coefficients from shelving filter parameters.
[in] | g0 | High shelf gain at DC [dB]. |
[in] | gInf | High shelf gain at Nyquist frequency [dB]. |
[in] | fc | Shelf cutoff frequency [Hz]. |
[out] | fs | Sample rate. |
[out] | b0 | Numerator coefficient 1. |
[out] | b1 | Numerator coefficient 2. |
[out] | a1 | Denominator coefficient 2. |
Definition at line 148 of file saf_utility_dvf.c.
void euler2Quaternion | ( | float | alpha, |
float | beta, | ||
float | gamma, | ||
int | degreesFlag, | ||
EULER_ROTATION_CONVENTIONS | convention, | ||
quaternion_data * | Q ) |
Converts Euler angles to a quaternion.
Definition at line 123 of file saf_utility_geometry.c.
void euler2rotationMatrix | ( | float | alpha, |
float | beta, | ||
float | gamma, | ||
int | degreesFlag, | ||
EULER_ROTATION_CONVENTIONS | convention, | ||
float | R[3][3] ) |
Constructs a 3x3 rotation matrix from the Euler angles.
[in] | alpha | first rotation angle |
[in] | beta | first rotation angle |
[in] | gamma | first rotation angle |
[in] | degreesFlag | 1: angles are in degrees, 0: angles are in radians |
[in] | convention | see EULER_ROTATION_CONVENTIONS enum |
[out] | R | resulting 3x3 rotation matrix |
Definition at line 213 of file saf_utility_geometry.c.
void evalBiQuadTransferFunction | ( | float | b[3], |
float | a[3], | ||
float * | freqs, | ||
int | nFreqs, | ||
float | fs, | ||
int | mag2dB, | ||
float * | magnitude, | ||
float * | phase_rad ) |
Evaluates the 2nd order IIR transfer function at one or more frequencies, returning its magnitude and/or phase response.
[in] | b | b filter coefficients; 3 x 1 |
[in] | a | a filter coefficients; 3 x 1 |
[in] | freqs | Frequencies at which to evaluate, Hz; nFreqs x 1 |
[in] | nFreqs | Number of frequencies at which to avaluate |
[in] | fs | Sampling frequency, Hz |
[in] | mag2dB | 0: 'magnitude' returned in linear scale, 1: dB scale |
[out] | magnitude | Magnitude, at each frequency (set to NULL of not wanted); nFreqs x 1 |
[out] | phase_rad | Phase, radians, at each frequency (set to NULL of not wanted); nFreqs x 1 |
Definition at line 575 of file saf_utility_filters.c.
void evalIIRTransferFunction | ( | double * | b, |
double * | a, | ||
int | nCoeffs, | ||
float * | freqs, | ||
int | nFreqs, | ||
float | fs, | ||
int | mag2dB, | ||
float * | magnitude, | ||
float * | phase_rad ) |
Computes magnitude and phase response of an IIR filter from its coefficients at user-specified frequencies (Hz).
The function optionally returns magnitude and/or phase. The function is tested against Matlab's 'freqz' function.
evalIIRTransferFunctionf()
(operating on float type coefficients) for a more efficient implementation (e.g. for lower order filters).[in] | b | Filter coefficients for the numerator; nCoeffs x 1 |
[in] | a | Filter coefficients for the denominator; nCoeffs x 1 |
[in] | nCoeffs | Number of filter coefficients |
[in] | freqs | Frequencies at which to evaluate the magnitude/phase response (Hz); nFreqs x 1 |
[in] | nFreqs | Number of frequencies |
[in] | fs | Sampling rate (Hz) |
[in] | mag2dB | 0: 'magnitude' returned in linear scale, 1: dB scale |
[out] | magnitude | Magnitudes at each frequency (set to NULL of not wanted); nFreqs x 1 |
[out] | phase_rad | Phases at each frequency (radians; set to NULL of not wanted); nFreqs x 1 |
Definition at line 673 of file saf_utility_filters.c.
void evalIIRTransferFunctionf | ( | float * | b, |
float * | a, | ||
int | nCoeffs, | ||
float * | freqs, | ||
int | nFreqs, | ||
float | fs, | ||
int | mag2dB, | ||
float * | magnitude, | ||
float * | phase_rad ) |
Computes magnitude and phase response of an IIR filter from its coefficients (floats) at user-specified frequencies (Hz).
evalIIRTransferFunction()
is recommended.The function optionally returns magnitude and/or phase. The function is tested against Matlab's 'freqz' function.
[in] | b | Filter coefficients for the numerator; nCoeffs x 1 |
[in] | a | Filter coefficients for the denominator; nCoeffs x 1 |
[in] | nCoeffs | Number of filter coefficients |
[in] | freqs | Frequencies at which to evaluate the magnitude/phase response (Hz); nFreqs x 1 |
[in] | nFreqs | Number of frequencies |
[in] | fs | Sampling rate (Hz) |
[in] | mag2dB | 0: 'magnitude' returned in linear scale, 1: dB scale |
[out] | magnitude | Magnitudes at each frequency (set to NULL of not wanted); nFreqs x 1 |
[out] | phase_rad | Phases at each frequency (radians; set to NULL of not wanted); nFreqs x 1 |
Definition at line 609 of file saf_utility_filters.c.
long double factorial | ( | int | n | ) |
Factorial, accurate up to n<=25.
[in] | n | Order |
Definition at line 176 of file saf_utility_misc.c.
void faf_IIRFilterbank_apply | ( | void * | hFaF, |
float * | inSig, | ||
float ** | outBands, | ||
int | nSamples ) |
Applies the Favrot & Faller filterbank.
[in] | hFaF | faf_IIRFilterbank handle |
[in] | inSig | Input signal; nSamples x 1 |
[out] | outBands | Output band signals; (nCutoffFreqs+1) x nSamples |
[in] | nSamples | Number of samples to process |
Definition at line 1175 of file saf_utility_filters.c.
void faf_IIRFilterbank_create | ( | void ** | phFaF, |
int | order, | ||
float * | fc, | ||
int | nCutoffFreqs, | ||
float | sampleRate, | ||
int | maxNumSamples ) |
Computes a bank of IIR filter coefficients required to divide a signal into frequency bands, based on the design by Favrot & Faller [1].
The function employs the 'butterCoeffs' function to compute a low-pass filter for the first band, high-pass filter for the last band, and band-pass filter for the inbetween bands (nCutoffFreqs must be 2 or more).
[in] | phFaF | (&) address of the faf_IIRFilterbank handle |
[in] | order | Filter order, 1 or 3 |
[in] | fc | Vector of cutoff frequencies; nCutoffFreqs x 1 |
[in] | nCutoffFreqs | Number of cutoff frequencies in vector 'fc'. |
[in] | sampleRate | Sampling rate in Hz |
[in] | maxNumSamples | Maximum number of samples to expect at a time when calling faf_IIRFilterbank_apply() |
Definition at line 1046 of file saf_utility_filters.c.
void faf_IIRFilterbank_destroy | ( | void ** | hFaF | ) |
Destroys an instance of the Favrot & Faller filterbank.
[in] | hFaF | (&) address of the faf_IIRFilterbank handle |
Definition at line 1240 of file saf_utility_filters.c.
void faf_IIRFilterbank_flushBuffers | ( | void * | hFaF | ) |
Zeros the delay lines used during faf_IIRFilterbank_apply()
[in] | hFaF | faf_IIRFilterbank handle |
Definition at line 1227 of file saf_utility_filters.c.
void fftconv | ( | float * | x, |
float * | h, | ||
int | x_len, | ||
int | h_len, | ||
int | nCH, | ||
float * | y ) |
FFT-based convolution of signal 'x' with filter 'h'.
Input channels and filters are zero padded to avoid circular convolution artefacts.
[in] | x | Input(s); FLAT: nCH x x_len |
[in] | h | Filter(s); FLAT: nCH x h_len |
[in] | x_len | Length of input signal, in samples |
[in] | h_len | Length of filter, in samples |
[in] | nCH | Number of channels |
[out] | y | Output signal(s); FLAT: nCH x (x_len+h_len-1) |
Definition at line 157 of file saf_utility_fft.c.
void fftfilt | ( | float * | x, |
float * | h, | ||
int | x_len, | ||
int | h_len, | ||
int | nCH, | ||
float * | y ) |
FFT-based convolution for FIR filters.
Similar to fftconv, other than only the first x_len samples of y are returned. It has parity with the fftfilt function in Matlab, except it just uses one big FFT (i.e. no overlap-add).
[in] | x | Input(s); FLAT: nCH x x_len |
[in] | h | Filter(s); FLAT: nCH x h_len |
[in] | x_len | Length of input signal, in samples |
[in] | h_len | Length of filter, in samples |
[in] | nCH | Number of channels |
[out] | y | Output signal(s); FLAT: nCH x x_len |
Definition at line 210 of file saf_utility_fft.c.
void findClosestGridPoints | ( | float * | grid_dirs, |
int | nGrid, | ||
float * | target_dirs, | ||
int | nTarget, | ||
int | degFLAG, | ||
int * | idx_closest, | ||
float * | dirs_closest, | ||
float * | angle_diff ) |
Finds indicies into "grid_dirs" that are the closest to "target dirs".
e.g. grid_dirs[idx_closest[0]] will be the closest direction in "grid_dirs" to target_dirs[0].
[in] | grid_dirs | Spherical coordinates of grid directions; FLAT: nGrid x 2 |
[in] | nGrid | Number of directions in grid |
[in] | target_dirs | Spherical coordinates of target directions; FLAT: nTarget x 2 |
[in] | nTarget | Number of target directions to find |
[in] | degFLAG | '0' coordinates are in RADIANS, '1' coords are in DEGREES |
[out] | idx_closest | Resulting indices (set to NULL to ignore); nTarget x 1 |
[out] | dirs_closest | grid_dirs(idx_closest); (set to NULL to ignore); nTarget x 1 |
[out] | angle_diff | Angle diff between target and grid dir, in degrees (set to NULL to ignore); nTarget x 1 |
Definition at line 368 of file saf_utility_sort.c.
void findClosestGridPointsCartesian | ( | float * | grid_dirs_xyz, |
int | nGrid, | ||
float * | target_dirs_xyz, | ||
int | nTarget, | ||
int * | idx_closest, | ||
float * | dirs_xyz_closest, | ||
float * | angle_diff ) |
Finds indicies into "grid_dirs_xyz" that are the closest to "target dirs_xyz".
[in] | grid_dirs_xyz | Grid directions (Cartesian unit-length); FLAT: nGrid x 3 |
[in] | nGrid | Number of directions in grid |
[in] | target_dirs_xyz | Target directions (Cartesian unit-length); FLAT: nTarget x 3 |
[in] | nTarget | Number of target directions to find |
[out] | idx_closest | Resulting indices (set to NULL to ignore); nTarget x 1 |
[out] | dirs_xyz_closest | grid_dirs(idx_closest); (set to NULL to ignore); nTarget x 1 |
[out] | angle_diff | Angle diff between target and grid dir, in degrees (set to NULL to ignore); nTarget x 1 |
Definition at line 446 of file saf_utility_sort.c.
void findCombinations | ( | int * | arrValues, |
int | nValues, | ||
int | nElements, | ||
int ** | comb, | ||
int * | nComb ) |
Given an array of values, find all the possible combinations (nCr) for subgroups of "nElements"; derived based on [1].
[in] | arrValues | The array values; nValues x 1 |
[in] | nValues | Number of array values (n) |
[in] | nElements | Number of elements per combination (r) |
[out] | comb | (&) the combinations; FLAT: nComb x nElements |
[out] | nComb | (&) the number of combinations (nCr) |
Definition at line 491 of file saf_utility_misc.c.
void findERBpartitions | ( | float * | centerFreq, |
int | nBands, | ||
float | maxFreqLim, | ||
int ** | erb_idx, | ||
float ** | erb_freqs, | ||
int * | nERBBands ) |
This function takes a frequency vector and groups its frequencies into critical bands [Equivalent-Rectangular Bandwidth (ERB)].
e.g.
[in] | centerFreq | Frequency vector; nBands x 1 |
[in] | nBands | Number of bins/bands in frequency vector |
[in] | maxFreqLim | Past this frequency the bands are grouped into 1 band |
[out] | erb_idx | (&) ERB indices; nERBBands x 1 |
[out] | erb_freqs | (&) ERB frequencies; nERBBands x 1 |
[out] | nERBBands | (&) Number of ERB bands; 1 x 1 |
Definition at line 102 of file saf_utility_misc.c.
void FIRCoeffs | ( | FIR_FILTER_TYPES | filterType, |
int | order, | ||
float | cutoff1, | ||
float | cutoff2, | ||
float | sampleRate, | ||
WINDOWING_FUNCTION_TYPES | windowType, | ||
int | scalingFLAG, | ||
float * | filter ) |
Computes FIR filter coefficients by windowing.
When using the Hamming window, and scalingFLAG=1, the function is numerically identical to the default 'fir1' function in Matlab (when using it in single precision mode) [1].
Some guidelines regarding the approx order (N) for certain filters. i.e. the orders where you actually get the expected -6dB attenuation at the cutoff frequency specified (fs=48kHz, Hamming window, scalingFLAG=1). (Use these figures only just to get a rough idea)
[in] | filterType | See FIR_FILTER_TYPES enum |
[in] | order | Filter order (N). Must be even. |
[in] | cutoff1 | Filter1 cutoff in Hz, for LPF/HPF, and lower cutoff for BPF/BSF |
[in] | cutoff2 | Filter2 cutoff in Hz, not needed for LPF/HPF, this is the upper cutoff for BPF/BSF |
[in] | sampleRate | Sampling rate in Hz |
[in] | windowType | See WINDOWING_FUNCTION_TYPES enum |
[in] | scalingFLAG | '0' none, '1' scaling applied to ensure passband is at 0dB |
[out] | filter | Filter coefficients/weights/taps; (order+1) x 1 |
Definition at line 1268 of file saf_utility_filters.c.
void FIRFilterbank | ( | int | order, |
float * | fc, | ||
int | nCutoffFreqs, | ||
float | sampleRate, | ||
WINDOWING_FUNCTION_TYPES | windowType, | ||
int | scalingFLAG, | ||
float * | filterbank ) |
Computes a bank of FIR filter coefficients required to divide a signal into frequency bands.
Provided the order is sufficient, the sum of the bands should reconstruct the original (although, shifted in time due to group delay) e.g fc[1] = { 1000 };
e.g fc[3] = { 1000, 2000, 4000 };
[in] | order | Filter order. Must be even. |
[in] | fc | Vector of cutoff frequencies; nCutoffFreqs x 1 |
[in] | nCutoffFreqs | Number of cutoff frequencies in vector 'fc'. |
[in] | sampleRate | Sampling rate in Hz |
[in] | windowType | See WINDOWING_FUNCTION_TYPES enum |
[in] | scalingFLAG | '0' none, '1' scaling applied to ensure passbands are at 0dB |
[out] | filterbank | Filter coefficients/weights/taps; FLAT: (nCutoffFreqs+1) x (order+1) |
Definition at line 1362 of file saf_utility_filters.c.
void flattenMinphase | ( | float * | x, |
int | len ) |
Equalises input sequence by its minimum phase form, in order to bring its magnitude response to unity, as described in [1].
[in,out] | x | Input; len x 1 |
[in] | len | Length of input |
Definition at line 226 of file saf_utility_filters.c.
float Frob_norm | ( | float * | M, |
int | lenX, | ||
int | lenY ) |
Returns the Frobenius Norm of a matrix M, of dimensions: lenX x lenY.
Definition at line 436 of file saf_utility_geometry.c.
void getDecorrelationDelays | ( | int | nChannels, |
float * | freqs, | ||
int | nFreqs, | ||
float | fs, | ||
int | maxTFdelay, | ||
int | hopSize, | ||
int * | delayTF ) |
Returns delay values for multiple channels per frequency, such that once applied to an input signal (via simple frequency-dependent delay lines), the resulting signal is decorrelated w.r.t the original.
[in] | nChannels | Number of channels |
[in] | freqs | A vector with the centre frequency for each band in the filterbank or bin in the STFT. Use e.g. afSTFT_getCentreFreqs() or getUniformFreqVector() to obtain it; nFreqs x 1 |
[in] | nFreqs | Number of elements in frequency vector |
[in] | fs | Sampling rate |
[in] | maxTFdelay | Max number of time-slots to delay |
[in] | hopSize | STFT hop size |
[out] | delayTF | The resulting time delays per channel and frequency; FLAT: nFreq x nChannels |
Definition at line 71 of file saf_utility_decor.c.
float getDistBetween2Points | ( | float | point_a[3], |
float | point_b[3] ) |
Returns the distance between "point_a" and "point_b".
Definition at line 488 of file saf_utility_geometry.c.
float getDistBetweenPointAndLine | ( | float | point[3], |
float | v1[3], | ||
float | v2[3] ) |
Returns the distance between a "point" and an infinite line described by the two points "v1" and "v2".
Definition at line 470 of file saf_utility_geometry.c.
void getOctaveBandCutoffFreqs | ( | float * | centreFreqs, |
int | nCentreFreqs, | ||
float * | cutoffFreqs ) |
Converts octave band CENTRE frequencies into CUTOFF frequencies.
The lower and upper CENTRE frequencies only have their upper and lower CUTOFF frequencies computed, respectively. e.g.:
becomes:
Passing cutoffFreqs[5] to FIRFilterbank(), will give filter coefficients for the following:
(Basically, band 125Hz also encapsulates everything down to DC, and band 4kHz also encapsulates everything up to Nyquist)
[in] | centreFreqs | Centre frequencies (octave bands); nCentreFreqs x 1 |
[in] | nCentreFreqs | Number of centre frequencies |
[out] | cutoffFreqs | Cutoff frequencies, which encapsulate the specified centre frequencies by 1 octave; (nCentreFreqs-1) x 1 |
Definition at line 214 of file saf_utility_filters.c.
void getUniformFreqVector | ( | int | fftSize, |
float | fs, | ||
float * | freqVector ) |
Calculates the frequencies (in Hz) of uniformly spaced bins, for a given FFT size and sampling rate.
[in] | fftSize | FFT size |
[in] | fs | Sampling rate |
[out] | freqVector | 0:fs/(fftSize/2):fs/2; (fftSize/2+1) x 1 |
Definition at line 145 of file saf_utility_fft.c.
void getVoronoiWeights | ( | float * | dirs_deg, |
int | nDirs, | ||
int | diagFLAG, | ||
float * | weights ) |
Computes the integration weights, based on the areas of each face of the corresponding Voronoi diagram [sum(weights)=4pi].
[in] | dirs_deg | Coordinates for spherically arranged points, in degrees; FLAT: nDirs x 2 |
[in] | nDirs | Number of points/directions |
[in] | diagFLAG | 0: weights returned as vector, 1: weights given along the diagonal of a square matrix |
[out] | weights | The weights; nDirs x 1, or FLAT: nDirs x nDirs |
Definition at line 943 of file saf_utility_geometry.c.
void getWindowingFunction | ( | WINDOWING_FUNCTION_TYPES | type, |
int | winlength, | ||
float * | win ) |
Computes the weights of a specific windowing function.
Weights are symmetric if winlength is odd, and are asymmetric if winlength is even.
i.e. if winlength is even:
if odd:
[in] | type | See WINDOWING_FUNCTION_TYPES enum |
[in] | winlength | Window length in samples |
[out] | win | Windowing function; winlength x 1 |
Definition at line 201 of file saf_utility_filters.c.
void gexpm | ( | float * | D, |
int | sizeD, | ||
int | m1, | ||
float * | Y ) |
Numerically solves first-order, linear, homogeneous differential equation systems, with non-constant coefficients, by generalization of the Pade- approximant method for exponential matrices.
The equations are described in matrix form as Y'(t) = D(t)*Y(t) where D and Y are square-matrix functions of scalar t. The initial condition is Y(0) = I (the identity matrix), and the result is Y(1). For the special case of a constant coefficient matrix D, gexpm is equivalent to the standard matrix exponential (expm).
m1: true or false, optional, default should be false. "minus 1" flag: if m1 = false the generalized exponential is Y; if true it is Y+I. gexpm is analogous to the expm1 function ("exponential-minus-1") when m1 is true.
This function is based on the Matlab script found: mathworks.com/matlabcentral/fileexchange/50413-generalized-matrix-exponential
Copyright (c) 2015, Kenneth Johnson (BSD-3-clause license)
Definition at line 511 of file saf_utility_misc.c.
int hankel_hn1 | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | h_n1, | ||
double_complex * | dh_n1 ) |
Computes the values of the spherical Hankel function of the first kind (hn1) and it's derivative (dhn1)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | h_n1 | Hankel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dh_n1 | Hankel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 995 of file saf_utility_bessel.c.
void hankel_Hn1 | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | Hn1_n, | ||
double_complex * | dHn1_n ) |
Computes the values of the (cylindrical) Hankel function of the first kind (Hn1) and it's derivative (dHn1)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Hn1_n | Hankel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dHn1_n | Hankel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 504 of file saf_utility_bessel.c.
void hankel_Hn1_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | Hn1_n, | ||
double_complex * | dHn1_n ) |
Computes the (cylindrical) Hankel function of the first kind (Hn1) and their derivatives (dHn1) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Hn1_n | Hankel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dHn1_n | Hankel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 531 of file saf_utility_bessel.c.
void hankel_hn1_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double_complex * | h_n1, | ||
double_complex * | dh_n1 ) |
Computes the spherical Hankel function of the first kind (hn1) and their derivatives (dhn1) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | h_n1 | Hankel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dh_n1 | Hankel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 1028 of file saf_utility_bessel.c.
int hankel_hn2 | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | h_n2, | ||
double_complex * | dh_n2 ) |
Computes the values of the spherical Hankel function of the second kind (hn2) and it's derivative (dhn2)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | h_n2 | Hankel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dh_n2 | Hankel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 1092 of file saf_utility_bessel.c.
void hankel_Hn2 | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | Hn2_n, | ||
double_complex * | dHn2_n ) |
Computes the values of the (cylindrical) Hankel function of the second kind (Hn2) and it's derivative (dHn2)
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Hn2_n | Hankel values (set as NULL if not required); FLAT: nZ x 1 |
[out] | dHn2_n | Hankel derivative values (set as NULL if not required); FLAT: nZ x 1 |
Definition at line 562 of file saf_utility_bessel.c.
void hankel_Hn2_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
double_complex * | Hn2_n, | ||
double_complex * | dHn2_n ) |
Computes the (cylindrical) Hankel function of the second kind (Hn2) and their derivatives (dHn2) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | Hn2_n | Hankel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dHn2_n | Hankel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 591 of file saf_utility_bessel.c.
void hankel_hn2_ALL | ( | int | N, |
double * | z, | ||
int | nZ, | ||
int * | maxN, | ||
double_complex * | h_n2, | ||
double_complex * | dh_n2 ) |
Computes the spherical Hankel function of the second kind (hn2) and their derivatives (dhn2) for ALL orders from 0 to N.
[in] | N | Function order (highest is ~30 given numerical precision) |
[in] | z | Input values; nZ x 1 |
[in] | nZ | Number of input values |
[out] | maxN | (&) maximum function order that could be computed <=N |
[out] | h_n2 | Hankel values (set as NULL if not required); FLAT: nZ x (N+1) |
[out] | dh_n2 | Hankel derivative values (set as NULL if not required); FLAT: nZ x (N+1) |
Definition at line 1125 of file saf_utility_bessel.c.
void hilbert | ( | float_complex * | x, |
int | x_len, | ||
float_complex * | y ) |
Computes the discrete-time analytic signal via the Hilbert transform [1].
The magnitude of the output is the envelope, and imaginary part is the actual Hilbert transform. (Functionally identical to Matlab's 'hilbert' function)
[in] | x | Input; x_len x 1 |
[in] | x_len | Length of input signal, in samples |
[out] | y | Output analytic signal; x_len x 1 |
Definition at line 230 of file saf_utility_fft.c.
void interpDVFShelfParams | ( | float | theta, |
float | rho, | ||
float * | iG0, | ||
float * | iGInf, | ||
float * | iFc ) |
Calculate the shelving filter parameters for the Distance Variation Function filter from the source (ipsilateral) azimuth and distance.
[in] | theta | Lateral angle, on the inter-aural axis [0..180] (deg) |
[in] | rho | Source distance, normalized to head radius, >= 1 |
[out] | iG0 | Interpolated DC gain |
[out] | iGInf | Interpolated high shelf gain |
[out] | iFc | Interpolated high shelf cutoff frequency |
Definition at line 107 of file saf_utility_dvf.c.
void interpolateFiltersH | ( | int | inFFTsize, |
int | outFFTsize, | ||
int | nFilters, | ||
float_complex * | filters_in, | ||
float_complex * | filters_out ) |
Interpolate filters (w.r.t.
frequency) in the frequency-domain
[in] | inFFTsize | Input FFT size |
[in] | outFFTsize | Output FFT size |
[in] | nFilters | Number of filters to interpolate |
[in] | filters_in | Input filters; FLAT: inFFTsize x nFilters |
[out] | filters_out | Output filters; FLAT: outFFTsize x nFilters |
Definition at line 274 of file saf_utility_filters.c.
float L2_norm | ( | float * | v, |
int | lenV ) |
Returns the L2 (Euclidean) norm of an arbitrary length vector.
Definition at line 422 of file saf_utility_geometry.c.
float L2_norm3 | ( | float | v[3] | ) |
Returns the L2 (Euclidean) norm of a 3-element vector.
Definition at line 414 of file saf_utility_geometry.c.
void lagrangeWeights | ( | int | N, |
float * | x, | ||
int | len_x, | ||
float * | weights ) |
Computes Lagrange interpolation weights of order 'N' for value 'x'.
[in] | N | Order |
[in] | x | Values; len_x x 1 |
[in] | len_x | Number of values |
[out] | weights | Weights; (ORDER+1) x len_x |
Definition at line 81 of file saf_utility_misc.c.
void latticeDecorrelator_apply | ( | void * | hDecor, |
float_complex *** | inFrame, | ||
int | nTimeSlots, | ||
float_complex *** | decorFrame ) |
Applies the lattice all-pass-filter-based multi-channel signal decorrelator.
[in] | hDecor | lattice decorrelator handle |
[in] | inFrame | input frame; nBands x nCH x nTimeSlots |
[in] | nTimeSlots | Number of time slots per frame |
[out] | decorFrame | decorrelated frame; nBands x nCH x nTimeSlots |
Definition at line 340 of file saf_utility_decor.c.
void latticeDecorrelator_create | ( | void ** | phDecor, |
float | fs, | ||
int | hopsize, | ||
float * | freqVector, | ||
int | nBands, | ||
int | nCH, | ||
int * | orders, | ||
float * | freqCutoffs, | ||
int | nCutoffs, | ||
int | maxDelay, | ||
int | lookupOffset, | ||
float | enComp_coeff ) |
Creates an instance of the lattice all-pass-filter-based multi-channel signal decorrelator.
This decorrelator is intended for decorrelating signals in the time-frequency domain, and is therefore well-suited for audio coding [1] or Direction Audio Coding (DirAC) [2] purposes.
[in] | phDecor | (&) address of lattice decorrelator handle |
[in] | fs | Sampling rate |
[in] | hopsize | Hopsize in samples |
[in] | freqVector | A vector with the centre frequency for each band in the filterbank or bin in the STFT. Use e.g. afSTFT_getCentreFreqs() or getUniformFreqVector() to obtain it; nBands x 1 |
[in] | nBands | Number of bands |
[in] | nCH | Number of channels |
[in] | orders | Lattice all-pass filter orders (2,3,4,6,8,10,12,14, 15,16 18, or 20) per band grouping (except the last one); nCutoffs x 1 |
[in] | freqCutoffs | Frequency cut-offs defining the band groupings; nCutoffs x 1 |
[in] | nCutoffs | Number of cutoff frequencies |
[in] | maxDelay | Maximum static delay (hops, i.e. maxDelay*hopsize) |
[in] | lookupOffset | Optional offset for look-up tables (set to 0 if using just one instance) |
[in] | enComp_coeff | Energy compensation coefficient, [0..1] |
Definition at line 194 of file saf_utility_decor.c.
void latticeDecorrelator_destroy | ( | void ** | phDecor | ) |
Destroys an instance of the lattice all-pass-filter-based multi-channel signal decorrelator.
[in] | phDecor | (&) address of lattice decorrelator handle |
Definition at line 295 of file saf_utility_decor.c.
void latticeDecorrelator_reset | ( | void * | hDecor | ) |
Sets the internal buffers to zero.
Definition at line 323 of file saf_utility_decor.c.
float matlab_fmodf | ( | float | x, |
float | y ) |
C fmodf function, except it behaves like 'mod' in Matlab (i.e.
with the wrap around for negative values of 'x')
[in] | x | Value 'x' |
[in] | y | Value 'y' |
Definition at line 190 of file saf_utility_misc.c.
int nextpow2 | ( | int | numsamp | ) |
A simple function which returns the next power of 2.
Taken from (no license): https://github.com/amaggi/legacy-code
Definition at line 64 of file saf_utility_misc.c.
void polyd_m | ( | double * | X, |
double_complex * | poly, | ||
int | size_x ) |
Convert roots of a matrix to polynomial (real double precision)
[in] | X | Square input matrix; size_x x size_x |
[out] | poly | Polynomials; (size_x+1) x 1 |
[in] | size_x | Dimensions of square matrix 'X' |
Definition at line 340 of file saf_utility_misc.c.
void polyd_v | ( | double * | x, |
double * | poly, | ||
int | len_x ) |
Convert roots of a vector to polynomial (real double precision)
[in] | x | Input vector; len_x x 1 |
[out] | poly | Polynomials; (len_x+1) x 1 |
[in] | len_x | Length of vector 'x' |
Definition at line 304 of file saf_utility_misc.c.
void polyz_v | ( | double_complex * | x, |
double_complex * | poly, | ||
int | len_x ) |
Convert roots of a vector to polynomial (complex double precision)
[in] | x | Input vector; len_x x 1 |
[out] | poly | Polynomials; (len_x+1) x 1 |
[in] | len_x | Length of vector 'x' |
Definition at line 322 of file saf_utility_misc.c.
void qmf_analysis | ( | void *const | hQMF, |
float ** | dataTD, | ||
int | framesize, | ||
float_complex *** | dataFD ) |
Performs QMF analysis of the input time-domain signals.
[in] | hQMF | qmf handle |
[in] | dataTD | Time-domain input; nCHin x framesize |
[in] | framesize | Frame size of time-domain data |
[out] | dataFD | Frequency-domain output; see QMF_FDDATA_FORMAT enum |
Definition at line 314 of file saf_utility_qmf.c.
void qmf_channelChange | ( | void *const | hQMF, |
int | new_nCHin, | ||
int | new_nCHout ) |
Changes the number input and/or output channels.
[in] | hQMF | qmf handle |
[in] | new_nCHin | New number of input channels |
[in] | new_nCHout | New number of output channels |
Definition at line 538 of file saf_utility_qmf.c.
void qmf_clearBuffers | ( | void *const | hQMF | ) |
Flushes the analysis and synthesis buffers with zeros.
Definition at line 587 of file saf_utility_qmf.c.
void qmf_create | ( | void **const | phQMF, |
int | nCHin, | ||
int | nCHout, | ||
int | hopsize, | ||
int | hybridmode, | ||
QMF_FDDATA_FORMAT | format ) |
Creates an instance of the qmf filterbank.
[in] | phQMF | (&) address of qmf handle |
[in] | nCHin | Number of input channels |
[in] | nCHout | Number of output channels |
[in] | hopsize | Hop size, in samples |
[in] | hybridmode | 0: disabled, 1: hybrid-filtering enabled |
[in] | format | frequency-domain frame format, see QMF_FDDATA_FORMAT enum |
Definition at line 149 of file saf_utility_qmf.c.
void qmf_destroy | ( | void **const | phQMF | ) |
Destroys an instance of the qmf filterbank.
[in] | phQMF | (&) address of qmf handle |
Definition at line 271 of file saf_utility_qmf.c.
void qmf_FIRtoFilterbankCoeffs | ( | float * | hIR, |
int | N_dirs, | ||
int | nCH, | ||
int | ir_len, | ||
int | hopSize, | ||
int | hybridmode, | ||
float_complex * | hFB ) |
Converts FIR filters into Filterbank Coefficients by passing them through the QMF filterbank.
[in] | hIR | Time-domain FIR; FLAT: N_dirs x nCH x ir_len |
[in] | N_dirs | Number of FIR sets |
[in] | nCH | Number of channels per FIR set |
[in] | ir_len | Length of the FIR |
[in] | hopSize | Hop size |
[in] | hybridmode | 0: disabled, 1:enabled |
[out] | hFB | The FIRs as Filterbank coefficients; FLAT: N_bands x nCH x N_dirs |
Definition at line 670 of file saf_utility_qmf.c.
void qmf_getCentreFreqs | ( | void *const | hQMF, |
float | fs, | ||
int | nBands, | ||
float * | centreFreq ) |
Computes the QMF/hybrid-QMF centre frequencies.
[in] | hQMF | qmf handle |
[in] | fs | Sampling rate in Hz |
[in] | nBands | Length of 'centreFreq' |
[out] | centreFreq | The frequency vector: nBands x 1 |
Definition at line 627 of file saf_utility_qmf.c.
int qmf_getNBands | ( | void *const | hQMF | ) |
Returns the number of frequency bands.
Definition at line 618 of file saf_utility_qmf.c.
int qmf_getProcDelay | ( | void *const | hQMF | ) |
Returns the processing delay in samples.
Definition at line 609 of file saf_utility_qmf.c.
void qmf_synthesis | ( | void *const | hQMF, |
float_complex *** | dataFD, | ||
int | framesize, | ||
float ** | dataTD ) |
Performs QMF synthesis of the input frequency-domain signals.
[in] | hQMF | qmf handle |
[in] | dataFD | Frequency-domain input; see QMF_FDDATA_FORMAT enum |
[in] | framesize | Frame size of time-domain data |
[out] | dataTD | Time-domain output; nCHout x framesize |
Definition at line 437 of file saf_utility_qmf.c.
void quaternion2euler | ( | quaternion_data * | Q, |
int | degreesFlag, | ||
EULER_ROTATION_CONVENTIONS | convention, | ||
float * | alpha, | ||
float * | beta, | ||
float * | gamma ) |
Converts a quaternion to Euler angles.
Definition at line 163 of file saf_utility_geometry.c.
void quaternion2rotationMatrix | ( | quaternion_data * | Q, |
float | R[3][3] ) |
Constructs a 3x3 rotation matrix based on a quaternion.
Definition at line 89 of file saf_utility_geometry.c.
void rand_0_1 | ( | float * | vector, |
int | length ) |
Generates random numbers between 0 and 1 and stores them in the input vector.
[in,out] | vector | Vector to populate with random numbers; length x 1 |
[in] | length | Length of the vector |
Definition at line 249 of file saf_utility_misc.c.
void rand_cmplx_m1_1 | ( | float_complex * | vector, |
int | length ) |
Generates random numbers between -1 and 1 and stores them in the input vector for both the real and imaginary parts.
[in,out] | vector | Vector to populate with random numbers; length x 1 |
[in] | length | Length of the vector |
Definition at line 238 of file saf_utility_misc.c.
void rand_m1_1 | ( | float * | vector, |
int | length ) |
Generates random numbers between -1 and 1 and stores them in the input vector.
[in,out] | vector | Vector to populate with random numbers; length x 1 |
[in] | length | Length of the vector |
Definition at line 227 of file saf_utility_misc.c.
void randperm | ( | int | len, |
int * | randperm_inds ) |
Returns the indices required to randomly permute a vector of length 'len'.
Definition at line 158 of file saf_utility_misc.c.
void rotationMatrix2quaternion | ( | float | R[3][3], |
quaternion_data * | Q ) |
Calculates the quaternion corresponding to a 3x3 rotation matrix.
Definition at line 107 of file saf_utility_geometry.c.
void saf_fft_backward | ( | void *const | hFFT, |
float_complex * | inputFD, | ||
float_complex * | outputTD ) |
Performs the backward-FFT operation; use for complex to complex transformations.
[in] | hFFT | saf_fft handle |
[in] | inputFD | Frequency-domain input; N x 1 |
[out] | outputTD | Time-domain output; N x 1 |
Definition at line 934 of file saf_utility_fft.c.
void saf_fft_create | ( | void **const | phFFT, |
int | N ) |
Creates an instance of saf_fft; complex<->complex FFT.
[in] | phFFT | (&) address of saf_fft handle |
[in] | N | FFT size |
Definition at line 761 of file saf_utility_fft.c.
void saf_fft_destroy | ( | void **const | phFFT | ) |
Destroys an instance of saf_fft.
[in] | phFFT | (&) address of saf_fft handle |
Definition at line 843 of file saf_utility_fft.c.
void saf_fft_forward | ( | void *const | hFFT, |
float_complex * | inputTD, | ||
float_complex * | outputFD ) |
Performs the forward-FFT operation; use for complex to complex transformations.
[in] | hFFT | saf_fft handle |
[in] | inputTD | Time-domain input; N x 1 |
[out] | outputFD | Frequency-domain output; N x 1 |
Definition at line 897 of file saf_utility_fft.c.
void saf_matrixConv_apply | ( | void *const | hMC, |
float * | inputSigs, | ||
float * | outputSigs ) |
Performs the matrix convolution.
[in] | hMC | matrixConv handle |
[in] | inputSigs | Input signals; FLAT: nCHin x hopSize |
[out] | outputSigs | Output signals; FLAT: nCHout x hopSize |
Definition at line 177 of file saf_utility_matrixConv.c.
void saf_matrixConv_create | ( | void **const | phMC, |
int | hopSize, | ||
float * | H, | ||
int | length_h, | ||
int | nCHin, | ||
int | nCHout, | ||
int | usePartFLAG ) |
Creates an instance of matrixConv.
This is a matrix convolver intended for block-by-block processing.
[in] | phMC | (&) address of matrixConv handle |
[in] | hopSize | Hop size in samples. |
[in] | H | Time-domain filters; FLAT: nCHout x nCHin x length_h |
[in] | length_h | Length of the filters |
[in] | nCHin | Number of input channels |
[in] | nCHout | Number of output channels |
[in] | usePartFLAG | '0': normal fft-based convolution, '1': fft-based partitioned convolution |
Definition at line 49 of file saf_utility_matrixConv.c.
void saf_matrixConv_destroy | ( | void **const | phMC | ) |
Destroys an instance of matrixConv.
[in] | phMC | (&) address of matrixConv handle |
Definition at line 132 of file saf_utility_matrixConv.c.
void saf_matrixConv_reset | ( | void *const | hMC | ) |
Flushes internal buffers with zeros.
[in] | hMC | matrixConv handle |
Definition at line 164 of file saf_utility_matrixConv.c.
void saf_multiConv_apply | ( | void *const | hMC, |
float * | inputSigs, | ||
float * | outputSigs ) |
Performs the multi-channel convolution.
[in] | hMC | multiConv handle |
[in] | inputSigs | Input signals; FLAT: nCH x hopSize |
[out] | outputSigs | Output signals; FLAT: nCH x hopSize |
Definition at line 385 of file saf_utility_matrixConv.c.
void saf_multiConv_create | ( | void **const | phMC, |
int | hopSize, | ||
float * | H, | ||
int | length_h, | ||
int | nCH, | ||
int | usePartFLAG ) |
Creates an instance of multiConv.
This is a multi-channel convolver intended for block-by-block processing.
[in] | phMC | (&) address of multiConv handle |
[in] | hopSize | Hop size in samples. |
[in] | H | Time-domain filters; FLAT: nCH x length_h |
[in] | length_h | Length of the filters |
[in] | nCH | Number of filters & input/output channels |
[in] | usePartFLAG | '0': normal fft-based convolution, '1': fft-based partitioned convolution |
Definition at line 271 of file saf_utility_matrixConv.c.
void saf_multiConv_destroy | ( | void **const | phMC | ) |
Destroys an instance of multiConv.
[in] | phMC | (&) address of multiConv handle |
Definition at line 344 of file saf_utility_matrixConv.c.
void saf_multiConv_reset | ( | void *const | hMC | ) |
Flushes internal buffers with zeros.
[in] | hMC | matrixConv handle |
Definition at line 372 of file saf_utility_matrixConv.c.
void saf_rfft_backward | ( | void *const | hFFT, |
float_complex * | inputFD, | ||
float * | outputTD ) |
Performs the backward-FFT operation; use for complex (conjugate symmetric) to real transformations.
[in] | hFFT | saf_rfft handle |
[in] | inputFD | Frequency-domain input; (N/2 + 1) x 1 |
[out] | outputTD | Time-domain output; N x 1 |
Definition at line 714 of file saf_utility_fft.c.
void saf_rfft_create | ( | void **const | phFFT, |
int | N ) |
Creates an instance of saf_rfft; real<->half-complex (conjugate-symmetric) FFT.
[in] | phFFT | (&) address of saf_rfft handle |
[in] | N | FFT size |
Definition at line 531 of file saf_utility_fft.c.
void saf_rfft_destroy | ( | void **const | phFFT | ) |
Destroys an instance of saf_rfft.
[in] | phFFT | (&) address of saf_rfft handle |
Definition at line 616 of file saf_utility_fft.c.
void saf_rfft_forward | ( | void *const | hFFT, |
float * | inputTD, | ||
float_complex * | outputFD ) |
Performs the forward-FFT operation; use for real to complex (conjugate symmetric) transformations.
[in] | hFFT | saf_rfft handle |
[in] | inputTD | Time-domain input; N x 1 |
[out] | outputFD | Frequency-domain output; (N/2 + 1) x 1 |
Definition at line 669 of file saf_utility_fft.c.
void saf_stft_backward | ( | void *const | hSTFT, |
float_complex *** | dataFD, | ||
int | framesize, | ||
float ** | dataTD ) |
Performs the backward-STFT operation for the current frame.
[in] | hSTFT | saf_stft handle |
[in] | dataFD | Frequency-domain output; see SAF_STFT_FDDATA_FORMAT |
[in] | framesize | Frame size of time-domain data |
[out] | dataTD | Time-domain output; nCHout x framesize |
Definition at line 438 of file saf_utility_fft.c.
void saf_stft_channelChange | ( | void *const | hSTFT, |
int | new_nCHin, | ||
int | new_nCHout ) |
Changes the number of input/output channels.
[in] | hSTFT | saf_stft handle |
[in] | new_nCHin | New number of input channels |
[in] | new_nCHout | New number of ooutput channels |
Definition at line 490 of file saf_utility_fft.c.
void saf_stft_create | ( | void **const | phSTFT, |
int | winsize, | ||
int | hopsize, | ||
int | nCHin, | ||
int | nCHout, | ||
SAF_STFT_FDDATA_FORMAT | FDformat ) |
Creates an instance of saf_stft.
[in] | phSTFT | (&) address of saf_stft handle |
[in] | winsize | Window size |
[in] | hopsize | Hop size |
[in] | nCHin | Number of input channels |
[in] | nCHout | Number of ooutput channels |
[in] | FDformat | Format for the frequency-domain data (see the SAF_STFT_FDDATA_FORMAT enum) |
Definition at line 297 of file saf_utility_fft.c.
void saf_stft_destroy | ( | void **const | phSTFT | ) |
Destroys an instance of saf_stft.
[in] | phSTFT | (&) address of saf_stft handle |
Definition at line 346 of file saf_utility_fft.c.
void saf_stft_flushBuffers | ( | void *const | hSTFT | ) |
Flushes the internal buffers with zeros.
[in] | hSTFT | saf_stft handle |
Definition at line 479 of file saf_utility_fft.c.
void saf_stft_forward | ( | void *const | hSTFT, |
float ** | dataTD, | ||
int | framesize, | ||
float_complex *** | dataFD ) |
Performs the forward-STFT operation for the current frame.
[in] | hSTFT | saf_stft handle |
[in] | dataTD | Time-domain input; nCHin x framesize |
[in] | framesize | Frame size of time-domain data |
[out] | dataFD | Frequency-domain output; see SAF_STFT_FDDATA_FORMAT |
Definition at line 366 of file saf_utility_fft.c.
void saf_TVConv_apply | ( | void *const | hTVC, |
float * | inputSigs, | ||
float * | outputSigs, | ||
int | irIdx ) |
Performs the matrix convolution.
[in] | hTVC | TVConv handle |
[in] | inputSigs | Input signals; FLAT: nCHin x hopSize |
[out] | outputSigs | Output signals; FLAT: nCHout x hopSize |
[in] | irIdx | index of IR to be used in this convolution |
Definition at line 577 of file saf_utility_matrixConv.c.
void saf_TVConv_create | ( | void **const | phTVC, |
int | hopSize, | ||
float ** | H, | ||
int | length_h, | ||
int | nIRs, | ||
int | nCHout, | ||
int | initIdx ) |
Creates an instance of TVConv.
This is a time-varying convolver intended for block-by-block processing. A set of IRs are pre-loaded and IR to be convolved with can be changed live. Crossfading is appled between the previous IR outputs to avoid clipping. The covnolution is partitioned (overlap-add).
[in] | phTVC | (&) address of TVConv handle |
[in] | hopSize | Hop size in samples. |
[in] | H | Time-domain filters; nIRs x (FLAT: nCHout x length_h) |
[in] | length_h | Length of the filters, |
[in] | nIRs | Number or IRs. |
[in] | nCHout | Number of output channels. |
[in] | initIdx | Initial IR index to be used. |
Definition at line 467 of file saf_utility_matrixConv.c.
void saf_TVConv_destroy | ( | void **const | phTVC | ) |
Destroys an instance of matrixConv.
[in] | phTVC | (&) address of TVConv handle |
Definition at line 541 of file saf_utility_matrixConv.c.
void smb_pitchShift_apply | ( | void * | hSmb, |
float | pitchShift, | ||
int | frameSize, | ||
float * | inFrame, | ||
float * | outFrame ) |
Performs pitch shifting of the input signals, while retaining the same time duration as the original using the algorithm detailed in [1].
This implementation was orginally written by Stephan M. Bernsee (c) 1999-2015 distributed under the WOL license. It has been modified to better work with frame-by-frame processing. It also supports multiple input channels and employs saf_utility_fft.h and saf_utility_veclib.h for additional run-time optimisations.
[in] | hSmb | (&) smb pitchShifter handle |
[in] | pitchShift | Pitch shift factor, 0.5: down 1 octave, 1: no shift, 2: up 1 octave |
[in] | frameSize | Number of samples in frame |
[in] | inFrame | Input frame; FLAT: nCH x frameSize |
[out] | outFrame | Output frame; FLAT: nCH x frameSize |
Definition at line 212 of file saf_utility_pitch.c.
void smb_pitchShift_create | ( | void ** | hSmb, |
int | nCH, | ||
int | fftFrameSize, | ||
int | osamp, | ||
float | sampleRate ) |
Creates an instance of SMB PitchShifter.
[in] | hSmb | (&) address of smb pitchShifter handle |
[in] | nCH | number of channels |
[in] | fftFrameSize | FFT size |
[in] | osamp | Oversampling/overlapping factor |
[in] | sampleRate | Sampling rate, Hz |
Definition at line 123 of file saf_utility_pitch.c.
void smb_pitchShift_destroy | ( | void **const | hSmb | ) |
Destroys an instance of SMB PitchShifter.
[in] | hSmb | (&) address of smb pitchShifter handle |
Definition at line 169 of file saf_utility_pitch.c.
void sortc | ( | float_complex * | in_vec, |
float_complex * | out_vec, | ||
int | len, | ||
int | descendFLAG ) |
Sort a vector of complex floating-point values into ascending/decending order.
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector |
[in] | len | Number of elements in vectors |
[in] | descendFLAG | '0' ascending, '1' descending |
Definition at line 212 of file saf_utility_sort.c.
void sortd | ( | double * | in_vec, |
double * | out_vec, | ||
int * | new_indices, | ||
int | len, | ||
int | descendFLAG ) |
Sort a vector of double floating-point values into ascending/decending order (optionally returning the new indices as well)
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector (set to NULL if you don't want it) |
[out] | new_indices | Indices used to sort 'in_vec' (set to NULL if you don't want them) |
[in] | len | Number of elements in vectors |
[in] | descendFLAG | '0' ascending, '1' descending |
Definition at line 182 of file saf_utility_sort.c.
void sortf | ( | float * | in_vec, |
float * | out_vec, | ||
int * | new_indices, | ||
int | len, | ||
int | descendFLAG ) |
Sort a vector of floating-point values into ascending/decending order (optionally returning the new indices as well)
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector (set to NULL if you don't want it) |
[out] | new_indices | Indices used to sort 'in_vec' (set to NULL if you don't want them) |
[in] | len | Number of elements in vectors |
[in] | descendFLAG | '0' ascending, '1' descending |
Definition at line 152 of file saf_utility_sort.c.
void sorti | ( | int * | in_vec, |
int * | out_vec, | ||
int * | new_indices, | ||
int | len, | ||
int | descendFLAG ) |
Sort a vector of integer values into ascending/decending order (optionally returning the new indices as well)
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector (set to NULL if you don't want it) |
[out] | new_indices | Indices used to sort 'in_vec' (set to NULL if you don't want them) |
[in] | len | Number of elements in vectors |
[in] | descendFLAG | '0' ascending, '1' descending |
Definition at line 122 of file saf_utility_sort.c.
void sortz | ( | double_complex * | in_vec, |
double_complex * | out_vec, | ||
int | len, | ||
int | descendFLAG ) |
Sort a vector of complex double floating-point values into ascending/ decending order.
[in] | in_vec | Vector to be sorted; len x 1 |
[out] | out_vec | Output vector |
[in] | len | Number of elements in vectors |
[in] | descendFLAG | '0' ascending, '1' descending |
Definition at line 276 of file saf_utility_sort.c.
void sph2cart | ( | float * | sph, |
int | nDirs, | ||
int | anglesInDegreesFLAG, | ||
float * | cart ) |
Converts spherical coordinates to Cartesian coordinates.
[in] | sph | Spherical coordinates; FLAT: nDirs x 3 |
[in] | nDirs | Number of directions/coordinates |
[in] | anglesInDegreesFLAG | 0: dirs given in radians, 1: degrees instead |
[out] | cart | Cartesian coordinates; FLAT: nDirs x 3 |
Definition at line 272 of file saf_utility_geometry.c.
void sphDelaunay | ( | const float * | dirs_deg, |
const int | nDirs, | ||
int ** | faces, | ||
int * | nFaces, | ||
float * | vertices ) |
Delaunay triangulation of a spherical arrangement of points.
[in] | dirs_deg | Coordinates for spherically arranged points, in degrees; FLAT: nDirs x 2 |
[in] | nDirs | Number of points/directions |
[out] | faces | (&) The face indices; FLAT: nFaces x 3 |
[out] | nFaces | (&) Number of faces found |
[out] | vertices | (Optional) the vertices (x,y,z) of the points (set to NULL if not wanted); FLAT: nDirs x 3 |
Definition at line 665 of file saf_utility_geometry.c.
void sphElev2incl | ( | float * | dirsElev, |
int | nDirs, | ||
int | degreesFlag, | ||
float * | dirsIncl ) |
Converts spherical coordinates of unit length from elevation to inclination.
[in] | dirsElev | Spherical coordinates; FLAT: nDirs x 2 |
[in] | nDirs | Number of directions/coordinates |
[in] | degreesFlag | 1: angles are in degrees, 0: angles are in radians |
[out] | dirsIncl | Spherical coordinates; FLAT: nDirs x 2 |
Definition at line 372 of file saf_utility_geometry.c.
void sphIncl2Elev | ( | float * | dirsIncl, |
int | nDirs, | ||
int | degreesFlag, | ||
float * | dirsElev ) |
Converts spherical coordinates of unit length from inclination to elevation.
[in] | dirsIncl | Spherical coordinates; FLAT: nDirs x 2 |
[in] | nDirs | Number of directions/coordinates |
[in] | degreesFlag | 1: angles are in degrees, 0: angles are in radians |
[out] | dirsElev | Spherical coordinates; FLAT: nDirs x 2 |
Definition at line 393 of file saf_utility_geometry.c.
void sphVoronoi | ( | int * | faces, |
int | nFaces, | ||
float * | vertices, | ||
int | nDirs, | ||
voronoi_data * | voronoi ) |
Computes the Voronoi diagram for a spherical arrangement of points.
[in] | faces | The face indices; FLAT: nFaces x 3 |
[in] | nFaces | Number of faces |
[in] | vertices | The vertices (x,y,z) of the points; FLAT: nDirs x 3 |
[in] | nDirs | Number of points/directions |
[out] | voronoi | (&) The Voronoi diagram |
Definition at line 699 of file saf_utility_geometry.c.
void sphVoronoiAreas | ( | voronoi_data * | voronoi, |
float * | areas ) |
Computes the areas of a Voronoi diagram on the unit sphere [sum(areas)=4pi].
[in] | voronoi | The Voronoi diagram |
[out] | areas | The areas; voronoi.nFaces x 1 |
Definition at line 876 of file saf_utility_geometry.c.
float sumf | ( | float * | values, |
int | nValues ) |
Returns the sum of all values.
Definition at line 371 of file saf_utility_misc.c.
void synthesiseNoiseReverb | ( | int | nChannels, |
float | fs, | ||
float * | t60, | ||
float * | fcen_oct, | ||
int | nBands, | ||
int | flattenFLAG, | ||
float ** | rir_filt, | ||
int * | rir_len ) |
Returns quick and dirty exponentially decaying noise bursts.
With long T60 times, it can be used to approximate the late reverberation tail of room impulse responses. With much shorter t60 times, it can be used for decorrelation purposes.
[in] | nChannels | Number of channels |
[in] | fs | Sampling rate |
[in] | t60 | T60 times (in seconds) per octave band; nBands x 1 |
[in] | fcen_oct | Octave band centre frequencies; nBands x 1 |
[in] | nBands | Number of octave bands |
[in] | flattenFLAG | '0' nothing, '1' flattens the magnitude response to unity |
[out] | rir_filt | (&) the shaped noise bursts; FLAT: nChannels x rir_len |
[out] | rir_len | (&) length of filters, in samples |
Definition at line 121 of file saf_utility_decor.c.
void transientDucker_apply | ( | void * | hDucker, |
float_complex *** | inFrame, | ||
int | nTimeSlots, | ||
float | alpha, | ||
float | beta, | ||
float_complex *** | residualFrame, | ||
float_complex *** | transientFrame ) |
Applies the transient ducker, returning either the "ducked" input frame, or the transient part of the input frame, or both.
[in] | hDucker | ducker handle |
[in] | inFrame | input frame; nBands x nCH x nTimeSlots |
[in] | nTimeSlots | Number of time slots per frame |
[in] | alpha | alpha value [0,1]; (e.g. alpha = 0.95f) |
[in] | beta | beta value [0,1]; (e.g. beta = 0.995f) |
[out] | residualFrame | Residual part (set to NULL if not wanted); nBands x nCH x nTimeSlots |
[out] | transientFrame | Transient part (set to NULL if not wanted); nBands x nCH x nTimeSlots |
Definition at line 460 of file saf_utility_decor.c.
void transientDucker_create | ( | void ** | phDucker, |
int | nCH, | ||
int | nBands ) |
Creates an instance of the transient ducker/extractor.
[in] | phDucker | (&) address of ducker handle |
[in] | nCH | Number of channels |
[in] | nBands | Number of frequency bands |
Definition at line 428 of file saf_utility_decor.c.
void transientDucker_destroy | ( | void ** | phDucker | ) |
Destroys an instance of the transient ducker.
[in] | phDucker | (&) address of ducker handle |
Definition at line 444 of file saf_utility_decor.c.
void unique_i | ( | int * | input, |
int | nInputs, | ||
int ** | uniqueVals, | ||
int ** | uniqueInds, | ||
int * | nUnique ) |
Finds the unique values (and their indices) of the input vector.
[in] | input | Input vector; nInputs x 1 |
[in] | nInputs | Number of elements in the input vector |
[out] | uniqueVals | (&) Unique values (set to NULL if not wanted); nUnique x 1 |
[out] | uniqueInds | (&) Indices corresponding to Unique values (set to NULL if not wanted); nUnique x 1 |
[out] | nUnique | (&) Number of Unique values; 1 x 1 |
Definition at line 403 of file saf_utility_misc.c.
void unitCart2sph | ( | float * | dirs_xyz, |
int | nDirs, | ||
int | anglesInDegreesFLAG, | ||
float * | dirs ) |
Converts Cartesian coordinates of unit length to spherical coordinates.
[in] | dirs_xyz | Cartesian coordinates; FLAT: nDirs x 3 |
[in] | nDirs | Number of directions/coordinates |
[in] | anglesInDegreesFLAG | 0: dirs wanted in radians, 1: degrees instead |
[out] | dirs | Spherical coordinates; FLAT: nDirs x 2 |
Definition at line 351 of file saf_utility_geometry.c.
void unitSph2cart | ( | float * | dirs, |
int | nDirs, | ||
int | anglesInDegreesFLAG, | ||
float * | dirs_xyz ) |
Converts spherical coordinates to Cartesian coordinates of unit length.
[in] | dirs | Spherical coordinates; FLAT: nDirs x 2 |
[in] | nDirs | Number of directions/coordinates |
[in] | anglesInDegreesFLAG | 0: dirs given in radians, 1: degrees instead |
[out] | dirs_xyz | Cartesian coordinates; FLAT: nDirs x 3 |
Definition at line 322 of file saf_utility_geometry.c.
void utility_cchol | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim, | ||
float_complex * | X ) |
Cholesky factorisation of a hermitian positive-definate matrix: single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square symmetric positive-definate matrix; FLAT: dim x dim |
[in] | dim | Number of rows/colums in 'A' |
[out] | X | The solution; FLAT: dim x dim |
Definition at line 4195 of file saf_utility_veclib.c.
void utility_cchol_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_cchol()
[in] | phWork | (&) address of work handle, to give to utility_cchol() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_cchol() |
Definition at line 4173 of file saf_utility_veclib.c.
void utility_cchol_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cchol()
Definition at line 4182 of file saf_utility_veclib.c.
void utility_ceig | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim, | ||
float_complex * | VL, | ||
float_complex * | VR, | ||
float_complex * | D, | ||
float_complex * | eig ) |
Eigenvalue decomposition of a NON-SYMMETRIC matrix: single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input NON-SYMMETRIC square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[out] | VL | Left Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | VR | Right Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed) FLAT: dim x dim |
[out] | eig | Eigen values not diagonalised (set to NULL if not needed); dim x 1 |
Definition at line 2530 of file saf_utility_veclib.c.
void utility_ceig_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_ceig()
[in] | phWork | (&) address of work handle, to give to utility_ceig() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_ceig() |
Definition at line 2497 of file saf_utility_veclib.c.
void utility_ceig_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_ceig()
Definition at line 2512 of file saf_utility_veclib.c.
void utility_ceigmp | ( | void *const | hWork, |
const float_complex * | A, | ||
const float_complex * | B, | ||
const int | dim, | ||
float_complex * | VL, | ||
float_complex * | VR, | ||
float_complex * | D ) |
Computes eigenvalues of a matrix pair using the QZ method, single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input left square matrix; FLAT: dim x dim |
[in] | B | Input right square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrices 'A' and 'B' |
[out] | VL | Left Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | VR | Right Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed) FLAT: dim x dim |
Definition at line 2267 of file saf_utility_veclib.c.
void utility_ceigmp_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_ceigmp()
[in] | phWork | (&) address of work handle, to give to utility_ceigmp() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_ceigmp() |
Definition at line 2230 of file saf_utility_veclib.c.
void utility_ceigmp_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_ceigmp()
Definition at line 2247 of file saf_utility_veclib.c.
void utility_cglslv | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim, | ||
float_complex * | B, | ||
int | nCol, | ||
float_complex * | X ) |
General linear solver: single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 2937 of file saf_utility_veclib.c.
void utility_cglslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_cglslv()
[in] | phWork | (&) address of work handle, to give to utility_cglslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_cglslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_cglslv() |
Definition at line 2909 of file saf_utility_veclib.c.
void utility_cglslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cglslv()
Definition at line 2922 of file saf_utility_veclib.c.
void utility_cimaxv | ( | const float_complex * | a, |
const int | len, | ||
int * | index ) |
Single-precision, complex, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of maximum value; 1 x 1 |
Definition at line 400 of file saf_utility_veclib.c.
void utility_ciminv | ( | const float_complex * | a, |
const int | len, | ||
int * | index ) |
Single-precision, complex, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of minimum value; 1 x 1 |
Definition at line 296 of file saf_utility_veclib.c.
void utility_cinv | ( | void *const | hWork, |
float_complex * | A, | ||
float_complex * | B, | ||
const int | dim ) |
Matrix inversion: double precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[out] | B | Inverted square matrix; FLAT: dim x dim |
[in] | dim | size of matrix |
Definition at line 4739 of file saf_utility_veclib.c.
void utility_cinv_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_cinv()
[in] | phWork | (&) address of work handle, to give to utility_cinv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_cinv() |
Definition at line 4713 of file saf_utility_veclib.c.
void utility_cinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cinv()
Definition at line 4724 of file saf_utility_veclib.c.
void utility_cpinv | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
float_complex * | B ) |
General matrix pseudo-inverse (the svd way): single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | Number of rows in 'A' / columns in 'B' |
[in] | dim2 | Number of columns in 'A' / rows in 'B' |
[out] | B | The solution; FLAT: dim2 x dim1 |
Definition at line 3695 of file saf_utility_veclib.c.
void utility_cpinv_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_cpinv()
[in] | phWork | (&) address of work handle, to give to utility_cpinv() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_cpinv() |
[in] | maxDim2 | (&) max size 'sim2' can be when calling utility_cpinv() |
Definition at line 3660 of file saf_utility_veclib.c.
void utility_cpinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cpinv()
Definition at line 3677 of file saf_utility_veclib.c.
void utility_cseig | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim, | ||
int | sortDecFLAG, | ||
float_complex * | V, | ||
float_complex * | D, | ||
float * | eig ) |
Eigenvalue decomposition of a SYMMETRIC/HERMITION matrix: single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input SYMMETRIC square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | sortDecFLAG | '1' sort eigen values and vectors in decending order. '0' ascending |
[out] | V | Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed); FLAT: dim x dim |
[out] | eig | Eigen values not diagonalised (set to NULL if not needed); dim x 1 |
Definition at line 2095 of file saf_utility_veclib.c.
void utility_cseig_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_cseig()
[in] | phWork | (&) address of work handle, to give to utility_cseig() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_cseig() |
Definition at line 2066 of file saf_utility_veclib.c.
void utility_cseig_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cseig()
Definition at line 2079 of file saf_utility_veclib.c.
void utility_cslslv | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim, | ||
float_complex * | B, | ||
int | nCol, | ||
float_complex * | X ) |
Linear solver for HERMITIAN positive-definate 'A': single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square SYMMETRIC positive-definate matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 3444 of file saf_utility_veclib.c.
void utility_cslslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_cslslv()
[in] | phWork | (&) address of work handle, to give to utility_cslslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_cslslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_cslslv() |
Definition at line 3419 of file saf_utility_veclib.c.
void utility_cslslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_cslslv()
Definition at line 3430 of file saf_utility_veclib.c.
void utility_csv2cv_inds | ( | const float_complex * | sv, |
const int * | inds, | ||
const int | len, | ||
float_complex * | cv ) |
Single-precision complex, sparse-vector to compressed vector given known indices.
i.e.
[in] | sv | Input sparse-vector; ? x 1 |
[in] | inds | Indices; len x 1 |
[in] | len | Compressed-vector length/number of indices |
[out] | cv | Output compressed-vector; len x 1 |
Definition at line 1491 of file saf_utility_veclib.c.
void utility_csvd | ( | void *const | hWork, |
const float_complex * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
float_complex * | U, | ||
float_complex * | S, | ||
float_complex * | V, | ||
float * | sing ) |
Singular value decomposition: single precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | First dimension of matrix 'A' |
[in] | dim2 | Second dimension of matrix 'A' |
[out] | U | Left matrix (set to NULL if not needed); FLAT: dim1 x dim1 |
[out] | S | Singular values along the diagonal min(dim1, dim2), (set to NULL if not needed); FLAT: dim1 x dim2 |
[out] | V | Right matrix (UNTRANSPOSED!) (set to NULL if not needed); FLAT: dim2 x dim2 |
[out] | sing | Singular values as a vector, (set to NULL if not needed); min(dim1, dim2) x 1 |
Definition at line 1791 of file saf_utility_veclib.c.
void utility_csvd_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_csvd()
[in] | phWork | (&) address of work handle, to give to utility_csvd() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_csvd() |
[in] | maxDim2 | (&) max size 'dim2' can be when calling utility_csvd() |
Definition at line 1757 of file saf_utility_veclib.c.
void utility_csvd_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_csvd()
Definition at line 1773 of file saf_utility_veclib.c.
void utility_cvabs | ( | const float_complex * | a, |
const int | len, | ||
float * | c ) |
Single-precision, complex, absolute values of vector elements, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 455 of file saf_utility_veclib.c.
void utility_cvconj | ( | const float_complex * | a, |
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, vector-conjugate, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 548 of file saf_utility_veclib.c.
void utility_cvsmul | ( | float_complex * | a, |
const float_complex * | s, | ||
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, multiplies each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a, and output if c==NULL; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c (set to NULL if you want 'a' as output); |
Definition at line 1271 of file saf_utility_veclib.c.
void utility_cvvadd | ( | const float_complex * | a, |
const float_complex * | b, | ||
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, vector-vector addition, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 684 of file saf_utility_veclib.c.
void utility_cvvcopy | ( | const float_complex * | a, |
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, vector-vector copy, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 593 of file saf_utility_veclib.c.
void utility_cvvdot | ( | const float_complex * | a, |
const float_complex * | b, | ||
const int | len, | ||
CONJ_FLAG | flag, | ||
float_complex * | c ) |
Single-precision, complex, vector-vector dot product, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | flag | '0' do not take the conjugate of 'b', '1', take the conjugate of 'b'. (see CONJ_FLAG enum) |
[in] | len | Vector length |
[out] | c | (&) output vector c; 1 x 1 |
Definition at line 1218 of file saf_utility_veclib.c.
void utility_cvvmul | ( | const float_complex * | a, |
const float_complex * | b, | ||
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, element-wise vector-vector multiplication i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 1110 of file saf_utility_veclib.c.
void utility_cvvsub | ( | const float_complex * | a, |
const float_complex * | b, | ||
const int | len, | ||
float_complex * | c ) |
Single-precision, complex, vector-vector subtraction, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 897 of file saf_utility_veclib.c.
double utility_ddet | ( | void *const | hWork, |
double * | A, | ||
int | N ) |
Determinant of a Matrix, double precision, i,e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: N x N |
[in] | N | size of matrix |
Definition at line 4410 of file saf_utility_veclib.c.
void utility_ddet_create | ( | void **const | phWork, |
int | maxN ) |
(Optional) Pre-allocate the working struct used by utility_ddet()
[in] | phWork | (&) address of work handle, to give to utility_ddet() |
[in] | maxN | (&) max size 'N' can be when calling utility_ddet() |
Definition at line 4381 of file saf_utility_veclib.c.
void utility_ddet_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_ddet()
Definition at line 4394 of file saf_utility_veclib.c.
void utility_dglslv | ( | void *const | hWork, |
const double * | A, | ||
const int | dim, | ||
double * | B, | ||
int | nCol, | ||
double * | X ) |
General linear solver: double precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 3040 of file saf_utility_veclib.c.
void utility_dglslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_dglslv()
[in] | phWork | (&) address of work handle, to give to utility_dglslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_dglslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_dglslv() |
Definition at line 3013 of file saf_utility_veclib.c.
void utility_dglslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_dglslv()
Definition at line 3025 of file saf_utility_veclib.c.
void utility_dimaxv | ( | const double * | a, |
const int | len, | ||
int * | index ) |
Double-precision, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of maximum value; 1 x 1 |
Definition at line 410 of file saf_utility_veclib.c.
void utility_diminv | ( | const double * | a, |
const int | len, | ||
int * | index ) |
Double-precision, index of minimum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) Index of minimum value; 1 x 1 |
Definition at line 327 of file saf_utility_veclib.c.
void utility_dinv | ( | void *const | hWork, |
double * | A, | ||
double * | B, | ||
const int | dim ) |
Matrix inversion: double precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[out] | B | Inverted square matrix; FLAT: dim x dim |
[in] | dim | size of matrix |
Definition at line 4643 of file saf_utility_veclib.c.
void utility_dinv_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_dinv()
[in] | phWork | (&) address of work handle, to give to utility_dinv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_dinv() |
Definition at line 4617 of file saf_utility_veclib.c.
void utility_dinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_dinv()
Definition at line 4628 of file saf_utility_veclib.c.
void utility_dpinv | ( | void *const | hWork, |
const double * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
double * | B ) |
General matrix pseudo-inverse (the svd way): double precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | Number of rows in 'A' / columns in 'B' |
[in] | dim2 | Number of columns in 'A' / rows in 'B' |
[out] | B | The solution; FLAT: dim2 x dim1 |
Definition at line 3837 of file saf_utility_veclib.c.
void utility_dpinv_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_dpinv()
[in] | phWork | (&) address of work handle, to give to utility_dpinv() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_dpinv() |
[in] | maxDim2 | (&) max size 'sim2' can be when calling utility_dpinv() |
Definition at line 3803 of file saf_utility_veclib.c.
void utility_dpinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_dpinv()
Definition at line 3819 of file saf_utility_veclib.c.
void utility_dsv2cv_inds | ( | const double * | sv, |
const int * | inds, | ||
const int | len, | ||
double * | cv ) |
Double-precision, sparse-vector to compressed vector given known indices i.e.
[in] | sv | Input sparse-vector; ? x 1 |
[in] | inds | Indices; len x 1 |
[in] | len | Compressed-vector length/number of indices |
[out] | cv | Output compressed-vector; len x 1 |
Definition at line 1527 of file saf_utility_veclib.c.
void utility_dvsmul | ( | double * | a, |
const double * | s, | ||
const int | len, | ||
double * | c ) |
Double-precision, multiplies each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a, and output if c==NULL; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c (set to NULL if you want 'a' as output); len x 1 |
Definition at line 1287 of file saf_utility_veclib.c.
void utility_dvvadd | ( | const double * | a, |
const double * | b, | ||
const int | len, | ||
double * | c ) |
Double-precision, vector-vector addition, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 743 of file saf_utility_veclib.c.
void utility_dvvcopy | ( | const double * | a, |
const int | len, | ||
double * | c ) |
double-precision, vector-vector copy, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 603 of file saf_utility_veclib.c.
void utility_dvvsub | ( | const double * | a, |
const double * | b, | ||
const int | len, | ||
double * | c ) |
Double-precision, vector-vector subtraction, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 956 of file saf_utility_veclib.c.
void utility_schol | ( | void *const | hWork, |
const float * | A, | ||
const int | dim, | ||
float * | X ) |
Cholesky factorisation of a symmetric matrix positive-definate matrix: single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square symmetric positive-definate matrix; FLAT: dim x dim |
[in] | dim | Number of rows/colums in 'A' |
[out] | X | The solution; FLAT: dim x dim |
Definition at line 4107 of file saf_utility_veclib.c.
void utility_schol_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_schol()
[in] | phWork | (&) address of work handle, to give to utility_schol() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_schol() |
Definition at line 4085 of file saf_utility_veclib.c.
void utility_schol_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_schol()
Definition at line 4094 of file saf_utility_veclib.c.
float utility_sdet | ( | void *const | hWork, |
float * | A, | ||
int | N ) |
Determinant of a Matrix, single precision, i,e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: N x N |
[in] | N | size of matrix |
Definition at line 4290 of file saf_utility_veclib.c.
void utility_sdet_create | ( | void **const | phWork, |
int | maxN ) |
(Optional) Pre-allocate the working struct used by utility_sdet()
[in] | phWork | (&) address of work handle, to give to utility_sdet() |
[in] | maxN | (&) max size 'N' can be when calling utility_sdet() |
Definition at line 4266 of file saf_utility_veclib.c.
void utility_sdet_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sdet()
Definition at line 4276 of file saf_utility_veclib.c.
void utility_sglslv | ( | void *const | hWork, |
const float * | A, | ||
const int | dim, | ||
float * | B, | ||
int | nCol, | ||
float * | X ) |
General linear solver: single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 2816 of file saf_utility_veclib.c.
void utility_sglslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_sglslv()
[in] | phWork | (&) address of work handle, to give to utility_sglslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_sglslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_sglslv() |
Definition at line 2788 of file saf_utility_veclib.c.
void utility_sglslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sglslv()
Definition at line 2801 of file saf_utility_veclib.c.
void utility_sglslvt | ( | void *const | hWork, |
const float * | A, | ||
const int | dim, | ||
float * | B, | ||
int | nCol, | ||
float * | X ) |
General linear solver (the other way): single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 3251 of file saf_utility_veclib.c.
void utility_sglslvt_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_sglslvt()
[in] | phWork | (&) address of work handle, to give to utility_sglslvt() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_sglslvt() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_sglslvt() |
Definition at line 3224 of file saf_utility_veclib.c.
void utility_sglslvt_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sglslvt()
Definition at line 3236 of file saf_utility_veclib.c.
void utility_simaxv | ( | const float * | a, |
const int | len, | ||
int * | index ) |
Single-precision, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of maximum value; 1 x 1 |
Definition at line 390 of file saf_utility_veclib.c.
void utility_siminv | ( | const float * | a, |
const int | len, | ||
int * | index ) |
Single-precision, index of minimum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) Index of minimum value; 1 x 1 |
Definition at line 269 of file saf_utility_veclib.c.
void utility_sinv | ( | void *const | hWork, |
float * | A, | ||
float * | B, | ||
const int | dim ) |
Matrix inversion: single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[out] | B | Inverted square matrix; FLAT: dim x dim |
[in] | dim | size of matrix |
Definition at line 4547 of file saf_utility_veclib.c.
void utility_sinv_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_sinv()
[in] | phWork | (&) address of work handle, to give to utility_sinv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_sinv() |
Definition at line 4521 of file saf_utility_veclib.c.
void utility_sinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sinv()
Definition at line 4532 of file saf_utility_veclib.c.
void utility_spinv | ( | void *const | hWork, |
const float * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
float * | B ) |
General matrix pseudo-inverse (the svd way): single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | Number of rows in 'A' / columns in 'B' |
[in] | dim2 | Number of columns in 'A' / rows in 'B' |
[out] | B | The solution; FLAT: dim2 x dim1 |
Definition at line 3558 of file saf_utility_veclib.c.
void utility_spinv_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_spinv()
[in] | phWork | (&) address of work handle, to give to utility_spinv() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_spinv() |
[in] | maxDim2 | (&) max size 'sim2' can be when calling utility_spinv() |
Definition at line 3524 of file saf_utility_veclib.c.
void utility_spinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_spinv()
Definition at line 3540 of file saf_utility_veclib.c.
void utility_sseig | ( | void *const | hWork, |
const float * | A, | ||
const int | dim, | ||
int | sortDecFLAG, | ||
float * | V, | ||
float * | D, | ||
float * | eig ) |
Eigenvalue decomposition of a SYMMETRIC matrix: single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input SYMMETRIC square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | sortDecFLAG | '1' sort eigen values and vectors in decending order. '0' ascending |
[out] | V | Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed); FLAT: dim x dim |
[out] | eig | Eigen values not diagonalised (set to NULL if not needed); dim x 1 |
Definition at line 1954 of file saf_utility_veclib.c.
void utility_sseig_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_sseig()
[in] | phWork | (&) address of work handle, to give to utility_sseig() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_sseig() |
Definition at line 1927 of file saf_utility_veclib.c.
void utility_sseig_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sseig()
Definition at line 1939 of file saf_utility_veclib.c.
void utility_sslslv | ( | void *const | hWork, |
const float * | A, | ||
const int | dim, | ||
float * | B, | ||
int | nCol, | ||
float * | X ) |
Linear solver for SYMMETRIC positive-definate 'A': single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square SYMMETRIC positive-definate matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 3344 of file saf_utility_veclib.c.
void utility_sslslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_sslslv()
[in] | phWork | (&) address of work handle, to give to utility_sslslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_sslslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_sslslv() |
Definition at line 3319 of file saf_utility_veclib.c.
void utility_sslslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_sslslv()
Definition at line 3330 of file saf_utility_veclib.c.
void utility_ssv2cv_inds | ( | const float * | sv, |
const int * | inds, | ||
const int | len, | ||
float * | cv ) |
Single-precision, sparse-vector to compressed vector given known indices i.e.
[in] | sv | Input sparse-vector; ? x 1 |
[in] | inds | Indices; len x 1 |
[in] | len | Compressed-vector length/number of indices |
[out] | cv | Output compressed-vector; len x 1 |
Definition at line 1447 of file saf_utility_veclib.c.
void utility_ssvd | ( | void *const | hWork, |
const float * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
float * | U, | ||
float * | S, | ||
float * | V, | ||
float * | sing ) |
Singular value decomposition: single precision, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | First dimension of matrix 'A' |
[in] | dim2 | Second dimension of matrix 'A' |
[out] | U | Left matrix (set to NULL if not needed); FLAT: dim1 x dim1 |
[out] | S | Singular values along the diagonal min(dim1, dim2), (set to NULL if not needed); FLAT: dim1 x dim2 |
[out] | V | Right matrix (UNTRANSPOSED!) (set to NULL if not needed); FLAT: dim2 x dim2 |
[out] | sing | Singular values as a vector, (set to NULL if not needed); min(dim1, dim2) x 1 |
Definition at line 1644 of file saf_utility_veclib.c.
void utility_ssvd_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_ssvd()
[in] | phWork | (&) address of work handle, to give to utility_ssvd() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_ssvd() |
[in] | maxDim2 | (&) max size 'dim2' can be when calling utility_ssvd() |
Definition at line 1612 of file saf_utility_veclib.c.
void utility_ssvd_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_ssvd()
Definition at line 1627 of file saf_utility_veclib.c.
void utility_svabs | ( | const float * | a, |
const int | len, | ||
float * | c ) |
Single-precision, absolute values of vector elements, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 435 of file saf_utility_veclib.c.
void utility_svmod | ( | const float * | a, |
const float * | b, | ||
const int | len, | ||
float * | c ) |
Single-precision, modulus of vector elements, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 480 of file saf_utility_veclib.c.
void utility_svrecip | ( | const float * | a, |
const int | len, | ||
float * | c ) |
Single-precision, vector-reciprocal/inversion, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 504 of file saf_utility_veclib.c.
void utility_svsadd | ( | float * | a, |
const float * | s, | ||
const int | len, | ||
float * | c ) |
Single-precision, adds each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 1363 of file saf_utility_veclib.c.
void utility_svsdiv | ( | const float * | a, |
const float * | s, | ||
const int | len, | ||
float * | c ) |
Single-precision, divides each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 1336 of file saf_utility_veclib.c.
void utility_svsmul | ( | float * | a, |
const float * | s, | ||
const int | len, | ||
float * | c ) |
Single-precision, multiplies each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a, and output if c==NULL; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c (set to NULL if you want 'a' as output); len x 1 |
Definition at line 1243 of file saf_utility_veclib.c.
void utility_svssub | ( | float * | a, |
const float * | s, | ||
const int | len, | ||
float * | c ) |
Single-precision, subtracts each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 1404 of file saf_utility_veclib.c.
void utility_svvadd | ( | const float * | a, |
const float * | b, | ||
const int | len, | ||
float * | c ) |
Single-precision, vector-vector addition, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 628 of file saf_utility_veclib.c.
void utility_svvcopy | ( | const float * | a, |
const int | len, | ||
float * | c ) |
Single-precision, vector-vector copy, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 583 of file saf_utility_veclib.c.
void utility_svvdot | ( | const float * | a, |
const float * | b, | ||
const int | len, | ||
float * | c ) |
Single-precision, vector-vector dot product, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | (&) output vector c; 1 x 1 |
Definition at line 1207 of file saf_utility_veclib.c.
void utility_svvmul | ( | const float * | a, |
const float * | b, | ||
const int | len, | ||
float * | c ) |
Single-precision, element-wise vector-vector multiplication i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c |
Definition at line 1054 of file saf_utility_veclib.c.
void utility_svvsub | ( | const float * | a, |
const float * | b, | ||
const int | len, | ||
float * | c ) |
Single-precision, vector-vector subtraction, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 841 of file saf_utility_veclib.c.
void utility_zeig | ( | void *const | hWork, |
const double_complex * | A, | ||
const int | dim, | ||
double_complex * | VL, | ||
double_complex * | VR, | ||
double_complex * | D, | ||
double_complex * | eig ) |
Eigenvalue decomposition of a NON-SYMMETRIC matrix: double precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input NON-SYMMETRIC square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[out] | VL | Left Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | VR | Right Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed) FLAT: dim x dim |
[out] | eig | Eigen values not diagonalised (set to NULL if not needed); dim x 1 |
Definition at line 2673 of file saf_utility_veclib.c.
void utility_zeig_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_zeig()
[in] | phWork | (&) address of work handle, to give to utility_zeig() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_zeig() |
Definition at line 2640 of file saf_utility_veclib.c.
void utility_zeig_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_zeig()
Definition at line 2655 of file saf_utility_veclib.c.
void utility_zeigmp | ( | void *const | hWork, |
const double_complex * | A, | ||
const double_complex * | B, | ||
const int | dim, | ||
double_complex * | VL, | ||
double_complex * | VR, | ||
double_complex * | D ) |
Computes eigenvalues of a matrix pair using the QZ method, double precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input left square matrix; FLAT: dim x dim |
[in] | B | Input right square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrices 'A' and 'B' |
[out] | VL | Left Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | VR | Right Eigen vectors (set to NULL if not needed); FLAT: dim x dim |
[out] | D | Eigen values along the diagonal (set to NULL if not needed) FLAT: dim x dim |
Definition at line 2398 of file saf_utility_veclib.c.
void utility_zeigmp_create | ( | void **const | phWork, |
int | maxDim ) |
(Optional) Pre-allocate the working struct used by utility_zeigmp()
[in] | phWork | (&) address of work handle, to give to utility_zeigmp() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_zeigmp() |
Definition at line 2361 of file saf_utility_veclib.c.
void utility_zeigmp_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_zeigmp()
Definition at line 2378 of file saf_utility_veclib.c.
void utility_zglslv | ( | void *const | hWork, |
const double_complex * | A, | ||
const int | dim, | ||
double_complex * | B, | ||
int | nCol, | ||
double_complex * | X ) |
General linear solver: double precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input square matrix; FLAT: dim x dim |
[in] | dim | Dimensions for square matrix 'A' |
[in] | B | Right hand side matrix; FLAT: dim x nCol |
[in] | nCol | Number of columns in right hand side matrix |
[out] | X | The solution; FLAT: dim x nCol |
Definition at line 3143 of file saf_utility_veclib.c.
void utility_zglslv_create | ( | void **const | phWork, |
int | maxDim, | ||
int | maxNCol ) |
(Optional) Pre-allocate the working struct used by utility_zglslv()
[in] | phWork | (&) address of work handle, to give to utility_zglslv() |
[in] | maxDim | (&) max size 'dim' can be when calling utility_zglslv() |
[in] | maxNCol | (&) max size 'nCol' can be when calling utility_zglslv() |
Definition at line 3116 of file saf_utility_veclib.c.
void utility_zglslv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_zglslv()
Definition at line 3128 of file saf_utility_veclib.c.
void utility_zimaxv | ( | const double_complex * | a, |
const int | len, | ||
int * | index ) |
Double-precision, complex, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of maximum value; 1 x 1 |
Definition at line 420 of file saf_utility_veclib.c.
void utility_ziminv | ( | const double_complex * | a, |
const int | len, | ||
int * | index ) |
Double-precision, complex, index of maximum absolute value in a vector, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | index | (&) index of minimum value; 1 x 1 |
Definition at line 354 of file saf_utility_veclib.c.
void utility_zpinv | ( | void *const | hWork, |
const double_complex * | A, | ||
const int | dim1, | ||
const int | dim2, | ||
double_complex * | B ) |
General matrix pseudo-inverse (the svd way): double precision complex, i.e.
[in] | hWork | Handle for the work struct (set to NULL if not available, in which case memory is allocated on the fly) |
[in] | A | Input matrix; FLAT: dim1 x dim2 |
[in] | dim1 | Number of rows in 'A' / columns in 'B' |
[in] | dim2 | Number of columns in 'A' / rows in 'B' |
[out] | B | The solution; FLAT: dim2 x dim1 |
Definition at line 3974 of file saf_utility_veclib.c.
void utility_zpinv_create | ( | void **const | phWork, |
int | maxDim1, | ||
int | maxDim2 ) |
(Optional) Pre-allocate the working struct used by utility_zpinv()
[in] | phWork | (&) address of work handle, to give to utility_zpinv() |
[in] | maxDim1 | (&) max size 'dim1' can be when calling utility_zpinv() |
[in] | maxDim2 | (&) max size 'sim2' can be when calling utility_zpinv() |
Definition at line 3939 of file saf_utility_veclib.c.
void utility_zpinv_destroy | ( | void **const | phWork | ) |
De-allocate the working struct used by utility_zpinv()
Definition at line 3956 of file saf_utility_veclib.c.
void utility_zsv2cv_inds | ( | const double_complex * | sv, |
const int * | inds, | ||
const int | len, | ||
double_complex * | cv ) |
Double-precision complex, sparse-vector to compressed vector given known indices.
i.e.
[in] | sv | Input sparse-vector; ? x 1 |
[in] | inds | Indices; len x 1 |
[in] | len | Compressed-vector length/number of indices |
[out] | cv | Output compressed-vector; len x 1 |
Definition at line 1563 of file saf_utility_veclib.c.
void utility_zvconj | ( | const double_complex * | a, |
const int | len, | ||
double_complex * | c ) |
Double-precision, complex, vector-conjugate, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 563 of file saf_utility_veclib.c.
void utility_zvsmul | ( | double_complex * | a, |
const double_complex * | s, | ||
const int | len, | ||
double_complex * | c ) |
Double-precision, complex, multiplies each element in vector 'a' with a scalar 's', i.e.
[in] | a | Input vector a, and output if c==NULL; len x 1 |
[in] | s | (&) input scalar s; 1 x 1 |
[in] | len | Vector length |
[out] | c | Output vector c (set to NULL if you want 'a' as output); |
Definition at line 1315 of file saf_utility_veclib.c.
void utility_zvvadd | ( | const double_complex * | a, |
const double_complex * | b, | ||
const int | len, | ||
double_complex * | c ) |
Double-precision, complex, vector-vector addition, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 788 of file saf_utility_veclib.c.
void utility_zvvcopy | ( | const double_complex * | a, |
const int | len, | ||
double_complex * | c ) |
double-precision, complex, vector-vector copy, i.e.
[in] | a | Input vector a; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 613 of file saf_utility_veclib.c.
void utility_zvvsub | ( | const double_complex * | a, |
const double_complex * | b, | ||
const int | len, | ||
double_complex * | c ) |
Double-precision, complex, vector-vector subtraction, i.e.
[in] | a | Input vector a; len x 1 |
[in] | b | Input vector b; len x 1 |
[in] | len | Vector length |
[out] | c | Output vector c; len x 1 |
Definition at line 1001 of file saf_utility_veclib.c.
void yawPitchRoll2Rzyx | ( | float | yaw, |
float | pitch, | ||
float | roll, | ||
int | rollPitchYawFLAG, | ||
float | R[3][3] ) |
Constructs a 3x3 rotation matrix from the Euler angles, using the yaw-pitch-roll (zyx) convention.
[in] | yaw | Yaw angle in radians |
[in] | pitch | Pitch angle in radians |
[in] | roll | Roll angle in radians |
[in] | rollPitchYawFLAG | '1' to use Rxyz, i.e. apply roll, pitch and then yaw, '0' Rzyx / y-p-r |
[out] | R | zyx rotation matrix; 3 x 3 |
Definition at line 257 of file saf_utility_geometry.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 10.x setup.
Definition at line 81 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 7.4.x setup.
Definition at line 108 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 11.x setup.
Definition at line 94 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 13.x setup.
Definition at line 122 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 22.x setup.
Definition at line 138 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 5.x setup.
Definition at line 40 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 7.x setup.
Definition at line 48 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 8.x setup.
Definition at line 58 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 9+10+3.2 setup BS 2051 recommedation: https://www.itu.int/rec/R-REC-BS.2051/en.
Definition at line 163 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a 9.x setup.
Definition at line 69 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the audio-visual listening room (Apaja), at Aalto University.
Definition at line 277 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sensor array coordinates for the custom hydrophone array made at Aalto University [1].
Definition at line 33 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the custom hydrophone array made at Aalto University.
Definition at line 455 of file saf_utility_sensorarray_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the ITU standard listening room (LR), at Aalto University.
Definition at line 309 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the multi-channel anechoic chamber (MCC), at Aalto University.
Definition at line 190 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the multi-channel anechoic chamber (MCC) sub-set, at Aalto University.
Definition at line 237 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sensor array coordinates for the Core Sound TetraMic.
Definition at line 45 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the Core Sound TetraMic.
Definition at line 457 of file saf_utility_sensorarray_presets.c.
|
extern |
Default Loudspeaker directions [azimuth, Elevation] - to replace above!
Definition at line 483 of file saf_utility_loudspeaker_presets.c.
|
extern |
Default Loudspeaker directions [azimuth, Elevation] in RADIANS!
Definition at line 417 of file saf_utility_loudspeaker_presets.c.
|
extern |
Default sensor array coordinates.
Definition at line 325 of file saf_utility_sensorarray_presets.c.
|
extern |
Default sensor array coordinates.
Definition at line 259 of file saf_utility_sensorarray_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the Audio Visual Immersion Lab (AVIL), at the Technical University of Denmark (DTU)
Definition at line 325 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sensor array coordinates for the custom 52-sensor array built at the Technical University of Denmark (DTU) [1].
Definition at line 133 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array frequency ranges for each SH order, for the DTU mic (should only be used as a rough estimate)
Definition at line 470 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the custom 52-sensor array built at the Technical University of Denmark (DTU)
Definition at line 462 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array coordinates for the Eigenmike32.
Definition at line 94 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array frequency ranges for each SH order, for the Eigenmike32 (should only be used as a rough estimate)
Definition at line 467 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the Eigenmike32.
Definition at line 460 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array coordinates for the Eigenmike64.
Definition at line 188 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the Eigenmike64.
Definition at line 461 of file saf_utility_sensorarray_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 0.
Definition at line 32259 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 0.
Definition at line 32258 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 10.
Definition at line 35199 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 10.
Definition at line 35198 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 11.
Definition at line 36205 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 11.
Definition at line 36204 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 12.
Definition at line 37421 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 12.
Definition at line 37420 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 13.
Definition at line 38867 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 13.
Definition at line 38866 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 14.
Definition at line 40563 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 14.
Definition at line 40562 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 15.
Definition at line 42529 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 15.
Definition at line 42528 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 16.
Definition at line 44785 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 16.
Definition at line 44784 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 1.
Definition at line 32275 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 1.
Definition at line 32274 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 2.
Definition at line 32311 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 2.
Definition at line 32310 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 3.
Definition at line 32357 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 3.
Definition at line 32356 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 4.
Definition at line 32453 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 4.
Definition at line 32452 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 5.
Definition at line 32619 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 5.
Definition at line 32618 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 6.
Definition at line 32875 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 6.
Definition at line 32874 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 7.
Definition at line 33241 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 7.
Definition at line 33240 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 8.
Definition at line 33737 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 8.
Definition at line 33736 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for ico geosphere, degree: 9.
Definition at line 34383 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a ico geosphere of degree: 9.
Definition at line 34382 of file saf_utility_loudspeaker_presets.c.
|
extern |
3LD geosphere number of points (freq = [0 0], [1 0],..., [16 0])
Access as, e.g.
Definition at line 53488 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 0.
Definition at line 47351 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 0.
Definition at line 47350 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 10.
Definition at line 48563 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 10.
Definition at line 48562 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 11.
Definition at line 48969 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 11.
Definition at line 48968 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 12.
Definition at line 49459 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 12.
Definition at line 49458 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 13.
Definition at line 50041 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 13.
Definition at line 50040 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 14.
Definition at line 50723 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 14.
Definition at line 50722 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 15.
Definition at line 51513 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 15.
Definition at line 51512 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 16.
Definition at line 52419 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 16.
Definition at line 52418 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 1.
Definition at line 47361 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 1.
Definition at line 47360 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 2.
Definition at line 47379 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 2.
Definition at line 47378 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 3.
Definition at line 47401 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 3.
Definition at line 47400 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 4.
Definition at line 47443 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 4.
Definition at line 47442 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 5.
Definition at line 47513 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 5.
Definition at line 47512 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 6.
Definition at line 47619 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 6.
Definition at line 47618 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 7.
Definition at line 47769 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 7.
Definition at line 47768 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 8.
Definition at line 47971 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 8.
Definition at line 47970 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for oct geosphere, degree: 9.
Definition at line 48233 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a oct geosphere of degree: 9.
Definition at line 48232 of file saf_utility_loudspeaker_presets.c.
|
extern |
3LD geosphere number of points (freq = [0 0], [1 0],..., [16 0])
Access as, e.g.
Definition at line 53492 of file saf_utility_loudspeaker_presets.c.
|
extern |
3LD geosphere HANDLES (freq = [0 0], [1 0],..., [16 0])
Access as, e.g.
Definition at line 53448 of file saf_utility_loudspeaker_presets.c.
|
extern |
3LD geosphere HANDLES (freq = [0 0], [1 0],..., [16 0])
Access as, e.g.
Definition at line 53468 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sphere covering handles ( between 4..64 points only)
Access as, e.g.
Definition at line 32191 of file saf_utility_loudspeaker_presets.c.
|
extern |
minimum T-design HANDLES (up to degree 21 only).
Access as, e.g.
Definition at line 29910 of file saf_utility_loudspeaker_presets.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 10th order.
Definition at line 1607 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 12th order.
Definition at line 1348 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 14th order.
Definition at line 1089 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 15th order.
Definition at line 830 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 16th order.
Definition at line 571 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 18th order.
Definition at line 312 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 2nd order.
Definition at line 2902 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 20th order.
Definition at line 53 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 3rd order.
Definition at line 2643 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 4th order.
Definition at line 2384 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 6th order.
Definition at line 2125 of file saf_utility_latticeCoeffs.c.
|
extern |
Lattice all-pass filter coeffs (numerator) for 256 channels, 8th order.
Definition at line 1866 of file saf_utility_latticeCoeffs.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a mono setup.
Definition at line 31 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sensor array coordinates for the Sennheiser Ambeo.
Definition at line 39 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the Sennheiser Ambeo.
Definition at line 456 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array coordinates for the Sound-field SPS200.
Definition at line 57 of file saf_utility_sensorarray_presets.c.
|
extern |
Max spherical harmonic order for the Sound-field SPS200.
Definition at line 458 of file saf_utility_sensorarray_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 10 dirs.
Definition at line 29991 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 11 dirs.
Definition at line 30004 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 12 dirs.
Definition at line 30018 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 13 dirs.
Definition at line 30033 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 14 dirs.
Definition at line 30049 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 15 dirs.
Definition at line 30066 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 16 dirs.
Definition at line 30084 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 17 dirs.
Definition at line 30103 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 18 dirs.
Definition at line 30123 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 19 dirs.
Definition at line 30144 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 20 dirs.
Definition at line 30166 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 21 dirs.
Definition at line 30189 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 22 dirs.
Definition at line 30213 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 23 dirs.
Definition at line 30238 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 24 dirs.
Definition at line 30264 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 25 dirs.
Definition at line 30291 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 26 dirs.
Definition at line 30319 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 27 dirs.
Definition at line 30348 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 28 dirs.
Definition at line 30378 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 29 dirs.
Definition at line 30409 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 30 dirs.
Definition at line 30441 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 31 dirs.
Definition at line 30474 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 32 dirs.
Definition at line 30508 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 33 dirs.
Definition at line 30543 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 34 dirs.
Definition at line 30579 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 35 dirs.
Definition at line 30616 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 36 dirs.
Definition at line 30654 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 37 dirs.
Definition at line 30693 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 38 dirs.
Definition at line 30733 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 39 dirs.
Definition at line 30774 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 40 dirs.
Definition at line 30816 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 41 dirs.
Definition at line 30859 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 42 dirs.
Definition at line 30903 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 43 dirs.
Definition at line 30948 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 44 dirs.
Definition at line 30994 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 45 dirs.
Definition at line 31041 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 46 dirs.
Definition at line 31089 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 47 dirs.
Definition at line 31138 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 48 dirs.
Definition at line 31188 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 49 dirs.
Definition at line 31239 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 4 dirs.
Definition at line 29934 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 50 dirs.
Definition at line 31291 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 51 dirs.
Definition at line 31344 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 52 dirs.
Definition at line 31398 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 53 dirs.
Definition at line 31453 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 54 dirs.
Definition at line 31509 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 55 dirs.
Definition at line 31566 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 56 dirs.
Definition at line 31624 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 57 dirs.
Definition at line 31683 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 58 dirs.
Definition at line 31743 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 59 dirs.
Definition at line 31804 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 5 dirs.
Definition at line 29941 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 60 dirs.
Definition at line 31866 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 61 dirs.
Definition at line 31929 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 62 dirs.
Definition at line 31993 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 63 dirs.
Definition at line 32058 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 64 dirs.
Definition at line 32124 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 6 dirs.
Definition at line 29949 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 7 dirs.
Definition at line 29958 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 8 dirs.
Definition at line 29968 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for sphere covering: 9 dirs.
Definition at line 29979 of file saf_utility_loudspeaker_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for a stereo setup.
Definition at line 35 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 100.
Definition at line 16987 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 100.
Definition at line 16986 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 10.
Definition at line 819 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 10.
Definition at line 818 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 11.
Definition at line 883 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 11.
Definition at line 882 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 124.
Definition at line 22090 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 124.
Definition at line 22089 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 12.
Definition at line 957 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 12.
Definition at line 956 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 13.
Definition at line 1045 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 13.
Definition at line 1044 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 14.
Definition at line 1143 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 14.
Definition at line 1142 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 15.
Definition at line 1255 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 15.
Definition at line 1254 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 16.
Definition at line 1379 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 16.
Definition at line 1378 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 17.
Definition at line 1527 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 17.
Definition at line 1526 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 18.
Definition at line 1687 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 18.
Definition at line 1686 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 19.
Definition at line 1871 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 19.
Definition at line 1870 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 1.
Definition at line 615 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 1.
Definition at line 614 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 20.
Definition at line 2079 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 20.
Definition at line 2078 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 21.
Definition at line 2299 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 21.
Definition at line 2298 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 2.
Definition at line 621 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 2.
Definition at line 620 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 30.
Definition at line 2543 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 30.
Definition at line 2542 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 3.
Definition at line 629 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 3.
Definition at line 628 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 40.
Definition at line 3027 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 40.
Definition at line 3026 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 4.
Definition at line 639 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 4.
Definition at line 638 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 50.
Definition at line 3871 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 50.
Definition at line 3870 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 5.
Definition at line 655 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 5.
Definition at line 654 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 60.
Definition at line 5171 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 60.
Definition at line 5170 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 6.
Definition at line 671 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 6.
Definition at line 670 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 70.
Definition at line 7036 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 70.
Definition at line 7035 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 7.
Definition at line 699 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 7.
Definition at line 698 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 80.
Definition at line 9561 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 80.
Definition at line 9560 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 8.
Definition at line 727 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 8.
Definition at line 726 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 90.
Definition at line 12842 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 90.
Definition at line 12841 of file saf_utility_loudspeaker_presets.c.
|
extern |
Directions [azimuth, Elevation] in degrees, for minimum Tdesign degree: 9.
Definition at line 767 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of directions in a minimum Tdesign of degree: 9.
Definition at line 766 of file saf_utility_loudspeaker_presets.c.
|
extern |
Number of points in each t-design (up to degree 21 only).
Access as, e.g.
Definition at line 29906 of file saf_utility_loudspeaker_presets.c.
|
extern |
Sensor array coordinates for the Zoom H3VR.
Definition at line 51 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array coordinates for the Zylia mic.
Definition at line 68 of file saf_utility_sensorarray_presets.c.
|
extern |
Sensor array frequency ranges for each SH order, for the Zylia array (should only be used as a rough estimate).
The upper frequency limits were selected as the point where the spatial correlation went <0.9. The lower frequency limits were selected as the point where the level difference exceeded 6dB (assuming a 15dB maximum amplification with the Tikhonov regularisation method for all mics).
For more information on determining the usable frequency range per spherical harmonic order, for a given microphone array, the reader is directed to [1].
Definition at line 464 of file saf_utility_sensorarray_presets.c.
|
extern |
Loudspeaker directions [azimuth, Elevation] in degrees, for the 22.x setup, at Zylia Labs.
Definition at line 392 of file saf_utility_loudspeaker_presets.c.
|
extern |
Max spherical harmonic order for the Zylia mic.
Definition at line 459 of file saf_utility_sensorarray_presets.c.