2A03 Synthesizer‎ > ‎


My goal for this project was to capture the 2A03 sound, and then add features to make the chip more friendly to musicians.  Call my program an enhanced "re-implementation" of the 2A03.  It is an 2A03 freed from the limitations of the original hardware.  The core 2A03 "sound" however is preserved and faithfully reproduced.

At it's core, the 2A03 contains 4 sound generation circuits:
  • triangle generator
  • 2 square wave generators (each having a slightly different sweep algorithm)
  • noise generator
To ensure that the sound was authentic I first read various online documents describing detailed operation of the chip. I found Brad Taylor's online technical reference document to be an invaluable source of information for this project.  Using this information I then determined what was and wasn't needed from an audio perspective.

I've basically determined that there are three things that give the A203 it's distinct sound:
  • harmonic content of waveforms (primarily a by-product of the 4-bit digitization of volume)
  • the random number generator used in the noise channel
  • sweep algorithm and timing
These are the portions of the 2A03 that are replicated exactly in the 2A03 Synthesizer.
  • waveform shape / harmonic content
  • waveform volume quantization
  • frequency sweep algorithm and timing
  • decay generation and timing
  • noise random number generator
Now, to "expand" the synthesizer I've added the following features.  I've detailed how these features differ from a real 2A03.
Expanded 2A03 Real 2A03
True analog tone frequencies Tone frequencies are digitized to closest available frequency.  Noise channel has very limited tone control.
Expanded range of allowable square wave duty cycles  Only allows 12.5%, 25%, and 50% duty cycle
True analog volume control over each waveform generator Limited volume control over square and noise generators
8 voice polyphony per generator Single voice per generator
ADSR envelope support Only basic "time length" control
Sweep and decay support (same as square generator) added to triangle generator Not possible
Can select "upwards" sweep algorithm to use in the square wave generators  Not programmable.  Square wave 1 always uses "NOT" algorithm.  Square wave 2 always uses "NEG" algorithm.
Sweep support (same as square generator) added to noise generator Not possible

I've considered possibly adding the following features in the future:
  • support for audio panning
  • addition of LFOs and what not to modulate the waveform generators
  • addition of filters, chorus effect, etc...
Feel free to drop me a line if you have any questions or comments about the synth.