sfs.td

Submodules for broadband sound fields.

source

Compute the sound field generated by a sound source.

wfs

Compute WFS driving functions.

nfchoa

Compute NFC-HOA driving functions.

Functions

apply_delays(signal, delays)

Apply delays for every channel.

secondary_source_point(c)

Create a point source for use in sfs.td.synthesize().

synthesize(signals, weights, ssd, …)

Compute sound field for an array of secondary sources.

sfs.td.synthesize(signals, weights, ssd, secondary_source_function, **kwargs)[source]

Compute sound field for an array of secondary sources.

Parameters
  • signals ((N, C) array_like + float) – Driving signals consisting of audio data (C channels) and a sampling rate (in Hertz). A DelayedSignal object can also be used.

  • weights ((C,) array_like) – Additional weights applied during integration, e.g. source selection and tapering.

  • ssd (sequence of between 1 and 3 array_like objects) – Positions (shape (C, 3)), normal vectors (shape (C, 3)) and weights (shape (C,)) of secondary sources. A SecondarySourceDistribution can also be used.

  • secondary_source_function (callable) – A function that generates the sound field of a secondary source. This signature is expected:

    secondary_source_function(
        position, normal_vector, **kwargs) -> numpy.ndarray
    
  • **kwargs – All keyword arguments are forwarded to secondary_source_function. This is typically used to pass the observation_time and grid arguments.

Returns

numpy.ndarray – Sound pressure at grid positions.

sfs.td.apply_delays(signal, delays)[source]

Apply delays for every channel.

Parameters
  • signal ((N,) array_like + float) – Excitation signal consisting of (mono) audio data and a sampling rate (in Hertz). A DelayedSignal object can also be used.

  • delays ((C,) array_like) – Delay in seconds for each channel (C), negative values allowed.

Returns

DelayedSignal – A tuple containing the delayed signals (in a numpy.ndarray with shape (N, C)), followed by the sampling rate (in Hertz) and a (possibly negative) time offset (in seconds).

sfs.td.secondary_source_point(c)[source]

Create a point source for use in sfs.td.synthesize().