Version History

2.5.0 (18. March 2019)
  • Add voronoi interpolation for impulse responses
  • Fix phase offset of Linkwitz-Riley Allpass Filters
  • Add modal window to monochromatic NFC-HOA driving functions
  • Update equation links to
2.4.3 (26. October 2018)
  • fix bug where in LWFS-SBL, where inverse Allpass was inverted
2.4.2 (14. March 2018)
  • extend signal_from_spectrum and spectrum_from_signal to N-dim matrices
  • remove obsolete *_localwfs functions
  • add optional logarithmic spacing for linear secondary sources
2.4.1 (28. September 2017)
  • add monochromatic implementation of LWFS using spatial bandwidth-limitation
  • add monochromatic circular expansion functions for ps and pw
  • add function for conversion from circular to plane wave expansion
  • add freq_response_* and time_response_* for all LWFS methods
  • add optional message arg to progress_bar()
  • fix missing conf.N in freq_response_nfchoa()
  • fix auralize_ir() for local files
2.4.0 (22. August 2017)
  • improve references in SFS_config()
  • update structure of configuration for LWFS methods
  • fix off-center dummy head positions for HRTFs
  • add elevation to head orientation for binaural synthesis
  • fix sphbesselh_zeros() for high orders
  • fix symmetric ifft for Octave
  • add inverse Legendre transform
  • fix integral weights for spherical secondary sources
  • add 3D ps and pw driving functions for NFC-HOA
  • add ‘reference_circle’ as new default for focused sources in 2.5D
  • add max-rE and tukey modal weighting windows
  • add time-domain implementation of LWFS using spatial bandwidth-limitation
  • add circular expansion functions
  • fix incorporation of tapering weights for LWFS
  • remove x0 from interpolate_ir() call
  • fix interpolate_ir() for special cases
  • switch handling of time from samples to seconds
  • add freq_response_line_source()
  • add freq_response_point_source()
  • add time_response_line_source()
2.3.0 (04. March 2017)
  • default 2D WFS focused source is now a line sink
  • improve point selection and interpolation of impulse responses
  • speed up Parks-McClellan resampling method
  • change default value of conf.usebandpass to false
  • rename conf.wfs.t0 to conf.t0
  • rename and improve easyffft() to spectrum_from_signal()
  • rename and improve easyifft() to signal_from_spectrum()
  • correct amplitude values of WFS and NFC-HOA in time domain
  • fix default 2.5D WFS driving function in time domain
  • add time_response_point_source()
  • update amplitude and position of dirac in dummy_irs()
  • fix missing secondary source selection in ssr_brs_wfs()
  • add amplitude terms to WFS FIR pre-filter
  • fix Gauss-Legendre quadrature weights
  • add delay_offset as return value to NFC-HOA and ir funtions
  • fix handling of delay_offset in WFS time domain driving functions
2.2.1 (22. August 2016)
  • fix delayoffset for FIR fractional delay filter
  • add findconvexcone()
  • simplify convolution()
  • add linear interpolation working in the frequency domain
  • fix pm option for delayline()
2.2.0 (7. July 2016)
  • fix impulse response interpolation for three points
  • add the ability to apply modal weighting window to NFC-HOA in time domain
  • change license to MIT
  • update delayline() config settings
  • add Lagrange and Thiran filters to delayline()
  • replace wavread and warwrite by audioread and savewav
  • convolution() excepts now two matrices as input
  • allow headphone compensation filter to be a one- or two-channel wav file
  • add new online doc at
  • fix greens_function_mono() for plane wave and 3D
  • replace by
  • update default WFS driving functions
  • add links to equations in online theory at
2.1.0 (10. March 2016)
  • make conf struct mandatory
  • add new start message
  • fix handling of 0 in least squares fractional delays
  • fix NFC-HOA order for even loudspeaker numbers to N/2-1
  • add conf.wfs.hpreFIRorder as new config option (was hard coded to 128 before)
  • speed up secondary source selection for WFS
  • rename chromajs colormap to yellowred
  • fix tapering_window() for non-continuous secondary sources
  • remove cubehelix colormap as it is part of Octave
  • add conf.wfs.t0 option which is useful, if you have more than one virtual source
  • virtual line sources are now available for monochromatic WFS and NFC-HOA
  • allow arbritrary orders for time-domain NFC-HOA simulations
2.0.0 (26. October 2015)
  • add support for SOFA
  • add SOFA convention SimpleFreeFieldHRIR
  • add SOFA convention MultiSpeakerBRIR
  • calculate integration weights (x0(:,7)) of secondary sources based on their distances to their neighbours
  • add rounded-box as new loudspeaker array geometry
  • fix bugs in local sound field synthesis time domain implementation
  • speedup local sound field synthesis processing by fewer calls to delayline()
  • add heuristic to find a good local wave field synthesis pre-filter
  • loudspeaker geometry can now be read from a SOFA file
  • now custom grids can be used during sound field simulations
  • add 3D plot routine
  • change plot_sound_field(P,x,y,z) to plot_sound_field(P,X,Y,Z)
  • normalization of sound field now only happens in plot_sound_field(); this comes with the new config option conf.plot.normalisation
  • remove interaural_level_difference() and interaural_time_difference()
  • change default config setting to false
  • lots of small bug fixes
1.2.0 (2. June 2015)
  • add PDF documentation “Theory of Sound Field Synthesis”
  • fix remaining usegnuplot config entry
  • change default dB color map to chromajs
  • add missing hgls2 functionality (fractional delays)
  • add cubehelix and chromajs color maps
  • remove noise() function, use the one from the LTFAT Toolbox instead
1.1.0 (2. April 2015)
  • fix amplitude bug in get_ir() and ir_generic()
  • remove direct gnuplot plotting
  • add support for local Wave Field Synthesis
  • the length of the dirac impulse response is now an option for dummy_irs()
  • fix iseven(), isodd() for very large numbers
  • correct the sign for Wave Field Synthesis driving functions
1.0.1 (4 August 2014)
  • rms() works now also with row vectors in order to be compatible with the Auditory Modeling Toolbox
  • fixed handling of number of secondary sources for a box shaped array
  • fixed a bug in ir_auralize() regarding the contentfile configuration
  • corrected NFC-HOA driving functions for off-center arrays
1.0.0 (27 March 2014)
  • added references for all driving functions
  • streamlined nested conf settings; e.g. now it is no longer neccessary to set if conf.usehcomp == false
  • added WFS driving functions from Völk et al. and Verheijen et al.
  • removed secondary_source_number() and xy_grid, because they are no longer needed
  • enabled pre-equalization filter of WFS as default in SFS_config_example()
  • fixed sound_field_mono_sdm_kx()
  • Green’s function for line sources returns now real values
  • correct y-direction of plane waves for 3D NFC-HOA
  • updated the test functions in the validation folder
  • several small fixes
1.0.0-beta2 (5 December 2013)
  • rms() now works for arbitrary arrays
  • speedup of delayline() and HRTF extrapolation
  • delayline() now works with more than one channel
  • fixed a critical bug in wfs_preequalization()
  • fixed missing conf values in several functions
  • fixed README
  • changed location of sfs-data for automatic download, because github does not allow this
  • several minor fixes
1.0.0-beta (26 August 2013)
  • bandpass() can now handle arbritrary frequency limits
  • sphbesselh_zeros() comes now with precomputed zeros for an order up to 1000
  • renamed wave_field_* functions to sound_field_*
  • the order for NFC-HOA can now be set manually via conf.nfchoa.order
  • several performance improvements
  • added missing driving functions for WFS and NFC-HOA
  • added convolution() which is faster than conv and can handle multidimensional signals
  • changed default plotting style of loudspeakers to conf.plot.realloudspeaker=false
  • hann_window() now uses (2*n+1) instead of (2*n) to generate the window
  • replaced the input parameter L by conf.secondary_sources.size
  • the aliasing frequency is now calculated by the mean distance between the given secondary sources
  • added nearest neighbour search and 3D interpolation to get_ir()
  • moved the tapering window into x0(:,7), added new function secondary_source_tapering to achieve this
  • added a seventh column to x0 which includes integrational weights
  • added extra directory for SSR renderer functions
  • added 3D HRTF extrapolation
  • changed array configuration to use number of secondary sources instead of distance between them
  • changed SFS_config to use substructs like conf.secondary_sources.*
  • added the possibility to calculate the wave field for a arbritrary positioned plane in 3D
  • added 3D WFS functions
  • make the Toolbox work in 3D, which brakes backwards compability!
  • now all monochromatic functions have a time_domain counterpart
  • reordered the argouts for the wave field functions; now P is always the first argout
  • automatically plotting of the wave fields if no argouts are wanted
  • changed direction of focused source from the conf.xref vector directly into xs. For a focused source xs is now [1x6]
0.2.5 (12 July 2013)
  • fixed a bug causing the wrong loudspeaker position in the output of generic_wfs()
0.2.4 (4 June 2013)
  • added a documentation to the github README
  • reworked the plotting, now simple saving to png is possible
  • added a narginchk function for older Matlab versions
  • replaced conf.frame with t in the imp functions
  • lots of small bugs were fixed
0.2.3 (9 April 2013)
  • summed up line, point, … sources to green_function for mono and imp
  • introduced global wave_field functions for mono and imp
  • fixed binaural simulations for NFC-HOA
  • removed compatibility for octave versions <3.6
  • fixed a critical bug for the HRTF farfield extrapolation, due to the new secondary source selection behavior
0.2.2 (27 November 2012)
  • added functions to calculate the sound pressure for monochromatic WFS at a single point in analogy to the point_source function
  • changed the behavior of secondary_source_selection to returning a new x0 vector
  • added compatibility for octave 3.6
  • first fix of secondary source selection for focused sources (now they point always in the direction of the reference point)
0.2.1 (15 June 2012)
  • added NFC-HOA 2.5D monochromatic

  • added NFC-HOA 2.5D binaural simulations

  • added SDM 2.5D monochromatic

  • make NFC-HOA work under Octave

  • fixed direction of plane waves and point sources for NFC-HOA time domain simulations

  • changed syntax for wave_field_* and driving_* functions:

    • xs,f,src => xs,src,f
    • xs,L,src => xs,src,L
    • xs,L,f,src => xs,src,f,L
0.2.0 (25 April 2012)
  • first public release (under the GPLv3+ license)