Richard Atkinson

Yamaha FM synthesis projects

Yamaha's FM sound chips were popular on the MSX series of home computers and on the PC as the AdLib and SoundBlaster standards. One was also used in the Commodore Sound Expander for the C64, and another as a cut down core in a memory mapper in the game Lagrange Point by Konami for the Nintendo Famicom. There are several chips with closely related capabilities. YM3526 OPL was the first of the low cost chips. It has 9 voices with two operators each. Y8950 MSX-AUDIO is an expanded version of YM3526 with an ADPCM sample channel and a keyboard interface. YM3812 OPLII is a small enhancement over YM3526 and YM2413 OPLL is a cut down version of YM3812 OPLII. YMF262 OPL3 is based on a pair of YM3812 chips with some extensions and YMF278 OPL4 adds a wavetable facility.

I have long wanted to program the sounds on the Yamaha FM sound chips using an analogue synthesizer style control interface - i.e. with a knob or button for every parameter. So in 2013 I wrote some software for the SoundBlaster cards using a MIDI control surface, in this case an Evolution U-Control UC-16, and a polyphonic note assignment algorithm. This video shows the software being used to program the YMF262 OPL3 inside the SoundBlaster AWE64, using the Evolution control surface for programming the sounds and a Yamaha V50 MIDI keyboard to play the notes.

It is also possible to play notes with this software using a MIDI sequencer. In this video Windows Media Player is used as a MIDI sequencer, and the Evolution U-Control UC-16 control surface is used to program the sounds.

Another video showing the software being controlled using a MIDI sequencer, this time playing a sequence of the first movement of Brandenburg no. 3. The Evolution U-Control UC-16 control surface is used to program the sounds.

This image shows the FM parameters available using this software on the MIDI control surface.

Finally, to prove that my code for writing to the FM chip registers was working, I wrote an emulation of a famous Synclavier II sound for the YM3812 OPLII sound chip.