Synthesis Concepts

Before we design and code our synths, let's define a few fundamental elements of music synthesis.

Modules and Patches

Early synthesizers from Robert Moog and Don Buchla tended to be made up of discreet modules connected via patch cables. So, the flowchart-like path of connected nodes used to wire up the components of a synthesizer are often called patches.

Oscillators

The most fundamental element of a synthesizer is the oscillator. Its job is to create sound by producing a signal that varies in strength quickly over time, and usually with a repetitive, periodic cycle. This is typically an oscillation of AC voltage moving from, say, -1V to +1V.

How quickly does this wave oscillate? Anywhere from 20Hz to 20,000Hz is the typical range for human hearing. The frequency of the oscillator determines the pitch of the sound.

The shape of the oscillator’s signal is also important. A smooth sine wave will have a very pure sounding tone consisting only of the fundamental frequency, while a more jagged sawtooth will be rich with additional harmonics, lending a "buzzy" sound on top of the fundamental.

Here are some typical waveforms used for audio rate oscillators (the images were made using VCV Rack an Open Source Eurorack modular synthesizer program).

Sine Wave

Triangle Wave

Sawtooth Wave

Square Wave

One other notable sound source worth mentioning is Noise. It can be used for adding texture and percussive qualities to synthesized waveforms, as well as for more exotic applications, such as wind and wave crash sounds.

Noise

Audio Output

One of the most basic patches we can make is to wire an oscillator to an audio output node. In the Audio System Design Tool (which we'll cover more closely later in this guide), it will look something like this:

Mixers

A mixer is used to combine the signals of multiple audio sources. Each signal is fed into a separate channel -- four-channel mixers are typical. Each channel has an attenuator (usually a fader or knob in the real world) used to adjust how much of that channel's signal is combined in the mix. The mix output can then be patched to the audio output node, or other modules in a more complex patch.

Here’s an example of what happens when we mix a sine waveform with a white noise source.

Envelopes

Rather than always playing constant tones with not starts or stops, we’ll often want to activate the sound only at specific times, such as when a button is pressed. This is accomplished by adjusting the waveform’s signal strength with an amplifier. 

In its simplest form, this can sound like a harsh ON/OFF with the tone abruptly starting and stopping. Usually we prefer the sound of a more nuanced loudness envelope so that the sound seems to have been plucked, or struck, or blown as with a stringed instrument, woodwind, piano, percussion, and so on. The envelope that shapes the amplifier is described in stages: Attack, Decay, Sustain, and Release, often abbreviated as ADSR.

adabox_1280px-ADSR_v2.svg.png
https://commons.wikimedia.org/wiki/File:ADSR_v2.svg

With this ADSR envelope we can specify the following parameter:

  • Attack: amount of time it takes to amplify from zero to full volume
  • Decay: amount of time it takes to drop from full volume to the sustain volume
  • Sustain: volume level to maintain until the note is released
  • Release: amount of time to return from the sustain volume level to zero
Some envelope models are even more nuanced and add parameters for Delay (time before the attack begins), and Hold (time between attack and decay).

Effects

Once we know how to run oscillators through envelopes and into a mixer, it’s time to send some of the signals through effects! Typical effects available on a synthesizer include:

  • Delay
  • Reverb
  • Chorus
  • Flanger
  • Bitcrusher

These can be placed nearly anywhere in the signal path of the synthesizer. We’ll create a patch later that runs individual oscillator waveforms through their own effects on their way to the mixers. This diagram shows one such patch, which we'll use later to create the modules and patches for our Arduino code.

This guide was first published on Dec 18, 2018. It was last updated on Dec 18, 2018. This page (Synthesis Concepts) was last updated on Oct 18, 2019.