Creating a sound synthesizer in the Notebook
In this recipe, we will create a small electronic piano in the Notebook. We will synthesize sinusoidal sounds with NumPy instead of using recorded tones.
How to do it...
We import the modules:
>>> import numpy as np import matplotlib.pyplot as plt from IPython.display import ( Audio, display, clear_output) from ipywidgets import widgets from functools import partial %matplotlib inline
We define the sampling rate and the duration of the notes:
>>> rate = 16000. duration = .25 t = np.linspace( 0., duration, int(rate * duration))
We create a function that generates and plays the sound of a note (sine function) at a given frequency, using NumPy and IPython's audio class:
>>> def synth(f): x = np.sin(f * 2. * np.pi * t) display(Audio(x, rate=rate, autoplay=True))
Here is the fundamental 440 Hz note:
>>> synth(440)
- Now, we generate the note frequencies of our piano...