Generating sounds
A sound can be represented mathematically by a sine wave, with a certain amplitude, frequency, and phase. We can randomly select frequencies from a list specified on Wikipedia at http://en.wikipedia.org/wiki/Piano_key_frequencies that complies with the following formula:
The variable n in this formula is the number of the piano key. We will number the keys from 1 to 88. We will also select the amplitude, duration, and phase at random.
How to do it...
We will begin by initializing random values, then generate sine waves, compose a melody, and finally, plot the generated audio data with Matplotlib.
Initialization.
Initialize to random values:
the amplitude between 200 to 2000,
the duration to 0.01 to 0.2,
the frequencies using the formula already mentioned
the phase to values between 0 and 2 pi
NTONES = int(sys.argv[1])
amps = 2000. * numpy.random.random((NTONES,)) + 200. durations = 0.19 * numpy.random.random((NTONES,)) + 0.01 keys = numpy.random.random_integers(1, 88, NTONES) freqs...