By
Vasudev Ram
PySynth is a music
synthesizer library written in Python. (*)
Excerpt from the site:
[ There are three variants:
PySynth A is faster, only needs Python itself, and sounds more like a cross between a
flute and
organ.
PySynth B is more complex in sound and needs
NumPy. It's supposed to be a little closer to a
piano. (No competition for Pianoteq of course, but a reasonable fit for keyboard music.) Finally,
PySynth S is more comparable to a
guitar,
banjo, or h
arpsichord, depending on note length and pitch.
The current release of the synthesizer is
monophonic, i.e. it can only play one note at a time. (Although successive notes can overlap in PySynth B and S, but not A.) However, two output files can be mixed together as in the case of the
stereo files below. ]
(*) Interestingly, the
Changes section of the above linked PySynth page seems to indicate that PySynth uses both
Pyglet and
PyAudio, both of which I had blogged about some time ago:
Playing an MP3 with pyglet and Python is easy
PyAudio and PortAudio - like ODBC for sound
Here is
PySynth on Github
PySynth supports
ABC notation and can generate
WAV audio files.
Here is an example tune:
D D C C B A G
and here is a PySynth program to play that tune as a WAV file:
# pysynth-ddccbag.py
import pysynth
test = ( ('d', 4), ('d', 4), ('c', 4), ('c', 4), ('b', 4), ('a', 4), ('g', 3) )
pysynth.make_wav(test, fn = "ddccbag.wav")
For some reason the last note seems to get partially cut off on my PC. Not sure whether that is a bug or a feature :-) or something to do with my hardware. Maybe the latter, since I'm using my laptop's built-in speakers.
Run that program as:
python pysynth-ddccbag.py
Then play the generated WAV file
ddccbag.wav in a music player, such as VLC or some other one.
Here are a few better examples of sound synthesis by PySynth - the links are to MP4 files, which you can download and play without needing Python or PySynth:
The Sailor’s Hornpipe — PySynth S
Bach: Jesu, Joy of Man’s Desiring — PySynth S (treble) and B (bass)
Also check my recent post:
Play the piano on your computer with Python.
If you want to try it out, note that the program has a couple of bugs, related to the frequencies of notes, since I am not musically trained; I just wrote it for fun and as an experiment. Though some of the post comments gave some background and suggested corrections, they did not seem to be sure, and corrected themselves, so I have not implemented any of those suggestions yet.
Enjoy.
-
Vasudev Ram - Dancing Bison Enterprises