Goals and Expectation Management
One thing needs to be explained right up front. While what I want to build will be fully functional system, this will not be an instrument you can stack up against an Arturia, a Make Noise, or a MOOG, But then those systems cost around $2,000, $4,500, and $10,000 respectively. As I said in the introduction I want a system that, while a fully functional instrument, is as low cost as possible. What this means is that, for example, while an Envelope Generator in a big modular syth is built using an assortment of op-amps, gates, transistors, pots, capacitors and more, the FUNCTION of an envelope generator can be built using one small microcontroller and a very few other parts. So while this is going to be an exercise in engineering, it is also going to be an exercise in cost containment.
The primary way to reduce costs here is going to be by whittling down the parts count (Bill of Materials, or BOM) to as low a number as possible. And the primary way I plan on doing that is by doing as much in inexpensive microcontrollers as possible. Sub-one-dollar micros have plenty of horse power these days to manage this application and what's more, they now come in varieties that contain op-amps, DACs, ADCs, and other analog circuitry.
Keeping the BOM line count low also means that we're keeping the printed circuit board (PCB) size low, which provides another cost savings as well as allows us to use small, inexpensive off-the-shelf enclosures. Custom costs money, so we'll have none of that. <grin>
One of the handy things about building a modular synthesizer is that by their nature they are chopped up into discrete circuits, or modules. This allows us to create a logical sequence of which to work on first.
Step 1 : To start, we will need a foundation. That is, a power supply, a controller, and some sort of audio amplifier.
The power supply is fairly simple. I want all of the various modules to work off of a 5 V dc power source. Doing so will let us choose common and inexpensive parts for various circuits in the system. As I envision it now, I picture the power supply module containing a rechargeable 6 volt battery pack, as well as a provision for charging the pack via a USB connection (power only, no data). We can use one of the billions of USB phone chargers littering the Earth to charge the pack, or an end user can use an available port on their computer.
The controller couldn't get much simpler. We need to provide a trigger signal, and a variable control voltage. The trigger is simply a push button, and the control voltage will come from a potentiometer connected as a variable voltage divider.
For the audio amplifier, well, if were keeping cost low how can we consider anything other than the LM386? This ubiquitous little audio amp can drive the tiny speaker I envision using, as well as provide for a stereo headphone jack. This module should also provide for an audio output suitable for feeding PA or recording equipment.
Step 2 : Having power, control, and output, the next module we'll need is an oscillator.
The Voltage Controlled Oscillator (VCO) is really the heart of any synthesizer, and in this project probably the most complicated. Conventional VCOs are typically based on complex analog circuitry based on op-amps. These oscillators work great but there are some drawbacks. They need to be calibrated, their tuning can shift with age, and their circuits can be quite temperature sensitive. This is the first place we'll be ditching a lot of analog circuitry and going with a microcontroller.
As I type this I do not know how I'm going to build this VCO. There are several ways to generate a waveform with a microcontroller, and three lend themselves to this application. We could generate a pulse width modulated (pwm) signal directly, and filter that into an analog wave. Or we can use an external digital to analog converter (DAC) and feed it numbers based on mathematical computations, or we can use an external DAC and feed it numbers from a (pretty large) look up table.
Deciding on which approach to take will based on trade offs between PWM resolution, math cycle time to create waveform data, read times from external EEPROMS, MCU clock speeds, and probably other factors. This will all be figured out by building and comparing the various circuit options. And, it will probably be an epic build log entry.
Step 3 : Okay, We're making noise, now we need some dynamics.
Dynamics are variations in loudness. Consider a bell. It starts instantly loud as soon as it is struck, then fades out over time. In a synthesizer that is done with a voltage controlled amplifier (VCA)and an envelope generator.
In it's simplest form, and envelope generator has two controls; Attack, or how quickly the sound turns on, and Release, or how quickly it fades away. The envelope generator receives a trigger which starts the attack-release sequence and generates an appropriate waveform which is fed into the VCA.
It is easiest to think of the VCA as a voltage controlled volume control. The output of the VCO is constant, and at full volume. That signal is input to the VCA. The volume of that signal at the output of the VCA is controlled by the analog voltage fed in from the envelope generator.
So here's how the modules line up so far:
- The potentiometer on the controller module generates a control voltage that is fed to the VCO, and determines the frequency, or note, of the output signal. That output is fed into the VCA.
- The push button on the controller is attached to the trigger input of the envelope generator. When the button is pressed the envelope generator ramps up it's output signal at a speed determined by the attack knob. That signal is fed into the control input of the VCA. When the button is released the signal fades away at a rate set by the Release knob.
- The VCA controls the volume of the audio signal such that it tracks the control voltage coming from the envelope generator.
- The output of the VCA is fed to the audio amplifier, and we can hear the resulting signal from the speaker.
So, while pretty limited, if I get to the point that these six modules all work well, I can call it a modular synthesizer. But we'll need a few more modules to really have some fun.
Having a Voltage Controlled Filter (VCF) will really expand the range of sounds we can get from the system. A Low Frequency Oscillator (LFO) can be used to modulate the filter or to trigger the ... Sample and Hold (S/H) module. A noise source can be used to create drum sounds, or with the S/H to generate random notes.
Beyond that we get into sequencers, trigger sequencers, special filters, special oscillators, and a whole host of specialized modules. But you don't have to count on me for them. With a simple and wide open spec, just about anyone could design additional modules, or interface these to other equipment they might have.
So here we go. I'm going to tackle the modules pretty much in the order I listed them here. I will post one project log for each module, and each module will have its own github directory for reference material.
This should be fun! Please click on 'LIKE' and 'FOLLOW' above on this page and follow along with me!