# 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 · Tutorial
Save
3.59K 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 f c = 1500 hz. not surprisingly, this frequency is near where hearing is most sensitive. then this signal is modulated with a signal with frequency f m . 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 f m , you can make a sound like someone tuning a radio, which is no coincidence.

here are the output audio files in .wav format: slow.wav , fast.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:
signal processing, acoustics, python, special functions, scipy, programming, science

Published at DZone with permission of John Cook.

Opinions expressed by DZone contributors are their own.