Software Synthesis:
Making Music With a Computer

 


BasicSynth book

The pages on this website are excerpts from the book, BasicSynth: Creating a Music Synthesizer in Software. The printed book (preliminary) is available direct from the publisher, and will be available soon through normal retail book sellers. The final revision is expected to be complete by the end of November.

The complete source code to the BasicSynth library and example programs is available on sourceforge.net under the project name basicsynth. The current release is in beta test stage and may change somewhat before the final version is released.


Like many of my generation, my first exposure to synthesized sounds came through the Switched on Bach recordings by Walter Carlos. Those recordings opened up a whole new world of sounds for many of us. But my real introduction to synthesizers came a few years later when I built my first synthesizer from a PAIA kit. It was not much of a synthesizer. I had one VCO, one VCA, one VCF, AR envelope generator, LFO and keyboard, and soon discovered that without a multi-track recorder there wasn't much you could do except make interesting sound effects. Nevertheless, that little synthesizer allowed me to gain an understanding of how synthesizers make sounds. A few years later I enrolled for graduate study at the University of North Texas and finally got my hands on big synthesizers in the form of a large Moog system and Synclavier II digital synthesizer. A good deal of my time in graduate school was spent hanging out in the electronic music labs with other composers speculating about different ways we might make new sounds.

Later, after I had left school and begun work as a computer programmer, I began to purchase my own synthesizers. My first bonus check from my job went for a down payment on a Yamaha DX7, a remarkable synthesizer for its time. Hooked up to my Commodore C64 computer through a home-built MIDI interface, it gave me a way to continue to use computers and synthesizers to make music. Not having any commercial music software available, I wrote a simple sequencing program dubbed Notelist.

Eventually the keyboards got put away in favor of software synthesis using CSound, a direct descendant of the granddaddy of all software synthesis system, MUSIC by Max Matthews. But, as flexible and powerful as a program like CSound is, I always missed the interactive creation of sound through a keyboard like the DX7. Being able to hear how the tweaks affect the sound is very useful. Thus, I eventually decided to create some synthesis software routines so that I could get a more immediate result. Over time, my short routines grew into a fairly large synthesis system, and the software on this site is the current version of that endeavor. Just as I discovered when building my own synthesizer as a teenager, I found that having to program the synthesis system myself improved my understanding of the underlying equations and algorithms that are used to create sound on a computer. Hopefully, documenting how I went from simple sound generators to complex instruments will help others gain a similar understanding.

Along the way I developed some useful utilities to help me explore software synthesis techniques. Most of what these utilities do could be done in a system such as CSound or Pure Data. But having a nice interactive program is very useful. The utility programs can produce sound immediately and can also produce an output of the graphic for documentation.

It is not the purpose of this website to describe signal processing theory in detail. We can take it for granted that the mathematicians and engineers got it right, and use the derived equations. Likewise, this site does not explore any new or original methods of sound synthesis. The examples shown here are the way most synthesis software is implemented and has been implemented since the 1960s. Instead, this information is intended as an introduction to software synthesis with a focus on the practical problems of programming the sound generation routines and combining them in a way to produce an efficient working synthesizer.

Daniel R. Mitchell  (dan@pheugo.com) 

Links: