https://github.com/probonopd/MiniDexed Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} probonopd / MiniDexed Public * Notifications * Fork 8 * Star 142 Dexed FM synthesizer similar to DX7 running on a bare metal Raspberry Pi (without a Linux kernel or operating system) 142 stars 8 forks Star Notifications * Code * Issues 17 * Pull requests 0 * Discussions * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 2 branches 4 tags Code Latest commit @probonopd probonopd Update README.md ... 58aa2f3 Apr 17, 2022 Update README.md [ci skip] 58aa2f3 Git stats * 208 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows Put getsysex.sh on SD card Apr 10, 2022 CMSIS_5 @ 18205c6 Only small changes for README.md, so images for RPi2/RPi3 can now cre... Mar 13, 2022 Synth_Dexed @ c58ac7c Update Synth_Dexed to c58ac7 Apr 17, 2022 circle-stdlib @ 61cf3a4 Multi-core support (#47) Mar 14, 2022 src Reorder menu items (#106) Apr 17, 2022 .gitignore *.O Apr 11, 2022 .gitmodules Only small changes for README.md, so images for RPi2/RPi3 can now cre... Mar 13, 2022 README.md Update README.md Apr 17, 2022 build.sh Added code for enabling compressor (compressor code is in Synth_Dexed... Apr 3, 2022 getsysex.sh Update getsysex.sh Apr 10, 2022 View code [ ] MiniDexed Features Introduction System Requirements Usage Pinout Downloading Building locally Discussions Wiki Acknowledgements README.md MiniDexed [badge] minidexed MiniDexed is a FM synthesizer closely modeled on the famous DX7 by a well-known Japanese manufacturer running on a bare metal Raspberry Pi (without a Linux kernel or operating system). On Pi Raspberry 2 and larger, it can run 8 tone generators, basically creating an open source equivalent of the TX816/TX802 (8 DX7 instances without the keyboard in one box). Features * [*] Uses Synth_Dexed with circle-stdlib * [*] SD card contents can be downloaded from GitHub Releases * [*] Runs on Raspberry Pi Zero, Raspberry Pi 1, 2, 3, 4, 400 * [*] produces sound on the headphone jack, HDMI (better), or a dedicated DAC (best) * [*] Supports multiple voices through Program Change and Bank Change LSB/MSB MIDI messages * [*] Loads .syx files from SD card (e.g., using getsysex.sh or from Dexed_cart_1.0.zip) * [*] Menu structure on optional HD44780 display and rotary encoder * [*] Runs up to 8 Dexed instances simultaneously (like in a TX816) and mixes their output together * [*] Allows for each Dexed instance to be detuned and stereo shifted * [*] Allows to configure multiple Dexed instances through performance.ini files * [*] Compressor effect * [*] Reverb effect TODO * [ ] Make it possible to assign voice parameters to sliders and knobs on MIDI controllers * [ ] https://github.com/probonopd/MiniDexed/issues Introduction Video about this project by Floyd Steinberg: [6874747073] System Requirements * Raspberry Pi 1, 2, 3, 4, or 400 (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) * A PCM5102A or PCM5122 based DAC or 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 alphanumeric 1602 LCD Display and a KY-040 rotary encoder Usage * In the case of Raspberry Pi 4, Update the firmware and bootloader to the latest version (not doing this may cause USB reliability issues) * Download from GitHub Releases * Unzip * Put the files into the root directory of a FAT32 formatted partition on SD/microSD card * Put SD/microSD card into Raspberry Pi 1, 2, 3 or 4, or 400 (Zero and Zero 2 can be used but need HDMI or a supported i2c DAC for audio out) * Attach headphones to the headphone jack using SoundDevice=pwm in minidexed.ini (default) (poor audio quality) * Alternatively, attach a PCM5102A or PCM5122 based DAC and select i2c sound output using SoundDevice=i2s in minidexed.ini (best audio quality) * Alternatively, attach a HDMI display with sound and select HDMI sound output using SoundDevice=hdmi in minidexed.ini (this may introduce slight latency) * Attach a MIDI keyboard via USB * Boot * Start playing * See the Wiki for Menu operation Pinout All devices on Raspberry Pi GPIOs are optional. CAUTION: All GPIO numbers are chip numbers, not header positions. GPIO Device Function Direction Comment 14 UART TXD OUT 15 UART RXD IN 18 DAC CLK OUT 19 DAC FS OUT 21 DAC DOUT OUT 02 I2C SDA IN/OUT 03 I2C SCL OUT 17 LCD EN OUT 27 LCD RS OUT 16 LCD RW OUT 22 LCD D4 OUT 23 LCD D5 OUT 24 LCD D6 OUT 25 LCD D7 OUT 05 ROTARY ENCODER CLK (ENC A) IN default setting 06 ROTARY ENCODER DT (ENC B) IN default setting 26 ROTARY ENCODER SW IN 12 PWM AUDIO PWM0 OUT 13 PWM AUDIO PWM1 OUT 07 SPI /CE1 OUT 08 SPI /CE0 OUT 09 SPI MISO IN 10 SPI MOSI OUT 11 SPI SCLK OUT 04 NONE 20 NONE Downloading Compiled versions are available on GitHub Releases. Just download and put on a FAT32 formatted SD card. Building locally If you need to build the source code yoursel, you can use the following example, e.g., to build for Raspberry Pi 4 on a Ubuntu 20.04 build system. See build.yml for complete build steps that create versions for Raspberry Pi 1, 2, 3,and 4 in 32-bit and 64-bit as required. # Choose your RPi export RPI=4 git clone https://github.com/probonopd/MiniDexed cd MiniDexed mkdir -p kernels sdcard # Recursively pull git submodules git submodule update --init --recursive # Install toolchain if [ "${RPI}" -gt 2 ] then wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf.tar.xz else wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-arm-none-eabi.tar.xz fi tar xvf gcc-arm-*-*.tar.xz export PATH=$(readlink -f ./gcc-*/bin/):$PATH # Build dependencies and MiniDexed ./build.sh cp ./src/kernel*.img ./kernels/ # Get Raspberry Pi boot files cd ./circle-stdlib/libs/circle/boot make if [ "${RPI}" -gt 2 ] then make armstub64 fi cd - # Make zip that contains Raspberry Pi 4 boot files. The contents can be copied to a FAT32 formatted partition on a microSD card cd sdcard ../getsysex.sh cd .. cp -r ./circle-stdlib/libs/circle/boot/* sdcard rm -rf sdcard/config*.txt sdcard/README sdcard/Makefile sdcard/armstub sdcard/COPYING.linux cp ./src/config.txt ./src/minidexed.ini ./src/*img ./src/performance.ini sdcard/ echo "usbspeed=full" > sdcard/cmdline.txt cd sdcard cp ../kernels/* . || true zip -r ../MiniDexed_$GITHUB_RUN_NUMBER_$(date +%Y-%m-%d).zip * cd - # Optionally, create a RPi image. This can be written to a microSD card using tools like Etcher or dd sudo apt install --yes mount parted IMG="`date +%Y-%m-%d`_minidexed-RPi${RPI}.img" dd of="${IMG}" seek=50MiB bs=1 count=0 sudo parted "${IMG}" mktable msdos sudo parted "${IMG}" mkpart primary fat32 2048s 100% DEV=`sudo losetup --find --partscan --show "${IMG}"` sudo mkfs.vfat -F 32 -n BOOT "${DEV}p1" mkdir boot sudo mount "${DEV}p1" boot sudo cp -R sdcard/* boot sudo umount boot sudo losetup -d "${DEV}" rm -r boot # Write to SD card sudo dd if="${IMG}" of=/dev/mmcblk0 bs=512k status=progress && sync Discussions https://github.com/probonopd/MiniDexed/discussions Wiki https://github.com/probonopd/MiniDexed/wiki Acknowledgements * asb2m10 for the Dexed sound engine * dcoredump for https://codeberg.org/dcoredump/Synth_Dexed, a port of Dexed for embedded systems * rsta2 for https://github.com/rsta2/circle, the library to run code on bare betal Raspberry Pi (without a Linux kernel or operating system) and for the bulk of the MiniDexed code * smuehlst for https://github.com/smuehlst/circle-stdlib, a version with Standard C and C++ library support About Dexed FM synthesizer similar to DX7 running on a bare metal Raspberry Pi (without a Linux kernel or operating system) Resources Readme Stars 142 stars Watchers 6 watching Forks 8 forks Releases 4 Continuous build Latest Apr 17, 2022 + 3 releases Contributors 4 * @probonopd probonopd * @rsta2 rsta2 Rene Stange * @dcoredump dcoredump Holger * @smuehlst smuehlst Stephan Muhlstrasser Languages * C++ 83.9% * C 13.3% * Makefile 1.4% * Shell 1.4% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.