PySynth is a suite of simple music synthesizers and helper scripts written in Python 3. It is based on a synth script I found on the Web and then modified for my purposes. The goal is not to produce many different sounds, but to have scripts that can turn ABC notation or MIDI files into a WAV file without too much tinkering.
There are nine PySynth variants now: PySynth A, the oldest variant, only needs Python itself, and sounds somewhat like a cross between a flute and organ. PySynth B is more complex in sound and needs NumPy. It is supposed to be a little closer to a piano. No competition for Pianoteq of course, but a reasonable fit for keyboard music. PySynth E is similar, but an FM-synthesized e-piano so it sounds much brighter than B (slightly DX7 e-piano-like; I used the DX7 presets in hexter as a basis). PySynth S is more comparable to a guitar, banjo, or harpsichord, depending on note length and pitch. PySynth C, D, and P are subtractive synths, reminiscent of 1970s analog synthesizer voices.
The synthesizers are all monophonic, i.e. they can only play one note at a time. (Although successive notes can overlap in PySynth B and S, but not A.) However, two or more output files can be mixed together…
ABC, developed by Chris Walshaw, is a format designed to notate music using plain text. It was originally designed for folk tunes of Western European origin which can be written on one staff, but has since been extended to support the notation of complete, classical music scores.
Since its introduction at the end of 1991, ABC has become very popular. Programs on many operating systems use ABC as an input and/or output format. There are programs which produce printed sheet music or allow for computer performances, search in tune databases, or that analyze tunes in some way.
The aim of this project is to promote the ABC language by maintaining the ABC standard and a set of software and source code that manipulate and present music written in ABC.