Noise Functions - Moosevellous/Trace GitHub Wiki

Go to...
Air Absorption
ISO 9613
Distance Attenuation
Point (spherical)
Line (cylindrical)
Plane
Ratio
10log
Area correction
Parellipiped
Conformal Surface
10log(n)
10log(1/t)
Direct Reverberant Sum
Room Loss
Classic
RT Method
Room Constant
Barrier

Air Absorption (legacy)

Private Function AirAbsorb(freq As String, Distance As Integer, temp As Integer)

Air absorption varies over frequency with the following values (from 63Hz octave band)

- 63Hz 125Hz 250Hz 500Hz 1kHz 2kHz 4kHz 8kHz
Insertion loss per km, dB 0.1 0.3 1.1 2.8 5 9 22.9 76.6

Absorption is assumed to be a loss and is therefore input as a negative value.

[Back to top]

ISO 9613-2

The ISO 9613-2 is an engineering method that predicts the propagation of sound outdoors. The underlying method is that:

SPL = SWL + Directivity - Attenuation

where:

Attenuation = Adiv + Aatm + Agr + Abar

These attenuation factors are:

  • Geometrical divergence (Adiv)
  • Atmospheric absorption (Aatm)
  • Ground effect (Agr)
  • Screening by obstacles (barrier effect) (Abar)

These methods are written to be in accordance with ISO 9613-2:1996, which provides a full detailed explanation of all the variables and calculations.

Attenuation is presented as negative values. The form that is used for ISO 9613-2 calculations can be seen below:

ISO9613 form

Geometric divergence(Adiv)

Function ISO9613_Adiv(Distance As Single, D_ref As Single)

This function calculates the attenuation of sound due to geometric divergence.

The attenuation due to geometric divergence is calculated using the formula

ISO9613_Adiv = -20 *Log(Distance / D_ref) + 11

Where Distance is the distance between the source and the receiver and D_ref is the reference distance which is defined as 1 m.

Distance Spreading Diagram

[Back to top]

Atmospheric absorption(Aatm)

Function ISO9613_Aatm(fstr As String, Distance As Double, Temperature As Integer, RelHumidity As Integer)

This function calculates the attenuation of sound due to atmospheric absorption. The attenuation is calculated using the following formula :

Aatm=(αd)/1000

where

Distance is the distance of propagation of the sound in metres α is the atmospheric attenuation coefficient in decibels per kilometre which is obtained from the table below:

Temperature (degrees C) Relative Humidity % α at 63Hz (dB/m) α at 125Hz (dB/m) α at 250Hz (dB/m) α at 500Hz (dB/m) α at 1000Hz (dB/m) α at 2000Hz (dB/m) α at 4000Hz (dB/m) α at 8000Hz (dB/m)
10 70 0.1 0.4 1.0 1.9 3.7 9.7 32.8 117
20 70 0.1 0.3 1.1 2.8 5.0 9.0 22.9 76.6
30 70 0.1 0.3 1.0 3.1 7.4 12.7 23.1 59.3
15 20 0.3 0.6 1.2 2.7 8.2 28.2 88.8 202
15 50 0.1 0.5 1.2 2.2 4.2 10.8 36.2 129
15 80 0.1 0.3 1.1 2.4 4.1 8.3 23.7 82.8

[Back to top]

Ground effect(Agr)

Function ISO9613_Agr(fstr As String, SourceHeight As Double, ReceiverHeight As Double, dp As Double, Gsrc As Double, Grec As Double, Optional Gmid As Double)

This function calculates the attenuation of sound due to reflections from the ground surface interfering with the direct propagation of sound from the source to the reciever.

  • SourceHeight and RecieverHeight are the heights of the source and the receiver from the ground respectively.
  • dp is the distance between the source and the receiver.
  • Gsrc,Grec,Gmid are the ground factors at the source, receiver and the region as shown below

Ground Absorption Diagram

The Ground factor G varies according to the acoustical properties of the ground region near the source, reciever and the region between them.

  • G=0 for hard ground
  • G=1 for porous ground
  • 0<G<1 for ground having a mixed composition

The Ground attenuation Agr is calculated as:

Agr=As+Ar+Am

Where As,Ar,Am are the attenuation at the source, receiver and the the region between them respectively. Please refer to the ISO 9613-2 standard to understand how As,Ar and Am are calculated.

[Back to top]

Attenuation due to screening / Barrier Effect(Abar)

Function ISO9613_Abar(fstr As String, SrcDistanceEdge As Double, SourceHeight As Double, RecDistanceEdge As Double, ReceiverHeight As Double, SourceReceiverDistance As Double, ThicknessBarrier As Double, HeightBarrierSource As Double, DistanceSrcBarrierPerp As Double, _ HeightBarrierReciever As Double, GroundEffect As Double, multisource As Boolean, Optional DoubleDiffraction As Boolean)

This function calculates the attenuation of sound due to screening of objects such as barriers or buildings. An object can be considered as a screening barrier if:

  • The surface density is at least 10kg/m2
  • The object has a closed surface without large cracks or gaps
  • The difference in distance between the source and the receiver from an edge of the barrier is greater than the wavelength under consideration

The input needed from the user are depicted in the diagrams below:

The attenuation of sound due to diffraction around the top edge can be calculated as:

Abar=Dz-Agr

where Dz is the barrier attenuation for each octave band and Agr is the ground attenuation in the abscence of the barrier

The barrier attenuation Dz in dB can be calculated using the following equation:

Dz=10 x Log[3+(C2/$\lambda$) C3 z Kmet] dB

where:

  • C2=40 if ground reflections are taken into account otherwise it is considered as 20
  • C3 =1 for single diffraction and C3= [1+(5$\lambda$/e)2]/[(1/3)+(5$\lambda$/e)2] for the case of double diffraction
  • $\lambda$ is the wavelength of sound at the nominal midband frequency of the octave band in metres
  • Kmet is the meteorological correction factor (Refer to standard for calculation)
  • e is the barrier thickness
  • z is the distance between two diffraction edges in the case of double diffraction (Refer to standard for calculation)

[Back to top]

Distance Attenuation

Point (spherical)

When the source is sufficiently small, we assume that the origin of the sound is a single point in space that spreads out spherically, such that the sound pressure per area is reduced by the area of a sphere, 4*PI(R^2). The Q term to be either 1, 2, 4, or 8 to represent a fraction of a sphere, either pure spherical spreading (Q = 1), half spherical spreading (Q=2) and so on, up to a source in the corner of a room, 1/8th spherical spreading (Q = 8).

QFactorDiagram.gif

We can then convert this reduction in sound pressure level by taking 10*log of the previous equation.

The formula is therefore: 10*log(Q/4*PI(R^2))

As one would expect, a doubling of the Q factor results in a 3dB reduction in distance attenuation.

[Back to top]

Line (cylindrical)

Consider a line source as spreading out as the surface area of a cylinder 2*PI(R^2). The Q term to be either 1, 2, 4, or 8 to represent a fraction of a cylinder, either pure cylindrical spreading (Q = 1), half cylindrical spreading (Q=2) and so on.

The formula is therefore: 10*log(Q/2*PI*R)

QFactorDiagramCyl.gif

[Back to top]

Plane

-10*LOG(H*L)+10*LOG(ATAN((H*L)/(2*R*SQRT((H^2)+(L^2)+(4*R^2)))))-2

For a plane source, the attenuation depends on 3 variables. The height of the plane, the width of the plane, and the distance from the plane (H, L, and R respectively).

It should be noted that while the above equation looks intimidating, at large distances, the equation converges to spreading as a point source. The criteria for this is approximately for distances of R = SQRT(H*L). This is because as you move further away from a plane source, eventually, the distance term R becomes vastly more important in the spreading that the size of the plane itself.

DistanceAttenuation

[Back to top]

Ratio

Ratio (point)

Inserts the difference in distance attenuation from the ratio of distances of point sources

=20*LOG(r1/r2)

Ratio (line)

Inserts the difference in distance attenuation from the ratio of distances of line sources

=10*LOG(r1/r2)

[Back to top]

Area correction

The correction for area is: 10*log(A)

The button Area Correction applies the formula to all octave bands or one-third octave bands.

[Back to top]

10Log(n)

Number of sources correction using the formula 10*log(n) with n input as a value in the parameter column

[Back to top]

10Log(1/t)

Time correction using the formula

$$ Correction_{time} = 10Log\left(\frac{t}{t_0}\right) [dB] $$

with t and t0 input as inputs in the parameter column for time on and reference time, respectively.

[Back to top]

Direct / Reverberant Sum

  • Scans rows above until it finds a blank line
  • Sums all rows to that point and applies a distance attenuation (point source, 1m) for the Direct Field
  • Sums the same rows and applies a Room Loss (Classic method) for the Reverberant Field
  • Logarithmically sums the paths to that point (SPLSUM)
  • Applies Styles

[Back to top]

Room Loss

Classic

Function GetRoomLoss(fstr As String, L As Double, W As Double, H As Double, roomType As String)

Values for alpha

Room Type 31.5Hz 63Hz 125Hz 250Hz 500Hz 1kHz 2kHz 4kHz 8Khz
Live 0.2 0.18 0.14 0.11 0.1 0.1 0.1 0.1 0.1
Av. Live 0.19 0.18 0.17 0.14 0.15 0.15 0.14 0.13 0.12
Average 0.2 0.18 0.19 0.19 0.2 0.23 0.22 0.21 0.2
Av. Dead 0.21 0.2 0.23 0.24 0.25 0.28 0.27 0.26 0.25
Dead 0.22 0.2 0.28 0.3 0.4 0.47 0.45 0.44 0.45

alpha_av = ((L * W * alpha(bandIndex) * 2) + (L * H * alpha(bandIndex) * 2) + (W * H * alpha(bandIndex) * 2)) / S_total

Rc = (S_total * alpha(bandIndex)) / (1 - alpha_av)

GetRoomLoss = 10 * Application.WorksheetFunction.Log10(4 / Rc)

[Back to top]

RT method

Function GetRoomLossRT(fstr As String, L As Double, W As Double, H As Double, RT_Type As String)

Values for alpha

Room Type 31.5Hz 63Hz 125Hz 250Hz 500Hz 1kHz 2kHz 4kHz 8Khz
<0.2sec 0 0 0.21 0.277 0.331 0.385 0.435 0.446 0
0.2 to 0.5sec 0 0 0.125 0.138 0.183 0.233 0.288 0.296 0
0.5 to 1sec 0 0 0.109 0.112 0.137 0.18 0.214 0.225 0
1 to 1.5sec 0 0 0.057 0.056 0.058 0.069 0.08 0.082 0
1.5 to 2sec 0 0 0.053 0.053 0.06 0.08 0.095 0.1 0
>2sec 0 0 0.063 0.052 0.036 0.041 0.035 0.04 0

alpha_av = ((L * W * alpha(bandIndex) * 2) + (L * H * alpha(bandIndex) * 2) + (W * H * alpha(bandIndex) * 2)) / S_total

Rc = (S_total * alpha(bandIndex)) / (1 - alpha_av)

GetRoomLoss = 10 * Application.WorksheetFunction.Log10(4 / Rc)

[Back to top]

Room constant

GetRoomLoss = 10 * Application.WorksheetFunction.Log10(4 / {Row Reference})

[Back to top]

Barrier

Predicts loss over a barrier using three methods:

Barrier

[Back to top]

⚠️ **GitHub.com Fallback** ⚠️