{{announcement.body}}
{{announcement.title}}

# Police Sirens and Frequency Modulation

DZone 's Guide to

# Police Sirens and Frequency Modulation

### Ah, the allure of the police siren call! Have you ever wondered how they sing their magical song?

· Web Dev Zone ·
Free Resource

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Yesterday, I was looking into calculating fluctuation strength and playing around with some examples. Along the way, I discovered how to create files that sound like police sirens. These are sounds with high fluctuation strength.

The Python code below starts with a carrier wave at fc = 1500 Hz. Not surprisingly, this frequency is near where hearing is most sensitive. Then this signal is modulated with a signal with frequency fm. This frequency determines the frequency of the fluctuations.

The slower example produced by the code below sounds like a police siren. The faster example makes me think more of an ambulance or fire truck. Next time I hear an emergency vehicle, I’ll pay more attention.

If you use a larger value of the modulation index β and a smaller value of the modulation frequency fm, you can make a sound like someone tuning a radio, which is no coincidence.

Here are the output audio files in .wav format: slow.wavfast.wav

``````from scipy.io.wavfile import write
from numpy import arange, pi, sin

def f(t, f_c, f_m, beta):
# t    = time
# f_c  = carrier frequency
# f_m  = modulation frequency
# beta = modulation index
return sin(2*pi*f_c*t - beta*sin(2*f_m*pi*t))

def to_integer(signal):
# Take samples in [-1, 1] and scale to 16-bit integers,
# values between -2^15 and 2^15 - 1.
return int16(data*(2**15 - 1))

N = 48000 # samples per second
x = arange(3*N) # three seconds of audio

data = f(x/N, 1500, 2, 100)
write("slow.wav", N, to_integer(data))

data = f(x/N, 1500, 8, 100)
write("fast.wav", N, to_integer(data))
``````

## Related Posts

Topics:
acoustics, programming, python, science, scipy, signal processing, special functions

Comment (0)

Save
{{ articles[0].views | formatCount}} Views

Published at DZone with permission of John Cook . See the original article here.

Opinions expressed by DZone contributors are their own.

# {{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}