Port of Synth_Dexed to the Raspberry Pi Pico
More details can be found here: https://diyelectromusic.wordpress.com/2024/01/09/raspberry-pi-pico-synth_dexed/ Updates for the latest version can be found here: https://diyelectromusic.com/2025/04/12/raspberry-pi-pico-synth_dexed-revisited/
This is just experimental and likely to develop, change or break somewhat erratically as I thinker with it. It remains to be seen if it will go anywhere or not. For now, it's just a bit of fun.
** No fitness for purpose can be implied. Use at your own risk. **
Kevin
- Install the Pico SDK, toolchain and core libraries as per https://github.com/raspberrypi/pico-sdk.
- I used the "Manually Configure your Environment" instructions in Appendix C of the "Getting Started with the Raspberry Pi Pico" C/C++ guide (here)
- Clone this repository.
- Run the getsubmod.sh script to initialise Synth_Dexed.
- Apply the patches to Synth_Dexed that can be found in synth_dexed.
- Run the getvoices.sh script to get and initialise the ROM voices.
- Set the PICO_SDK_PATH variable to point to your Pico SDK installation.
- Go to the build directory and run
cmake ..followed bymake.
There are some pre-built prototype UF2 files in the build area which can be dragged directly onto a Pico in boot mode.
Hardware requirements:
- Raspberry Pi Pico
- I2S DAC. Has been tested with a PCM5102 and the Pimoroni Pico Audio Pack
- Optional: MIDI IN (more here)
- Optional: SSD1306 128x32 I2C OLED display.
- Optional: Rotary encoder (e.g. KY-040 module).
It might work with other I2S audio interfaces too if the GPIO usage is updated appropriately.
There is a build that uses PWM too, but it is not recommended. It is only 8-note polyphonic and requires additional filter circuitry as described here.
Note: The Raspberry Pi Pico is overclocked to 250MHz.
- 16-note polyphony at a sample rate of 24000Hz.
- USB and Serial MIDI support.
- 8 banks of 32 voices (rom1a, rom1b, rom2a, rom2b, rom3a, rom3b, rom4a, rom4b) selectable over MIDI.
- Voice parameter changes via SysEx - e.g. using Dexed.
- Range of controllers as supported by Synth_Dexed.
- I2S audio output (recommended); PWM audio output(optional).
- SSD1306 I2C display support.
- Rotary Encoder support.
- Details of the hardware build can be found here: https://diyelectromusic.wordpress.com/2024/02/18/raspberry-pi-pico-synth_dexed-part-5/
- Details of the MIDI implementation can be found here: https://diyelectromusic.wordpress.com/2024/02/16/raspberry-pi-pico-synth_dexed-part-4/
- More details of the latest changes, the core architecture and UI support can be found here: https://diyelectromusic.com/2025/04/12/raspberry-pi-pico-synth_dexed-revisited/
This is just an information store for my personal playing around with this at the moment. As such I'm not accepting contributions at this time.
There is no implied fitness for purpose or guarantee of usefulness or success. Everything is experimental and subject to change without notice, but published freely here for general interest for anyone who would like to follow along for the ride.
Builds on knowledge, work and code from the following:
- Synth_Dexed library by Holger Wirtz.
- MiniDexed initial port and code by Rene Stange and Holger Wirtz based on an idea by probonopd as discussed here: rsta2/circle#274.
- Earle Philhower’s Raspberry Pi Pico Arduino core for all RP2040 boards.
- Chris Hockuba’s Raspberry Pi Pico version of CMSIS 5
- Francois Best's Arduino MIDI Library
- David Schramm's Pico SSD1306 code
- GitJer's Pico Rotary Encoder code
As well as exmaples from the Raspberry Pi C/C++ SDK and the Piromoni C/C++ examples for their Pico Audio Pack.
There is no permission, direct or implied, for the contents of this repository to be used for the training of AI systems.