YM3812-Module

This code repository parallels a series of articles about a YM3812 module written on thingsmadesimple.com

With each new article, the functionality of the module will grow, and the associated code and schematics will be available here.


Current Articles

Focuses on FM Synthesis basics, the YM3812's register map and electrically controlling the chip's pins.

Introduces a basic implementation of the YM3812 circuit controlled by an AVR128DA28 microcontroller that we will build on in future articles. Think of it as a "Hello World" starting point that ensure the circuit works and that we can upload code to the microcontroller.

Walks through the implementation of the YM3812 class used in Part 2 and describes how each of the register manipulation functions work.

Adds a MIDI input to our schematic, and discusses how to translate MIDI note numbers into frequencies the YM3812 understands

Adds Polyphony to our breadboard module, walking through a couple of algorithms in the process.

Revise the YM3812 class implementation to support more generic instrument definition

Add General MIDI drum support by linking different drum sounds to different notes on the keyboard

Add touch sensitivity to the module by selectively scaling the right operator levels

Turn that breadboard into a business card sized PCB!

Add pitch bend capabilities and shred on a YM3812


Article Backlog:

YM3812 Part ?: OPL2 in STEREO!

Add another YM3812 chip and some stereo effects for panning and detuning

YM3812 Part ?: Adding a menu to swap patches

Add a TFT Screen and a Rotary Encoder so we can adjust patch assignments to MIDI channels

YM3812 Part ?: Adjust Patch Properties

Add buttons and a menu system that lets us adjust patch settings individually

YM3812 Part ?: Visualizing 2-OP envelopes

Add a graphical visualization that helps us interpret patch settings

YM3812 Part ?: Virtual 4-OP Voices

Add support for virtual four-operator voices

and more...