A frequency-dependent 3D panner based on the Vector-base Amplitude Panning (VBAP) method [1], with an optional spread control [2].
More...
|
void | panner_create (void **const phPan) |
| Creates an instance of the panner.
|
|
void | panner_destroy (void **const phPan) |
| Destroys an instance of the panner.
|
|
void | panner_init (void *const hPan, int sampleRate) |
| Initialises an instance of panner with default settings.
|
|
void | panner_initCodec (void *const hPan) |
| Intialises the codec variables, based on current global/user parameters.
|
|
void | panner_process (void *const hPan, const float *const *inputs, float *const *const outputs, int nInputs, int nOutputs, int nSamples) |
| Pans the input signals/sources to the loudspeaker channels using VBAP [1], and optional spreading [2] and frequency-dependent normalisation as a function of the room reverberation [3].
|
|
void | panner_refreshSettings (void *const hPan) |
| Sets all intialisation flags to 1; re-initialising all settings/variables as panner is currently configured, at next available opportunity.
|
|
void | panner_setSourceAzi_deg (void *const hPan, int index, float newAzi_deg) |
| Sets the azimuth of a specific input/source index, in DEGREES.
|
|
void | panner_setSourceElev_deg (void *const hPan, int index, float newElev_deg) |
| Sets the elevation of a specific input/source index, in DEGREES.
|
|
void | panner_setNumSources (void *const hPan, int new_nSources) |
| Sets the number of inputs/sources to pan.
|
|
void | panner_setLoudspeakerAzi_deg (void *const hPan, int index, float newAzi_deg) |
| Sets the azimuth of a specific loudspeaker index, in DEGREES.
|
|
void | panner_setLoudspeakerElev_deg (void *const hPan, int index, float newElev_deg) |
| Sets the elevation of a specific loudspeaker index, in DEGREES.
|
|
void | panner_setNumLoudspeakers (void *const hPan, int new_nLoudspeakers) |
| Sets the number of loudspeakers to pan to.
|
|
void | panner_setOutputConfigPreset (void *const hPan, int newPresetID) |
| Sets a preset for the output configuration (see LOUDSPEAKER_ARRAY_PRESETS enum)
|
|
void | panner_setInputConfigPreset (void *const hPan, int newPresetID) |
| Sets a preset for the input configuration (see SOURCE_CONFIG_PRESETS enum)
|
|
void | panner_setDTT (void *const hPan, float newValue) |
| Sets the room coefficient value 0..1 [1]; 0: normal room, 0.5: dry listening room, 1: anechoic.
|
|
void | panner_setSpread (void *const hPan, float newValue) |
| Sets the degree of spread, in DEGREES.
|
|
void | panner_setYaw (void *const hBin, float newYaw) |
| Sets the 'yaw' rotation angle, in DEGREES.
|
|
void | panner_setPitch (void *const hBin, float newPitch) |
| Sets the 'pitch' rotation angle, in DEGREES.
|
|
void | panner_setRoll (void *const hBin, float newRoll) |
| Sets the 'roll' rotation angle, in DEGREES.
|
|
void | panner_setFlipYaw (void *const hBin, int newState) |
| Sets a flag as to whether to "flip" the sign of the current 'yaw' angle (0: do not flip sign, 1: flip the sign)
|
|
void | panner_setFlipPitch (void *const hBin, int newState) |
| Sets a flag as to whether to "flip" the sign of the current 'pitch' angle (0: do not flip sign, 1: flip the sign)
|
|
void | panner_setFlipRoll (void *const hBin, int newState) |
| Sets a flag as to whether to "flip" the sign of the current 'roll' angle (0: do not flip sign, 1: flip the sign)
|
|
int | panner_getFrameSize (void) |
| Returns the processing framesize (i.e., number of samples processed with every _process() call )
|
|
CODEC_STATUS | panner_getCodecStatus (void *const hPan) |
| Returns current codec status (see CODEC_STATUS enum)
|
|
float | panner_getProgressBar0_1 (void *const hPan) |
| (Optional) Returns current intialisation/processing progress, between 0..1
|
|
void | panner_getProgressBarText (void *const hPan, char *text) |
| (Optional) Returns current intialisation/processing progress text
|
|
float | panner_getSourceAzi_deg (void *const hPan, int index) |
| Returns the input/source azimuth for a given index, in DEGREES.
|
|
float | panner_getSourceElev_deg (void *const hPan, int index) |
| Returns the input/source elevation for a given index, in DEGREES.
|
|
int | panner_getNumSources (void *const hPan) |
| Returns the number of inputs/sources in the current layout.
|
|
int | panner_getMaxNumSources () |
| Returns the maximum number of inputs/sources permitted by panner.
|
|
float | panner_getLoudspeakerAzi_deg (void *const hPan, int index) |
| Returns the loudspeaker azimuth for a given index, in DEGREES.
|
|
float | panner_getLoudspeakerElev_deg (void *const hPan, int index) |
| Returns the loudspeaker elevation for a given index, in DEGREES.
|
|
int | panner_getNumLoudspeakers (void *const hPan) |
| Returns the number of loudspeakers in the current layout.
|
|
int | panner_getMaxNumLoudspeakers () |
| Returns the maximum number of loudspeakers permitted.
|
|
int | panner_getDAWsamplerate (void *const hPan) |
| Returns the DAW/Host sample rate.
|
|
float | panner_getDTT (void *const hPan) |
| Returns the room coefficient value 0..1.
|
|
float | panner_getSpread (void *const hPan) |
| Returns the spread value, in DEGREES.
|
|
float | panner_getYaw (void *const hBin) |
| Returns the 'yaw' rotation angle, in DEGREES.
|
|
float | panner_getPitch (void *const hBin) |
| Returns the 'pitch' rotation angle, in DEGREES.
|
|
float | panner_getRoll (void *const hBin) |
| Returns the 'roll' rotation angle, in DEGREES.
|
|
int | panner_getFlipYaw (void *const hBin) |
| Returns a flag as to whether to "flip" the sign of the current 'yaw' angle (0: do not flip sign, 1: flip the sign)
|
|
int | panner_getFlipPitch (void *const hBin) |
| Returns a flag as to whether to "flip" the sign of the current 'pitch' angle (0: do not flip sign, 1: flip the sign)
|
|
int | panner_getFlipRoll (void *const hBin) |
| Returns a flag as to whether to "flip" the sign of the current 'roll' angle (0: do not flip sign, 1: flip the sign)
|
|
int | panner_getProcessingDelay () |
| Returns the processing delay in samples (may be used for delay compensation features)
|
|
A frequency-dependent 3D panner based on the Vector-base Amplitude Panning (VBAP) method [1], with an optional spread control [2].
Depending on the listening room, it may be beneficial to employ amplitude- normalised gains for low frequencies, and energy-normalised gains for high frequencies. Therefore, this VBAP implementation also uses the method described in [3], to do just that.
- See also
- [1] Pulkki, V. (1997). Virtual sound source positioning using vector base amplitude panning. Journal of the audio engineering society, 45(6), 456-466.
-
[2] Pulkki, V. (1999). Uniform spreading of amplitude panned virtual sources. In Proceedings of the 1999 IEEE Workshop on Applications of Signal Processing to Audio and Acoustics. WASPAA'99 (Cat. No. 99TH8452) (pp. 187-190). IEEE.
-
[3] Laitinen, M., Vilkamo, J., Jussila, K., Politis, A., Pulkki, V. (2014). Gain normalisation in amplitude panning as a function of frequency and room reverberance. 55th International Conference of the AES. Helsinki, Finland.
- Author
- Leo McCormack
- Date
- 25.09.2017
- License
- ISC
Definition in file panner.c.