Noureddine RAMDI / MiniDexed: Bare-metal DX7 FM synthesis on Raspberry Pi with near-zero latency

Created Sat, 23 May 2026 20:41:14 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

probonopd/MiniDexed

MiniDexed achieves something rare in the audio synthesis world: running eight simultaneous Yamaha DX7 tone generators directly on a bare-metal Raspberry Pi with no operating system overhead. This means MIDI-to-audio latency is effectively eliminated since there’s no kernel scheduler to contend with. Under the hood, it’s a masterclass in stripping away every abstraction layer between your input and the DAC output.

What MiniDexed does and how it’s built

MiniDexed is a bare-metal FM synthesizer designed for the Raspberry Pi family. It emulates up to eight independent DX7 tone generators simultaneously — essentially recreating the Yamaha TX816 or TX802 rack synth experience on a single-board computer. This is no small feat given the complexity of the DX7’s FM synthesis engine.

The project is built on top of Circle, a C++ bare-metal framework for Raspberry Pi devices. Circle provides the hardware drivers and runtime environment needed to run code without an OS. On top of Circle, MiniDexed uses Synth_Dexed, an embedded port of the popular Dexed FM synth engine, which faithfully replicates the DX7’s synthesis algorithms.

This bare-metal approach removes the typical overhead that comes with operating systems, such as context switching and kernel scheduling, which can cause latency spikes and jitter. By running directly on hardware, MiniDexed achieves near-zero latency from MIDI input to audio output — a crucial feature for live performance and real-time synthesis.

Audio output options include the Raspberry Pi’s PWM headphone jack (with limited quality on earlier Pi models), I2S DACs such as PCM5102A or PCM5122 for high-fidelity sound, and HDMI audio output. The project also supports an optional HD44780 LCD display paired with a rotary encoder, allowing physical menu navigation and parameter tweaking without a PC.

Voices can be loaded from standard DX7 .syx files stored on the SD card, letting users bring their favorite patches into the MiniDexed environment. Each of the eight tone generators can be individually detuned, stereo-panned, and assigned different voices. The synth includes built-in compressor and reverb effects to enhance the sound.

Technical strengths and design tradeoffs

MiniDexed’s core technical strength is its ability to run multiple complex FM synthesis instances concurrently on a constrained embedded platform without an OS. This is made possible by the Circle framework’s low-level access and efficient Synth_Dexed code.

This approach trades off flexibility and ease of use for performance and latency. Running bare-metal means you lose conveniences such as multitasking, easy driver updates, and a standard user interface. It also limits portability since MiniDexed only runs on specific Raspberry Pi hardware.

The codebase integrates an existing DSP engine (Synth_Dexed) into a bare-metal environment with care. Synth_Dexed itself is a compact, embedded-friendly port of Dexed, which is a well-known open-source DX7 emulator. MiniDexed strikes a balance between modularity and the constraints of direct hardware control.

The audio output support is flexible, accommodating different hardware setups from basic headphone jack to high-quality I2S DACs and HDMI audio. This versatility is important for real-world use, where users may have different sound output needs.

The optional LCD and rotary encoder interface is a practical addition that enhances the DX experience without requiring external software or network connectivity. It shows attention to usability in an embedded context.

One limitation is hardware dependency: on Raspberry Pi 1 or Zero models, functionality is restricted to a single tone generator instead of eight, and Raspberry Pi 5 support is still experimental with some features unavailable. Additionally, the lack of an OS means users must be comfortable flashing SD cards and managing hardware components directly.

Quick start

System requirements and setup instructions from the README are as follows:

## System Requirements

- Raspberry Pi 1, 2, 3, 4, or 400. Raspberry Pi Zero and Zero 2 can be used but need HDMI or a supported i2s DAC for audio out. On Raspberry Pi 1 and on Raspberry Pi Zero there will be severely limited functionality (only one tone generator instead of 8)
- Raspberry Pi 5 can be used but currently support is experimental: HDMI sound and USB Gadget mode are not available yet, and it is not clear if there are implications for cooling from running MiniDexed. Also, MiniDexed is currently not taking advantage of the higher processing power of the Raspberry Pi 5 yet. *Hence, you may consider using one of the less expensive, older Raspberry Pi boards for your first build.*
- A PCM5102A or PCM5122 based DAC, HDMI display or audio extractor for good sound quality. If you don't have this, you can use the headphone jack on the Raspberry Pi but on anything but the Raspberry 4 the sound quality will be seriously limited
- Optionally (but highly recommended), an LCDC1602 Display (with or without i2c "backpack" board) and a KY-040 rotary encoder

These requirements highlight the practical hardware considerations involved in running MiniDexed.

Verdict

MiniDexed is a strong choice for embedded audio developers and Raspberry Pi enthusiasts who want to push the limits of low-latency FM synthesis in a compact, bare-metal setup. It effectively recreates the classic Yamaha TX816 experience with up to eight concurrent DX7 tone generators, all running without OS overhead.

The tradeoff is that it demands specific hardware and some embedded development comfort. It’s not a plug-and-play software synth, but rather a platform for users who want to build or experiment with a dedicated synth box on Raspberry Pi hardware.

If you’re interested in audio synthesis, embedded systems, or minimizing latency in digital instruments, MiniDexed offers a clean, well-engineered codebase to explore. The project’s transparency about hardware limitations and experimental support makes it a practical starting point rather than a black box.

In short, MiniDexed is a niche but technically solid project that exemplifies the power and complexity of running sophisticated DSP code on bare-metal embedded platforms.


→ GitHub Repo: probonopd/MiniDexed ⭐ 1,591 · C++