Nowadays, everything is digital. We use wave tables and (relatively) simple additive synth techniques.
I made the mistake of reading about Arduino wave table synthesis:
The idea of an Arduino alarm that uses a chime instead of a harsh buzz is exciting. The tough part about this is building the wave tables.
What a perfect place to use Python: we can build wave tables that can be pushed down to the Arduino. And test them in the Python world to adjust the frequency spectrum and the complex envelope issues around the various partials.
Python3.4 doesn't have PyAudio support.
Sigh. Before I can work with Arduino wave tables, I'll have to start by figuring out how to build PyAudio for Python 3.4 on Mac OS X.
Look here: http://people.csail.mit.edu/hubert/git/pyaudio.git for the code.
Look here for the secret to building this on Mac OS X: https://stackoverflow.com/questions/2893193/building-portaudio-and-pyaudio-on-mac-running-snow-leopard-arch-issues/2906040#2906040.
- Get pyaudio source.
- Inside pyaudio create a portaudio-v19. Get the portaudio source and put it here.
- Inside pyaudio/pyaudio, do ./config; make and sudo make install
- Inside pyaudio, do python3.4 setup.py install --static-link