Skip to the content
PCBKitNew board
2 layers13 × 1.4 mmPicoX7, the printed circuit board in 3D

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

Size
13 × 1.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
31
Nets
99
Pads
222
Tracks, vias
0, 0
Routed
Not yet
KiCad
KiCad 7 (file 20221018)
Created
26 Jun 2023
Updated
6 Oct 2026

Overview

PicoX7 is an open-source printed circuit board by SloeComputers, from the SloeComputers/picoX7 repository on GitHub, published under the MIT licence. It is a 2-layer board of 13 × 1.4 mm with 31 parts on 99 nets.

It is built around the 74HCT374D and H11L1. Its parts include 18 resistors, 7 ICs, 3 connectors, 1 diode and 1 switch. It belongs with the audio and music and interfaces and adapters boards and the RP2040 boards of this library.

Main components

2

README

README.md

picoX7

picox7

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

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

picoX7 rom1A

Status

Build Status

Done...

  • I2S (via PIO) 16-bit stereo DAC interface at 49096 Hz
  • Use of the 2nd Arm Cortex-M, 8 voices per core
  • MIDI in support via UART and USB (including SYSEX in)
  • YM21280 OPS simulation (logarithmic)
  • YM21290 EGS simulation
  • Firmware simulation including pitch envelope, LFO, key sensitivity, level scaling, amplitude modulation
  • DX7 voice patches sounding close

To do...

  • Tune EGS simulation
  • Rate scaling
  • Portamento and glissando

Limitations...

  • DAC implementation is quite different to the original. Dynamic range might be reduced?
  • Hitachi 6303 (~MC6803) CPU controller and firmware are not being emulated or fully simulated
  • 8 voices are on the left channel and 8 on the right ... stereo output needs to mixed to mono externally

Deviations/enhancements compared to a real DX7...

  • Each voice has it's own LFO
  • Each voice has it's own patch state (in theory when supported could load a different patch into each voice)
  • Support for 128 voice patches (DX7 had 32 internal and 32 cartridge)

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

Hardware

prototype

Schematic for the above.

For more information see README and the hardware blog

The Pico is significantly overclocked to 191.08 MHz to support 16 voices and generate a jitter free sample rate of 49096 Hz.

RP2350 Picos as well as the older RP2040 Picos are supported.

Software

Checkout

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

text
git clone --recurse https://github.com/SloeComputers/picoX7.git

or

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

Software dependencies

Build

Being developed on MacOS but should build on Linux too.

Indirect build of all supported targets, rpipico, rpipico2 and native with cmake and make (or ninja)...

text
make

Build a single hardware target e.g. rpipico2 using cmake...

text
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=PDK/TGT/rp2350/toolchain.cmake
make

flashable images will be found under the build sub-directory here...

text
build/<target>/picoX7_RPIPIOC_I2S_DAC.uf2
build/<target>/picoX7_RPIPIOC_PWM_DAC.uf2
build/<target>/picoX7_RPIPIOC_PIMORONI_PICO_AUDIO.uf2
build/<target>/picoX7_RPIPIOC_WAVESHARE_REV2_1.uf2
build/<target>/picoX7_PIMORONI_VGA_DEMO.uf2

Build the native target...

text
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DPDK_TARGET=native
make

a runable binary image will be found under the build subdirectory here...

text
build/Source/picoX7_NATIVE
Building as a VST3 plugin

Download and unpack VST SDK. e.g. vst-sdk_3.8.0_build-66_2025-10-20.zip

The environment variable VST_SDK needs to be made available and point at an install of the VST3 SDK source.

Indirect build with cmake and make (or ninja)...

text
make vst3

Build the native target...

text
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DPDK_TARGET=vst3
make

The built .vst3 bundle will be under the CMake build output directory.

License

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

Acknowledgements

  • Ken Shirriff for his very helpful series of blogs reverse engineering the YM21280
  • AJXS for their annotated disassembly of the DX7 firmware ROM
  • The Dexed developers for providing an easily accessible DX7 audio reference
  • The raspberry-pi foundation for the innovative RP2040
  • The engineers at Yamaha

Parts

31
QtyValueFootprintReferences
16330Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18
274HCT374Package_DIP:DIP-20_W7.62mm_LongPadsU4, U5
2D1X8K-14BLDisplay_7Segment:D1X8KU6, U7
2DebugConnector:FanPinHeader_1x03_P2.54mm_VerticalJ2, J4
11KResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR2
11N4001Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1
1220Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1
1H11L1Package_DIP:DIP-6_W7.62mm_LongPadsU3
1HY1602EDisplay:HY1602EDS1
1I2S DACPackage_DIP:DIP-40_W25.4mm_Socket_LongPadsU2
1MCU arm Cortex-M0x2Package_DIP:DIP-40_W25.4mm_Socket_LongPadsU1
1RSTButton_Switch_THT:SW_PUSH_6mm_H5mmSW1
1Stereo line outConnector_Audio:Jack_3.5mm_CUI_SJ1-3523N_HorizontalJ3

Questions

How big is the PicoX7 PCB?

It measures 13 × 1.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PicoX7 use?

31 parts, built around the 74HCT374D and H11L1. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PicoX7 KiCad files?

From the SloeComputers/picoX7 repository on GitHub, at the commit this page was made from: the board is docs/Schematics/picoX7.kicad_pcb and its schematic docs/Schematics/WAVESHARE_REV2_1/picoX7_WAVESHARE_REV2_1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PicoX7 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers292.1 × 88.3 mmSnark barker mca, the printed circuit board in 3D

    Snark barker mca

    schlae/snark-barker-mca

    A Sound Blaster compatible sound card for Micro Channel bus computers

    177 parts69
  • 2 layers225.4 × 69.3 mmLt option clone, the printed circuit board in 3D

    Lt option clone

    polpo/imagescribbler

    A Clone of Apple's ImageWriter II/LQ LocalTalk Option card

    49 parts14CC0-1.0
  • 4 layers132.3 × 214.1 mmUtracer11.unrouted, the printed circuit board in 3D

    Utracer11.unrouted

    j-hoppe/uTracer11

    flipchip probe and host GUI to visualize intenral operation of PDP-11 CPU

    129 parts2BSD-3-Clause
  • 4 layers218.4 × 114 mmVideo v2.0, the printed circuit board in 3D

    Video v2.0

    ksr/YACC1-D

    YACC1 (Yet Another Custom CPU) - definitive tree: hardware, firmware, software, tools and docs for the hand-built TTL computer. Supersedes ksr/YACC1-2020.

    121 parts
  • 2 layers73.2 × 61.6 mmZX Diagnostic 2021, the printed circuit board in 3D

    ZX Diagnostic 2021

    tebl/ZX-Interface-2.021

    An old-school remake of the ZX Interface 2 with some modern tweaks - mainly by integrating bank switching into the interface itself.

    30 parts32
  • 2 layers110.2 × 75.2 mmSpeech synthesizer, the printed circuit board in 3D

    Speech synthesizer

    michaelkamprath/minimal-64x4-expansion-cards

    A set of expansion boards for the Minimal 64x4 Home Computer

    31 parts19
  • 2 layers235 × 160 mmProcessor.Z80, the printed circuit board in 3D

    Processor.Z80

    lynchaj/duodyne

    Duodyne is a hobbyist retrocomputer system designed to run ROMWBW. It is comprised of modules on a system bus

    136 parts15
  • 2 layers100 × 100 mmPi Board, the printed circuit board in 3D

    Pi Board

    ab0tj/MiniSys

    Homebrew computer with an ISA-like bus

    47 parts7