AnotherJohnH / picoX7

Software simulation of the Yamaha DX7 with a MIDI interface for the Raspberry Pi Pico
MIT License
13 stars 1 forks source link
dx7 midi raspberry-pi-pico synthesizer

picoX7

picox7

A software simulation of the Yamaha DX7 with a MIDI interface for the Raspberry Pi Pico

Slightly boring video of the picoX7 playing the Yamaha DX7 ROM cartrdige 1A patches...

picoX7 rom1A

Software dependencies

Both Pico and native targets should build on MacOS or Linux.

Hardware information

prototype

For more information on the circuit above see the schematic and the hardware blog

Pin Peripheral Allocation
1 UART-0 Debug console out (UART) TX
2 UART-0 Debug console in (UART) RX
3 GND UART GND
6 UART-1 MIDI IN
29 PIO I2S DATA
31 PIO MCLK (for I2S DAC chip)
32 PIO I2S LR CLK
34 PIO I2S DATA CLK

Alternative hardware targets

Software builds for the following hardware targets...

NOTE: The LCD and LED displays are optional and will not block operation if not fitted

Components

Name Description Source
Raspberry Pi Pico DIP module hosting an RP2040 MCU and 2 MiB Flash PiHut
Waveshare Pico Audio I2S DAC module that directly mounts under the Pico PiHut
MIDI controller Music keyboard with actual MIDI out (not MIDI over USB) Old Roland PC-200 works for me
MIDI-in adapter An optically isolated 5-pin DIN to UART interface 3 resistors, a diode and an op-amp work well if the controller is battery powered ;-)
Reset button Reset the Pico and allow Flashing Why not included on the Pico module ?!@#
Raspberry Pi Debug probe Not essential but very helpful PiHut

NOTE No particular affiliation with PiHut but they have a nice selection and good service

Status

Incomplete but starting to work.

Done...

To do, (at least)...

Limitations...

See the software blog and hardware blog for more detailed progress updates.

How to build

Checkout

This repo uses git sub-modules, so checkout using --recurse to clone all the dependent source...

git clone --recurse https://github.com/AnotherJohnH/picoX7.git

or

git clone --recurse ssh://git@github.com/AnotherJohnH/picoX7.git

Build

Being developed on MacOS but should build fine on Linux too.

Indirect build of all supported targets (with cmake and ninja)...

make

Build directly using cmake...

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPLT_TARGET=rpipico -DCMAKE_TOOLCHAIN_FILE=Platform/MTL/rpipico/toolchain.cmake ..
make

Flashable image will be found under the build sub directory here...

.../Source/picoX7_WAVESHARE_GPIO_LCD.uf2
.../Source/picoX7_WAVESHARE_I2C_LCD.uf2
.../Source/picoX7_PIMORONI_VGA_DEMO.uf2

License

This project is licensed under the MIT License - see the LICENSE file for details

Acknowledgements