MiniDexed: Bare-Metal FM Synthesis on Raspberry Pi
Dexed FM synthesizer similar to 8x DX7 (TX816/TX802) running on a bare metal Raspberry Pi (without a Linux kernel or operating system)
At a glance
- What is it?
- MiniDexed is a C++ project that turns a supported Raspberry Pi into a multi-voice Dexed FM synthesizer without Linux. It is aimed at Raspberry Pi owners who want DX7-style synthesis, SD-card voice loading and MIDI control, but hardware support and audio quality vary by model.
- Who is it for?
- MiniDexed suits builders who want a dedicated DX7-style instrument from a Raspberry Pi and can provide compatible audio hardware. It is less suitable for users who require Linux applications, quiet boot-time behavior, or equal feature support across Raspberry Pi generations.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly C++, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Why MiniDexed targets Raspberry Pi instrument builders
MiniDexed addresses a specific gap between a general-purpose Raspberry Pi computer and a dedicated hardware synthesizer. The project runs directly on bare metal, without a Linux kernel or operating system, and models its behavior on the Yamaha DX7. On Raspberry Pi 2 and larger, the documentation says it can run 8 tone generators at once. That arrangement resembles the TX816 and TX802, which are described as eight DX7 instances without a keyboard in one enclosure.
The intended users are people building a small MIDI instrument, experimenting with FM patches, or using a Raspberry Pi as a standalone synth. The system accepts voices from `.syx` files on an SD card, responds to MIDI Program Change and Bank Change LSB/MSB messages, and can expose an optional display and rotary encoder for local menu operation. The README also documents voice editing over MIDI through tools such as synthmata, although that path requires additional hardware.
This is not a general audio workstation or a software-only emulator intended for an ordinary desktop. Its main design choice is to run the synthesizer close to the hardware and avoid a conventional operating system. That can make deployment simple for someone who wants an appliance-like instrument, but it also means the supported hardware and boot process matter.
MiniDexed's synthesis and signal path
The project is based on Synth_Dexed and uses circle-stdlib. Based on the README, each active voice is represented by a Dexed instance. Up to 8 instances can run simultaneously on Raspberry Pi 2 and larger, and their outputs are mixed together. Each instance can also be detuned and assigned a stereo shift, allowing a multi-voice setup to have width and tuning variation.
Audio can be sent through the Raspberry Pi headphone jack, an HDMI display, an HDMI audio extractor, or a dedicated I2S DAC. The README describes a PCM5102A or PCM5122 based DAC as the best-quality option, while the headphone jack is described as having seriously limited sound quality on boards other than Raspberry Pi 4. The selected output is controlled through `minidexed.ini`, using `SoundDevice=pwm`, `SoundDevice=i2s`, or `SoundDevice=hdmi`.
The voice bank is file-based rather than tied to a Linux audio application. Users can place `.syx` files on the SD card and use them with the synthesizer. For voice programming, the README directs users to DX series editors that use MIDI SysEx, including Dexed. Library management is assigned to MiniDexedLibrarian. This separation between patch files, synth configuration and hardware output is useful for repeatable builds, although it requires the SD-card files and configuration to be prepared correctly before boot.
Installing a MiniDexed SD-card image
The README does not document a source-build command in the installation instructions. It directs users to GitHub Releases for a compiled SD-card image, so the practical first installation does not begin with compiling C++. The documented sequence is to download the release archive, unzip it, and copy its files into the root directory of a FAT32-formatted SD or microSD card. For small cards, the README notes that FAT16 may be needed if the card has fewer than 65525 clusters.
The card should be inserted into a supported Raspberry Pi after the audio and MIDI connections are prepared. For Raspberry Pi 4, the README recommends updating the firmware and bootloader to the latest version because older firmware may affect USB reliability. The SD-card root must contain the release files, including `minidexed.ini`, and the file layout should not be changed without checking the wiki.
A first use can use the documented default headphone output. With headphones connected, verify that `minidexed.ini` contains the following setting:
SoundDevice=pwmThat is the default according to the README, but it also has the lowest documented audio quality. A builder using a dedicated DAC should instead select the I2S path documented by the project:
SoundDevice=i2sThe hardware page linked from the README describes the supported DAC connections. After booting, connect a USB MIDI keyboard. MiniDexed will then use the loaded voices and respond to the configured MIDI control messages. Optional `.syx` files can be copied to the card afterward. If the system becomes unresponsive after several seconds, the README gives one specific recovery step: remove `usbspeed=full` from `cmdline.txt` and repeat the boot.
The project’s release assets and wiki are the authoritative places to obtain the image and wiring details. The README does not provide a package-manager installation command or a complete boot log to use as an acceptance test.
Board-specific audio and performance limits
MiniDexed does not present one uniform hardware profile across Raspberry Pi generations. Raspberry Pi 2 and larger can run 8 tone generators, while Raspberry Pi 1 and the original Zero are limited to one tone generator according to the README. Raspberry Pi Zero and Zero 2 can be used, but they need HDMI or a supported I2S DAC for audio output. The older boards therefore have both a voice-count limitation and a narrower audio-output story.
The Raspberry Pi 4 has a headphone jack, and the README recommends its firmware and bootloader be updated. For better sound quality, a PCM5102A or PCM5122 based DAC is the preferred path described in the project documentation. HDMI output is available as an alternative, although it may introduce slight latency. The headphone output is a practical starting point for testing, not necessarily a suitable final signal path for a serious instrument.
Raspberry Pi 5 support is explicitly experimental in the README. HDMI sound and USB Gadget mode are currently unavailable there. The documentation also says MiniDexed is not yet taking advantage of the higher processing power of the Raspberry Pi 5, and raises uncertainty about cooling implications. An older, less expensive board may therefore be the more predictable first build for someone who needs the documented feature set rather than unused processing capacity.
MIDI control and performance configuration
MiniDexed treats MIDI as the main control surface for playing and organizing a synth. The README documents support for multiple voices through Program Change and Bank Change LSB/MSB messages. USB MIDI is the documented connection method, with a DIN-MIDI-to-USB adapter listed as an alternative. This makes it possible to use a conventional MIDI keyboard without requiring the project to implement a native DIN connector.
Patch data is loaded from `.syx` files stored on the SD card. The README mentions `getsysex.sh` for obtaining or using SysEx material and points to `Dexed_cart_1.0.zip` as an example source. The project also documents voice editing over MIDI through a DX series editor. The external editor requirement is important: MiniDexed provides the playing engine and configuration surface, while patch creation and library management may depend on other software.
Performance layouts are configured through `performance.ini` files. The README says these files can configure multiple Dexed instances and gives converted files from instruments including DX1, DX5, TX816, DX7II and DX802 as examples. Compressor and reverb effects are listed as built-in features. These controls make the project more than a single-patch player, but they also introduce a file-based setup that must be prepared and copied to the card.
For users who want local operation without MIDI editing, an optional HD44780-compatible LCDC1602 display and KY-040 rotary encoder provide a menu and rotary control path. With an I2C backpack, the README gives this configuration key:
LCDI2CAddress=0x27The address must match the display hardware, so it should not be copied blindly to a board configured for another address.
What MiniDexed costs to maintain and license
MiniDexed is licensed under GPL-3.0. That license is relevant for anyone modifying the C++ source or distributing a derived version, because the repository identifies the project as GPL-3.0 and the resulting obligations depend on how the software is used and distributed. The README does not provide legal advice or describe a separate commercial support model.
The repository is not archived, and its last push was on 2026-04-18. That status does not by itself guarantee compatibility with every future Raspberry Pi firmware or bootloader release. The documented need to update Raspberry Pi 4 firmware for USB reliability is a concrete maintenance concern: an image that worked on one system state may need renewed attention when the host firmware changes. The Raspberry Pi 5 notes add another maintenance boundary because HDMI sound and USB Gadget mode are not currently available.
For upgrades, the project uses release archives rather than a package manager in the documented install path. Users must preserve or recreate the SD-card configuration, especially `minidexed.ini`, `performance.ini`, and `.syx` files. The README links to the wiki for menu operation and hardware details, but it does not document a rollback procedure. That omission matters when changing between release images, because the project documentation does not state whether configuration files are migrated or preserved automatically.
Editorial conclusion
MiniDexed suits builders who want a dedicated DX7-style instrument from a Raspberry Pi and can provide compatible audio hardware. It is less suitable for users who require Linux applications, quiet boot-time behavior, or equal feature support across Raspberry Pi generations. Verify the selected board, audio device, firmware, `minidexed.ini` settings, and SD-card layout before committing to a build; on Raspberry Pi 5, HDMI sound and USB Gadget mode remain unavailable according to the README.
Frequently asked questions
What Raspberry Pi boards can run MiniDexed?
The README lists Raspberry Pi 1, 2, 3, 4 and 400. Zero and Zero 2 can also be used with HDMI or a supported I2S DAC, while Raspberry Pi 5 support is experimental.
How do I install MiniDexed?
The documented installation uses compiled files from GitHub Releases. Download and unzip the release, then copy the files to the root of a FAT32-formatted SD or microSD card.
Can MiniDexed output audio through a Raspberry Pi headphone jack?
Yes. Set `SoundDevice=pwm` in `minidexed.ini`, which the README identifies as the default. It describes the headphone output as poor in quality on boards other than Raspberry Pi 4.
How many voices can MiniDexed play at once?
Raspberry Pi 2 and larger can run up to 8 Dexed instances simultaneously. Raspberry Pi 1 and the original Zero are documented as having only one tone generator.
Where do MiniDexed voices come from?
Voices are loaded from `.syx` files on the SD card. The README mentions `getsysex.sh` and `Dexed_cart_1.0.zip`, and says DX series editors can program voices over MIDI SysEx.
Does MiniDexed support Raspberry Pi 5 HDMI sound?
Not currently according to the README. Raspberry Pi 5 support is experimental, and HDMI sound and USB Gadget mode are listed as unavailable.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/probonopd-minidexed)