YM3812 Synthesizer

Built VCO Version 1.0
YM3812 Synthesizer

After seeing Tyler Klein’s YM3812 build, I started thinking about adding a simple digital FM synthesizer to my case. While something similar to the DX-7 is a confusing tangle of six operators, the YM3812 is the picture of simplicity – two operators which can either be added or multiplied together.

The brains of this module is a ATMEGA1284 chip which hosts the code, reads the inputs, and sends the patch parameters through a 74HC595 shift register to the YM3812 chip. The YM3812 chip reads the incoming patch parameters, performs the actual synthesis, and then a Y3014B digital to analog converter transforms the digital output of the YM3812 to audio.

Tyler’s project (so far) has resulted in a breadboard ready schematic and the code needed to operate the YM3812 with a microcontroller, and I built off of this base by:

  • Adding a screen and a rotary controller for the user interface
  • Adding 1v/oct, gate, and velocity inputs so that, in addition to polyphonic MIDI control, the module can be played as a monophonic synthesizer using control voltage
  • Adding a MIDI through output, just in case I want to chain multiple MIDI instruments together
  • Adding 4 assignable CV inputs with attenuators and offsets so that there are four sources of control voltage which can be used to control patch parameters

The code that glues this all together is based on Tyler’s original code, and I then used Claude Code to help build out the UI and integrate all the features I added.

14HP
Width
2PCB
Boards

Name Signal type Notes
In MIDI MIDI MIDI input
In 1V/OCT Control Voltage Pitch input
In GATE Gate Gate input
In VELOCITY Control Voltage Velocity input
In CV 1 Control Voltage Assignable CV input
In CV 2 Control Voltage Assignable CV input
In CV 3 Control Voltage Assignable CV input
In CV 4 Control Voltage Assignable CV input
Out MIDI MIDI MIDI through
Out Output Audio Audio output

While functional, the user interface is pretty clunky and has room for improvement.  At some point I might try to redesign the menus and screens for the patch assignment and parameters to make them more straightforward.