pyFDN.slope_amplitude_to_level#

pyFDN.slope_amplitude_to_level(amplitude, decay_time, fs)[source]#

Initial amplitude of an exponential decay from its energy (EDC amplitude).

A decay with initial amplitude L and reverberation time T, i.e. the envelope L * 10**(-3 t / T), carries the energy E = L**2 * T * fs / (6 ln 10), so L = sqrt(6 ln(10) E / (T fs)).

E is the amplitude of the energy decay curve at t = 0, which is what multi-slope estimators (DecayFitNet, Bayesian decay analysis) report as the slope amplitude A — one value per slope and band. The conversion is therefore how a multi-slope estimate becomes a set of per-slope FDN levels. Note that estimators usually normalise the EDC to 0 dB, in which case the amplitudes must be multiplied by the reported normalisation value first.

Slopes with decay_time == 0 are inactive and map to level 0.

Parameters:
  • amplitude (ArrayLike) – Energy of the decay, i.e. the EDC amplitude of the slope. Any shape.

  • decay_time (ArrayLike) – Reverberation time in seconds, broadcastable against amplitude.

  • fs (float) – Sampling rate in Hz.

Returns:

Initial level (linear amplitude), broadcast shape of the inputs.

Return type:

ndarray

See also

estimate_initial_level_bands

single-slope band levels straight from an IR.