Article 16MPD Creating police siren sounds with frequency modulation

Creating police siren sounds with frequency modulation

by
John
from John D. Cook on (#16MPD)

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_lights.jpg

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 I^2 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.wav, fast.wav

from scipy.io.wavfile import writefrom numpy import arange, pi, sin, int16def 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(signal*(2**15 - 1))N = 48000 # samples per secondx = arange(3*N) # three seconds of audiodata = 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:

dsp_consulting.jpg

GZrhRBTj7Fk
External Content
Source RSS or Atom Feed
Feed Location http://feeds.feedburner.com/TheEndeavour?format=xml
Feed Title John D. Cook
Feed Link https://www.johndcook.com/blog
Reply 0 comments