Sound Demo 2

Michael Lamoureux
In [1]:
%matplotlib inline
from matplotlib.pyplot import *
from numpy import *    ## for numerical functions
from IPython.display import Audio  ## to output audio


## What is sound?¶

Rapid changes, or vibrations in air pressure are heard in our ears as sound.

A computer creates sound by sending a list of numbers to a speaker, which then vibrates.

## Random numbers¶

A list of random numbers, will create a sound.

What do you think is will sound like?

In [2]:
Fs = 44100
random_sd = random.randn(Fs)

In [4]:
## Random sound

Audio(data=random_sd, rate=Fs)

Out[4]:

We can plot a few of those numbers, using a plotting command.

In [5]:
plot(random_sd[0:200]);


## Periodic vibrations¶

A vibration that has a periodic vibration will sound like a tone to us.

The sine function has a periodic cycle, and can be used to represent such a tone.

In [6]:
Fs, Len, f1 = 44100, 3, 440  ## sample rate, length in second, frequency
t = linspace(0,Len,Fs*Len)  ## time variable

In [7]:
sine_sd = sin(2*pi*440*t)

Audio(data=sine_sd, rate=Fs)

Out[7]:

We can plot this sine sound, using a plotting command.

In [8]:
plot(sine_sd[0:500]);


By clipping the tops of the sine wave, we get a square wave.

In [9]:
square_sd = minimum(.1, maximum(-.1,sine_sd))
plot(square_sd[0:500]);

In [11]:
## What does a square wave sound like?

Audio(data=square_sd, rate=Fs)

Out[11]:

The Sine and Square waves have the same pitch (frequency) but different timbres.

## Beats¶

Playing two tones at similar frequencies results in beats.

This is useful for tuning instruments!

In [12]:
sine2_sd = sin(2*pi*440*t) - sin(2*pi*442*t)

Audio(data=sine2_sd, rate=Fs)

Out[12]: