项目作者: leomccormack

项目描述 :
A Matlab implementation of the Higher-order Spatial Impulse Response Rendering (HO-SIRR) algorithm; an alternative approach for reproducing Ambisonic RIRs over loudspeakers
高级语言: MATLAB
项目地址: git://github.com/leomccormack/HO-SIRR.git
创建时间: 2019-08-12T10:50:47Z
项目社区:https://github.com/leomccormack/HO-SIRR

开源协议:BSD 3-Clause "New" or "Revised" License

下载


HO-SIRR

Higher-order Spatial Impulse Response Rendering (HO-SIRR) is a rendering method, which can synthesise output loudspeaker array room impulse responses (RIRs) using input spherical harmonic (Ambisonic/B-Format) RIRs of arbitrary order. The method makes assumptions regarding the composition of the sound-field and extracts spatial parameters over time, which allows it to map the input to the output in an adaptive and more informed manner; when compared to linear methods such as Ambisonics.

The idea is that you then convolve a monophonic source with this loudspeaker array RIR, and it will be reproduced and exhibit all of the spatial characteristics of the captured space.

(Please note that the code is currently a “work in progress”. Therefore, feedback is most welcome! :-)

The above image depicts energy spectrograms of a 64-channel loudspeaker array RIR, rendered using different methods/configurations using the included ‘plot_mch_energy.m’ script. Here, it can be observed that the renderings using HO-SIRR more closely resembles the reference with increasing input order. It also performs visibly better than Ambisonics (MMD).

Getting Started

The code is reliant on the following Matlab libraries:

The HO-SIRR script may be configured, for example, as:

  1. pars.fs = 48e3;
  2. pars.ls_dirs_deg = ???; % your loudspeaker array directions, [azi elev], in degrees
  3. % Specify STFT windowing size in samples (note that HO-SIRR uses 50% window overlap)
  4. pars.multires_winsize = [128];
  5. pars.multires_xovers = [];
  6. % OR: Specify windowing sizes for a multi-resolution STFT, for example:
  7. % (512 up to 500Hz, then 128 up to 2kHz, then 64 above 2kHz)
  8. %pars.multires_winsize = [512 128 64];
  9. %pars.multires_xovers = [500 2e3];
  10. % Diffuse rendering parameters
  11. pars.RENDER_DIFFUSE = 1; % 0: disable diffuse rendering, 1: enable
  12. pars.decorrelationType = 'noise'; % {'phase','noise'}, decorrelation via convolution with 'noise', or by randomising the 'phase'
  13. pars.BROADBAND_DIFFUSENESS = 1; % 0: bin-wise estimation of diffuseness, 1: estimate diffuseness using broad-band intensity (<=maxDiffFreq_Hz)
  14. pars.maxDiffFreq_Hz = 3e3; % frequency up to which to estimate the diffuseness parameter
  15. pars.alpha_diff = 0.5; % diffuseness averaging coefficient (one-pole filter)
  16. % Optionally, the highest peak of the response may be isolated and panned
  17. % using a broad-band DoA estimate, which can reduce timbral colourations
  18. % in some cases
  19. pars.BROADBAND_FIRST_PEAK = 1; % 0: disabled, 1: enabled

The input Ambisonic RIR may then be rendered for your loudspeaker set-up as:

  1. pars.chOrdering = 'ACN'; % 'ACN', or 'WXYZ'
  2. pars.normScheme = 'N3D'; % 'N3D', or 'SN3D'
  3. shir = audioread( ??? ) % load your input spherical harmonic RIR (of arbitrary order)
  4. [lsir, lsir_ndiff, lsir_diff, pars, analysis] = HOSIRR(shir, pars);
  5. % lsir - output loudspeaker impulse responses
  6. % lsir_ndiff - output loudspeaker impulse responses, direct stream only
  7. % lsir_diff - output loudspeaker impulse responses, diffuse stream only
  8. % pars - output parameters
  9. % analysis - analysed parameters stored during rendering

Then simply convolve this loudspeaker RIR (lsir) with a monophonic input stimulus, in order to reproduce it over your loudspeaker array and have it exhibit the spatial characteristics of the captured room.

Developers

  • Leo McCormack - Matlab and algorithm design (contact: leo.mccormack@aalto.fi)
  • Archontis Politis - Matlab and algorithm design
  • Ville Pulkki - Matlab and algorithm design

License

This code is provided under the BSD 3-clause license.

References

[1] McCormack, L., Pulkki, V., Politis, A., Scheuregger, O. and Marschall, M., (2020). “Higher-Order Spatial Impulse Response Rendering: Investigating the Perceived Effects of Spherical Order, Dedicated Diffuse Rendering, and Frequency Resolution”.
Journal of the Audio Engineering Society, 68(5), pp.338-354.

[2] McCormack, L., Politis, A., Scheuregger, O., and Pulkki, V. (2019). Higher-order processing of spatial impulse responses.
In Proceedings of the 23rd International Congress on Acoustics, 9—13 September 2019 in Aachen, Germany.

[3] Politis, A. and Pulkki, V., 2016. “Acoustic intensity, energy-density and diffuseness estimation in a directionally-constrained region“.
arXiv preprint arXiv:1609.03409.

[4] Merimaa, J. and Pulkki, V., 2005. “Spatial impulse response rendering I: Analysis and synthesis“.
Journal of the Audio Engineering Society, 53(12), pp.1115-1127.

[5] Pulkki, V. and Merimaa, J., 2006. “Spatial impulse response rendering II: Reproduction of diffuse sound and listening tests“.
Journal of the Audio Engineering Society, 54(1/2), pp.3-20.

[6] Favrot, S. and Buchholz, J.M., 2010. “LoRA: A loudspeaker-based room auralization system. Acta Acustica united with Acustica“, 96(2), pp.364-375.