sfs-matlab icon indicating copy to clipboard operation
sfs-matlab copied to clipboard

Representation of sound fields and driving functions as circular and spherical harmonics

Open fietew opened this issue 9 years ago • 5 comments

Background

Data based Sound Field Synthesis has not been covered in the Sound Field Synthesis Toolbox, so far, as most of the implemented algorithms are based on mathematical models of the desired sound field. The expansion of sound fields into circular or spherical basis functions is common approach to describe arbitrary sound fields. It is also implicitly used in Near-Field-Compensated Higher Order Ambisonics.

Scheme

scheme

The image illustrates the current implementations in master (blue) and the additional implementations in harmonics (red) for the spherical case. Same holds for the circular case. The graph shows, how to get from a parameterization, i.e x_s, to the desired sound field S or the synthesized sound field P. D denotes the driving function.

TODO List

Circular/Spherical Expansion of Sound Fields

  • [x] decompose point sources, line sources and plane waves into circular and/or spherical basis functions
  • [x] scatter sound fields by cylinders or spheres
  • [x] time-reverse sound fields by applying time-reversal to the expansion coefficients
  • [ ] adapt sound_field_< >exp functions to support recently introduced non-regular grids

Driving Functions in spatial domain

  • [x] 2D, 2.5D, 3D WFS of spherical expansion
    SFS_monochromatic/driving_functions_mono/driving_function_mono_wfs_sphexp.m
  • [x] 2D, 2.5D, 3D WFS of circular expansion
    SFS_monochromatic/driving_functions_mono/driving_function_mono_wfs_circexp.m
  • [x] 2D, 2.5D, 3D NFC-HOA of spherical expansion
    SFS_monochromatic/driving_functions_mono/driving_function_mono_nfchoa_sphexp.m
  • [x] 2D, 2.5D, 3D NFC-HOA of circular expansion
    SFS_monochromatic/driving_functions_mono/driving_function_mono_nfchoa_circexp.m

Driving Functions in spatio-spectral domain

  • [x] move kx driving functions to seperate directory SFS_monochromatic/kx/
  • [ ] circular harmonics transforms of driving functions SFS_monochromatic/cht/
  • [x] spherical harmonics transforms of driving functions SFS_monochromatic/sht/

Testing/Validation functions

  • [ ] conversion from circular/spherical expansion to spatial sound field
  • [x] synthesis of sound fields expressed in circular/spherical harmonics test_sfs_exp

Misc.

  • [ ] switch to recently introduced mandatory conf struct
  • [ ] replace 2 space indent with 4 space
  • [ ] fix function calls

fietew avatar Feb 10 '16 12:02 fietew

Maybe the following functions could be replaced by their recurrence relation sphbesselh_derived sphbesselj_derived sphbessely_derived besselh_derived besselj_derived bessely_derived

Also this might not be necessary: isargsquaredinteger.m

fietew avatar Feb 10 '16 13:02 fietew

Can you please make sure that you use always 4 spaces as tab in for loops etc. and also that you have no spaces between , and arguments in function calls: f(a, b, c) => f(a,b,c). This would be nice to maintain consistency across all functions in the Toolbox.

hagenw avatar Jul 12 '16 08:07 hagenw

I added it to the TODO list

fietew avatar Jul 18 '16 09:07 fietew

If I remember correctly, we included some (or most?) of your proposals by other pull requests. What is the current status and plan for this pull request?

hagenw avatar Feb 15 '19 09:02 hagenw

I would suggest to wait for the upcoming discussions on the DAGA poster for SFS Toolbox. Then I will have a more holistic view on what is already implemented and what might be taken from this PR.

fietew avatar Feb 18 '19 10:02 fietew