Prev: Possible to make subprocess.Popen jobs run serially rather thanin parallel?
Next: Python Tkinter Linux Repair Question/ Python TCP Socket Example
From: Thomas Jollans on 15 Jun 2010 16:36 Hello list, Here's a little Python toy I've been hacking on, as I thought it might amuse some of you. [1] Python 3.1+ (not sure about 3.0) It's a package called 'audiogen' which includes bindings to libao for portable audio output and some functions/classes/... for generating audio. It grew from the idea that code like this would be neat: def sinewave(arguments go here): wavetable = # generate sinusoid waveform while True: yield wavetable or even something like this: def eric_idle(arguments do here): for note in (Do, Re, Mi): yield plucked_string(note) yield pause(beats=2) Generalised a bit to allow for stereo / multi-channel output, plus some decorators, and you get pyaudiogen. Some examples and all the code is on bitbucket [1]. For good measure, here's the sine wave function sketched above as real, working, code: @wave_gen(channels=1) # mono output def sinusoid(freq, amp, srate : 'rate'): from math import sin, pi wavelength = srate // freq wavetable = wave.from_float(amp*sin(2 * pi * x / wavelength) for x in range(int(wavelength))) while True: yield (wavetable,) Suggestions welcomed! -- Thomas [1] <URL:http://bitbucket.org/jollybox/pyaudiogen> |