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 |
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.
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:
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.
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 |
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
andRecieverHeight
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
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.
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)
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).
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.
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)
-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.
Inserts the difference in distance attenuation from the ratio of distances of point sources
=20*LOG(r1/r2)
Inserts the difference in distance attenuation from the ratio of distances of line sources
=10*LOG(r1/r2)
The correction for area is:
10*log(A)
The button Area Correction
applies the formula to all octave bands or one-third octave bands.
Number of sources correction using the formula 10*log(n)
with n
input as a value in the parameter column
Time correction using the formula
with t
and t0
input as inputs in the parameter column for time on and reference time, respectively.
- 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
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)
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)
GetRoomLoss = 10 * Application.WorksheetFunction.Log10(4 / {Row Reference})
Predicts loss over a barrier using three methods:
- Kurze Anderson
- Menounou
- ISO9613 (Abar) (see above)