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. |
|