An RPi-Powered Multi-DX7/TX816 Style Synth

[Kevin] over at Simple DIY ElectroMusic Projects has released a complete DIY modular design for simulating the classic 80s Yamaha TX816 DX/FM modular digital synthesizer. This beast of a synth was used by the cool bands of the 80s as well as TV studios, and ownership of the original machine is an expensive investment. But with the power of modern hackable electronics, and the MiniDexed firmware running bare-metal on a Raspberry Pi getting access to a compatible synth doesn’t have to break the bank.

[Kevin] wanted to emulate the look and feel of the original TX816 aesthetic, developing a custom PCB handling the user interface for four of the eight channels, and a second acting as an interface to the Raspberry Pi using a Pico. Also sitting on this PCB is the GY-PCM5102 I2S DAC, and the MIDI connectors needed to connect to the system controller. Both PCBs, including a PCB-based front panel, were developed with KiCAD. The firmware for the Pico part of the system can be found on the firmware GitHub. The video demo (embedded below) shows off the system running a very 80s-sounding rendition of Holst’s famous ‘Jupiter’ from the planet series, and we all agree it sounds pretty sweet. For a complete rundown of the build, here are the links for the blog series for ease of access: Intro, PCBs, Panel, Build Guide, Mechanical, Pico/TX816 IO code, and finally usage. Phew!

If MiniDexed sounds familiar, that is because we featured another of [Kevin’s] earlier MiniDexed projects a little while ago.

16 thoughts on “An RPi-Powered Multi-DX7/TX816 Style Synth

  1. Just when I thought we were free of FM synthesis…

    But really, I’m intrigued by developing software for the RPi (or any Cortex-A) without an OS. I rather like using microcontrollers, but the difference between kilobytes and gigabytes is .. significant.

  2. How is the tone generation done?
    I looked at the project and all about the UI. There’s a I2S DAC so I’m assuming this is playing samples of the real Yamaha? There’s enought computing power to make and add some sine+cos waves…

    1. The tone generation is done on the RPi 4. FM synthesis is a pretty basic mathematical operation these days, so producing eight instances of seven operator synthesis in real time is well within its capacity. You then just send the resulting waveforms to the DAC to produce the audio.

    2. Dexed is a software implementation of the DX7 FM synthesizer, and MiniDexed makes use of Synth_Dexed which is an embeddable fork of that. There’s no samples involved as far as I’m aware.

  3. Does RPI DX7 do actual FM synthesis? The DX7 did 6 OP FM with 32 different algorithms. Each OP requires multple table lookups and multiplies. Each systhesized voice or note requires 6 times this computation. The DX7 or DX7II could play 16 notes (using the same sound algorithm or polyphony) simultaneously. (This is how a chord is played.) All of this computation creates a single audio sample. CD sound quality requires 44,100 samples per second. This is a LOT of real time computation for a RPI.

    1. Raspberry Pis are faster than you think and from a cursory glance of the code, it looks like synth_dexed (the underlying synthesis engine) starts out by computing a bunch of fairly small lookup tables to make the heavyweight functions a lot faster. Most of what the Pi has to do is multiplication and addition from small LUTs, and that’s what ARM is pretty good at.

      It helps that in MiniDexed there’s no OS running, it’s just the synth engine running directly on the CPU with no task switching overhead.

      Remember that the Pi 4 runs at 1.5GHz, so each 16-bit audio sample has around 34 cycles to work with – not incredibly luxurious, but plenty fast for the kinds of operations that need to happen. Also I suspect that with DX7-style FM you can get away with a much lower sampling rate.

    2. Don’t forget the DX7 was an early 80’s electronic, and you are overstating its complexity. The chips have been decapped and fully reverse engineered. For instance each operator basically amounts to a lookup table which is just a quarter of a sine wave. And the 32 algorithms are just different orders and combinations of routing the operators together, not 32 different discrete compute units. There’s also no analog filtering that needs audio DSP to replicate. It’s maybe a dozen multiplies per sample. It’s not really a lot of computation at all.

Leave a Reply to David AshleyCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.