Home > R > Modeling sound pressure level of a rifle shot

Modeling sound pressure level of a rifle shot

Noise can be classified as pollution and lawmakers often (always?) treat it as such. Noise can have different origin points, point source being among the simplest to model. Because noise has broader health implications, being able to understand its propagation, a simple model can further our understanding in toning down or preventing excessive noise burden on the environment and its inhabitants. In this work, I will focus on firing range noise and the propagation of sound to the surrounding area.
Small scale firing ranges can be considered as point origin of noise. To make a simple predictive model, a number of assumptions and generalization are made. The reader should realize that this makes the model a bit less realistic.

When talking to experienced people, they will tell you that the distance between a firing range and the first house should be roughly 200 m. While there is no explicit mention of this number in Slovenian laws (yes, I’ve checked), there is a threshold of sound pressure level (SPL) of 75 dB. So, knowing the SPL of the rifle and we know the legal threshold, we can use a simple model to estimate approximate distance at which the SPL will fall to or below the aforementioned legal threshold.

A rifle shot produces a sound pressure level of about 170 dB, which is roughly the sound of a jet engine at a 30 m distance (see here).

Noise propagates and dissipates through the air with roughly (source)

p ~ 1/r

which gives us

L_2 = L_1 - 20 × log(r_2/r_1)


L_2 = sound level at  measured distance
L_1 = sound level at reference distance
r_1 = reference distance from source of the sound
r_2 = measured distance from the source

Using this model, we have accepted all sorts of assumptions, like calm weather, even terrain, even air pressure, no air resistance… Come to think of it, this model would be best suited for a desert in lovely weather. Nonetheless, it gives us a starting point.

I would be interested to hear from more knowledgeable readers on any potential mistakes and how to improve the model with regards to at least above assumptions.

Modeling this equation in R is trivial. Let’s write a function that will calculate L_2 for a sequence of r_2 values.

soundPressure <- function(r2, r1, L1) {
 L2 <- L1 - 20 * log(r1/r2)
 dL <- L1 - abs(L1 - L2) # this will give us the appropriate delta that we can use to plot our graph

# let's define some parameters
distance <- seq(1, 1000, 1) # a vector of distances to be used as r_2
L1 <- 170
r1 <- 1

# this is the threshold level defined by the lawmaker
# we're actually interested in finding at what distance, the noise
# dissipates to this level
dB.level <- 75

# apply the above formula to every value in "distance"
dB <- sapply(distance, soundPressure, r1 = r1, L1 = L1)

# plotting
find.x <- which(round(dB) == dB.level)[1] # find which value is ~75 dB

plot(x = distance, y = dB, ylim = c(1, L1), xlab = "Distance (m)",
 ylab = "Sound pressure level (dB)", type = "l")
abline(h = dB.level, col = "red")
abline(v = find.x, col = "red")
# distance label
text(x = distance[find.x], y = 0, offset = 0.5, col = "black",
 pos = 4, labels = paste(distance[find.x], "m"), cex = 1.3)
text(x = 0, y = dB.level, col = "black", labels = paste(dB.level, "dB"),
 cex = 1.3, offset = 1, pos = 1)

Result of the plotting is

This tells us that the sound pressure level at roughly 113 m away from the rifle will be 75 dB (the legal threshold). Based on these results, a 200 m buffer around a firing range gives an estimate with a margin of around 100 m buffer.

As already mentioned, I would be happy to hear your comments on errors and how to improve the above model.

  1. Jerome
    November 2, 2010 at 12:23

    I am not sure you are right. SPL should decrease by step of ~6 dB when doubling the distance from the source.
    At 113 m, you should have a SPL of ~129 dB.
    See the function attenuation() of the package seewave.
    attenuation(lref=L1, dref=r1, dstop=113, n=2, plot=FALSE)

  2. Tom Hopper
    November 3, 2010 at 10:44

    Nice analysis; I was not familiar with the technique that you’ve used to locate (and plot) the distance closest to 75 dB.

    The one assumption that jumped out at me as being potentially problematic was the propagation of sound. The p ~ 1/r model doesn’t assume even terrain; it assumes no terrain. This is the propagation of a spherical shell in three-dimensional space, without obstructions. Having level terrain will reflect the sound up and out; designers of amphitheaters, playhouses and music halls have taken advantage of this effect for thousands of years to help project sound to the audience.

    Still, the 113 m gives us a definite minimum distance.

  3. September 14, 2012 at 21:14

    Rifle is 168 dB @1m . 168 – 20 Log (113/1) = 168 – 41 dB = 127 dB, not 75 at 113 m, as above is noted.

    Also, in real world, hearing damage studies use the Peak sound levels, the 168 dB figure, as measured at the ear, which is about 1m from the source of the noise blast. But in environmental applications the peak is averaged over 100ms, the sound meter is set to dB(A, Fast) and the readings are about -30 dB lower than dB, Peak. So at 113m, the relevant reading would be 127 – 30 – 97 dB(A,Fast). To get to 75 dB(A,Fast) we have to be 10*((97-75)/20) = 12,6 times further away, which is 12.6 x 113 = 1410 m or about one mile.

    However, this is a very loud rifle. A loud sport rifle registers 130 dB(A,Peak) @ 100′ or 32m, which is about 100 dB(A,Fast). The desired 75 dB(A,Fast) is found 10*((100 – 75)/20) = 17.8 times further away of 17.8 x 100 = 1780 feet which is about 1/3rd mile.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: