Sound generation / synthesis with python?
I was looking for the same thing, In the end, I wrote this code which is working fine.
import math #import needed modulesimport pyaudio #sudo apt-get install python-pyaudioPyAudio = pyaudio.PyAudio #initialize pyaudio#See https://en.wikipedia.org/wiki/Bit_rate#AudioBITRATE = 16000 #number of frames per second/frameset. FREQUENCY = 500 #Hz, waves per second, 261.63=C4-note.LENGTH = 1 #seconds to play soundif FREQUENCY > BITRATE: BITRATE = FREQUENCY+100NUMBEROFFRAMES = int(BITRATE * LENGTH)RESTFRAMES = NUMBEROFFRAMES % BITRATEWAVEDATA = '' #generating wawesfor x in xrange(NUMBEROFFRAMES): WAVEDATA = WAVEDATA+chr(int(math.sin(x/((BITRATE/FREQUENCY)/math.pi))*127+128)) for x in xrange(RESTFRAMES): WAVEDATA = WAVEDATA+chr(128)p = PyAudio()stream = p.open(format = p.get_format_from_width(1), channels = 1, rate = BITRATE, output = True)stream.write(WAVEDATA)stream.stop_stream()stream.close()p.terminate()
I know I'm a little late to the game on this one, but this is a pretty fantastic python project for synthesis and audio composition: https://github.com/hecanjog/pippi
It's still actively being developed, but it's been going for a while.
After wasting time on some uncompilable or non-existent projects, I discovered the python module wavebender, which offers generation of single or multiple channels of sine, square and combined waves. The results can be written either to a wavefile or to sys.stdout
, from where they can be interpreted directly by aplay in real-time. Some useful examples are explained here, and are included at the project's github page.