38#ifndef __SAF_HADES_SYNTHESIS_H_INCLUDED__
39#define __SAF_HADES_SYNTHESIS_H_INCLUDED__
47#ifdef SAF_ENABLE_HADES_MODULE
60typedef struct _hades_binaural_config{
118 float dirGain_dB[360]);
Header for the HADES analysis (SAF_HADES_MODULE)
struct _hades_analysis_data * hades_analysis_handle
Handle for the hades analysis data.
struct _hades_param_container_data * hades_param_container_handle
Handle for the hades parameter container data.
struct _hades_signal_container_data * hades_signal_container_handle
Handle for the hades signal container data.
void hades_radial_editor_destroy(hades_radial_editor_handle *const phREd)
Destroys an instance of a hades radial editor object.
int hades_synthesis_getProcDelay(hades_synthesis_handle const hSyn)
Returns the synthesiser processing delay, in samples.
void hades_radial_editor_apply(hades_radial_editor_handle const hREd, hades_param_container_handle const hPCon, float dirGain_dB[360])
Applies the radial (360 degree) parameter editing.
void hades_radial_editor_create(hades_radial_editor_handle *const phREd, hades_analysis_handle const hAna)
Creates and returns a handle to an instance of a hades radial editor object, which allows for directi...
float * hades_synthesis_getEqPtr(hades_synthesis_handle const hSyn, int *nBands)
Returns a pointer to the eq vector, which can be changed at run-time.
float * hades_synthesis_getSynthesisAveragingCoeffPtr(hades_synthesis_handle const hSyn)
Returns a pointer to the synthesis averaging coefficient scalar [0..1], which can be changed at run-t...
struct _hades_radial_editor_data * hades_radial_editor_handle
Handle for the hades radial editor data.
struct _hades_synthesis_data * hades_synthesis_handle
Handle for the hades synthesis data.
HADES_BEAMFORMER_TYPE
Beamforming options for hades_synthesis.
@ HADES_BEAMFORMER_FILTER_AND_SUM
Filter-and-sum beamforming.
@ HADES_BEAMFORMER_BMVDR
Binaural minimum-variance distortion- less response (MVDR) beamforming.
@ HADES_BEAMFORMER_NONE
No beamforming (ref sensors only)
void hades_synthesis_apply(hades_synthesis_handle const hSyn, hades_param_container_handle const hPCon, hades_signal_container_handle const hSCon, int nChannels, int blocksize, float **output)
Performs hades synthesis.
void hades_synthesis_create(hades_synthesis_handle *const phSyn, hades_analysis_handle const hAna, HADES_BEAMFORMER_TYPE beamOption, int enableCM, int refIndices[2], hades_binaural_config *binConfig, HADES_HRTF_INTERP_OPTIONS interpOption)
Creates and returns a handle to an instance of a hades synthesis object.
HADES_HRTF_INTERP_OPTIONS
HRTF interpolation options for hades_synthesis.
@ HADES_HRTF_INTERP_NEAREST
Quantise to nearest measurement.
@ HADES_HRTF_INTERP_TRIANGULAR
Triangular interpolation.
float * hades_synthesis_getStreamBalancePtr(hades_synthesis_handle const hSyn, int *nBands)
Returns a pointer to the stream balance vector [0..2], which can be changed at run-time.
void hades_synthesis_reset(hades_synthesis_handle const hSyn)
Flushes run-time buffers with zeros.
void hades_synthesis_destroy(hades_synthesis_handle *const phSyn)
Destroys an instance of hades synthesis.
Binaural configuration struct.
int nHRIR
Number of HRIRs.
int hrir_fs
HRIR sample rate.
int lHRIR
Length of HRIRs in samples.
float * hrir_dirs_deg
HRTF directions in [azimuth elevation] format, in degrees; FLAT: nHRIR x 2.
float * hrirs
Matrix of HRIR data; FLAT: nHRIR x NUM_EARS x lHRIR.