JPL Spatial
Sound spatialization and propagation library
Loading...
Searching...
No Matches
JPL::AirAbsorption Class Reference

#include <JPLSpatial/AirAbsorption.h>

Public Member Functions

 AirAbsorption (const AirAbsorptionParams &params)
 
float ComputeAbsorptionPerMeter (float frequencyHz) const
 Compute pure-tone sound attenuation coefficient in dB/m, for atmospheric absorption.
 
simd ComputeAbsorptionPerMeter (simd frequenciesHz) const
 

Static Public Member Functions

static AirAbsorptionCache CacheParameters (const FrequencyBands &frequencyBands, const AirAbsorptionParams &params, float nyquist=22050.0f)
 
static simd ComputeForDistance (float distance, const AirAbsorptionCache &aaCache)
 
static float ComputeForFrequency (float frequencyHz, const AirAbsorptionParams &params)
 
static AbsorptionCoeffs ComputeForFrequencies (const FrequencyBands &frequenciesHz, const AirAbsorptionParams &params)
 Compute pure-tone sound attenuation in four frequency bands.
 
static FrequencyBands ComputeHFWeightedBandCenters (const SplitFrequencies &splitFrequenciesHz)
 

Detailed Description

AirAbsorption object can be constructed from environmental parameters and reused to compute absorption for different frequencies. This avoids a lot of computation when the environment doesn't change.

Otherwise AirAbsorption has static functions to compute air absorption for pure-tone feuquencies and for frequency bands.

Constructor & Destructor Documentation

◆ AirAbsorption()

JPL::AirAbsorption::AirAbsorption ( const AirAbsorptionParams params)
inlineexplicit

Member Function Documentation

◆ CacheParameters()

AirAbsorptionCache JPL::AirAbsorption::CacheParameters ( const FrequencyBands frequencyBands,
const AirAbsorptionParams params,
float  nyquist = 22050.0f 
)
inlinestatic

◆ ComputeAbsorptionPerMeter() [1/2]

float JPL::AirAbsorption::ComputeAbsorptionPerMeter ( float  frequencyHz) const
inline

Compute pure-tone sound attenuation coefficient in dB/m, for atmospheric absorption.

◆ ComputeAbsorptionPerMeter() [2/2]

simd JPL::AirAbsorption::ComputeAbsorptionPerMeter ( simd  frequenciesHz) const
inline

◆ ComputeForDistance()

simd JPL::AirAbsorption::ComputeForDistance ( float  distance,
const AirAbsorptionCache aaCache 
)
inlinestatic

Compute sound attenuation due to air absorption for distance in four frequency bands. Uses linearized approximation for non-linear high frequency decay which provides more accurate result than just distanc * dB_loss.

◆ ComputeForFrequencies()

AbsorptionCoeffs JPL::AirAbsorption::ComputeForFrequencies ( const FrequencyBands frequenciesHz,
const AirAbsorptionParams params 
)
inlinestatic

Compute pure-tone sound attenuation in four frequency bands.

◆ ComputeForFrequency()

float JPL::AirAbsorption::ComputeForFrequency ( float  frequencyHz,
const AirAbsorptionParams params 
)
inlinestatic

Compute pure-tone sound attenuation for atmospheric absorption, in dB/m.

Note: this static function should be use only when a single frequency coefficient is needed, in case coefficients are needed for multiple frequency points and the same AirAbsorptionParams, it's better to construct AirAbsorption object with said AirAbsorptionParams, which reuses a lot of terms.

◆ ComputeHFWeightedBandCenters()

FrequencyBands JPL::AirAbsorption::ComputeHFWeightedBandCenters ( const SplitFrequencies splitFrequenciesHz)
inlinestatic

Compute energy-weighted band frequencies for more accurate high frequency loss over mid-long distance. I.e. for band with center frequency > 1kHz, use center frequency of the lower third.


The documentation for this class was generated from the following file: