← Back to Projects

patches.fm

The DX7

The Yamaha DX7 is one of the most iconic synthesizers of all time. It is, in many ways, the sound of the 1980s. Everybody used it in the 80s: Depeche Mode, Genesis, Queen, Prince, a-ha, Whitney Houston, Kenny Loggins … hell, the Taco Bell bell sound is a DX7.

I fell in love with FM synthesis on the Sega Genesis, and am a child of the 1980s, so the DX7 has a special place in my heart.

Motivation

The thing about the DX7 was that it was notoriously difficult to program. Being a synth from the 1980s, its menu options were pretty limited, so it had a reputation for being “menu-dive-y”, and FM synthesis is also considered to be pretty difficult to master. As a result, most musicians stuck to the factory sounds.

Over the intervening decades, a lot of people have made patches for the DX7, ranging from minor modifications to the stock sounds to some truly weird spaceship-noises. These patches are typically shared on the Internet as MIDI SysEx messages that contained banks of up to 16 patches at a time.

There are great editors like Dexed that can also serve as patch librarians, and people like Bobby Blues have taken a lot of time to collect and catalog patches so they’re relatively easy to find. However, I was always frustrated with the fact that if I wanted to demo a patch, I’d have to find its containing bank and load it into Dexed first.

When I saw that someone had recreated the DX7’s sound engine in WebAssembly for a hackathon and I learned about Chrome’s support for Web MIDI, I had an idea: what if I collected all of the patch banks I could find, wired them up to a WebAssembly-based DX7, and let you preview them in the browser and push them to a hardware instrument with Web MIDI?

Implementation

I started working on patches.fm in late 2018, and wrote the initial version in a couple weeks. The list of patches is static and shipped to the client at page-load time, which makes the rest of the UI pretty fast. The WebAssembly DX7 engine and Web MIDI keyboard are very much Frankensteined together with my limited Javascript knowledge. All the fancy bells-and-whistles only work on Chrome, but the site’s still quite usable on other browsers.

Overall I’m pretty proud of how it turned out. It gets a few hundred views a month, which is pretty decent for something this niche with zero advertising. I’m hopeful that I’ve made some musicians’ lives a little easier with it. Building it scratched an itch, and provided a distraction at a time when one was sorely needed.

The Future

Over the years, I’ve made some small improvements here and there as the mood strikes me, like user accounts and favorites lists. One of these days, I’d like to assign instrument types to all the patches and make the search interface a little more usable. If you’re a patches.fm and have a request, let me know!