Over a million developers have joined DZone.

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

Start coding today to experience the powerful engine that drives data application’s development, brought to you in partnership with Qlik.

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.

police car lights

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

Create data driven applications in Qlik’s free and easy to use coding environment, brought to you in partnership with Qlik.

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

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

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}