Skip to the content
PCBKitNew board
2 layers130 × 120 mmHEXAD, the printed circuit board in 3D

A 12 pad USB MIDI controller with 6 rotary encoders and a TFT screen!

Size
130 × 120 mm
Copper layers
2
Thickness
1.6 mm
Parts
48
Nets
73
Pads
280
Tracks, vias
668, 115
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Oct 2026
Updated
24 Oct 2026

Overview

HEXAD is an open-source printed circuit board by sudo-apt-install-tap, from the sudo-apt-install-tap/HEXAD repository on GitHub. It is a 2-layer board of 130 × 120 mm with 48 parts on 73 nets, routed with 668 tracks and 115 vias.

Its parts include 18 switches, 12 diodes, 8 resistors, 2 capacitors and 2 connectors. It belongs with the RP2040 boards of this library.

README

README.md
HexAD

HexAD

A 12 pad USB MIDI controller with 6 rotary encoders and a TFT screen!

Overview

A USB MIDI controller built around a Raspberry Pi Pico (RP2040) with:

  • 12 Cherry MX style pads in a 4x3 diode matrix, sending MIDI notes
  • 6 EC11 rotary encoders with push buttons, sending MIDI CC messages
  • 1.8" 128x160 TFT display that shows which pads are held, the encoder levels and the last MIDI message
  • MCP23017 I2C expander that reads the encoder A/B lines, because the Pico ran out of GPIOs
  • Class compliant USB MIDI, so there are no drivers to install
  • No Case required, absolutely no 3d print needed!

Why?

I wanted a proper MIDI controller with real pads, real knobs and a screen that tells me what is going on, instead of guessing which knob does what. It also gave me a reason to design a board with a GPIO expander for the first time.

also because KNOBS.

How?

The firmware is in firmware. It is written with the Arduino-Pico core and TinyUSB MIDI. Core 0 scans the pads, the encoders and sends the MIDI. Core 1 only draws the display, so a screen refresh never makes the knobs lag.

The pads are plain switches, so they send a fixed velocity of 100.

MIDI map
ControlMessageNotes
Pads (bottom row, left to right)Note 36 to 39Channel 1
Pads (middle row)Note 40 to 43Channel 1
Pads (top row)Note 44 to 47Channel 1
Encoders 1 to 6CC 20 to 25Absolute value, starts at 64, steps of 2
Encoder buttons 1 to 6CC 30 to 35127 when pressed, 0 when released
Pin map
FunctionPins
Pad matrix columnsGPIO0 to GPIO3
Pad matrix rowsGPIO4 to GPIO6
Encoder buttonsGPIO7, 10, 11, 12, 16, 17
I2C (MCP23017 at 0x27)SDA GPIO8, SCL GPIO9
TFT (SPI0)SCK GPIO18, MOSI GPIO19, CS GPIO14, DC GPIO13, RST GPIO15

The MCP23017 runs on 3.3V with 4.7k pull-ups on SDA and SCL. Its address pins are pulled high with solder jumpers to ground, so you can change the I2C address without touching the firmware wiring. The spare GPB4 to GPB7 pins are broken out on a 4 pin header.

CAD

CAD files are available at /CAD.

Images

image image


Full render


image


PCB


image


Sch


image
3D Viewer

Parts

48
QtyValueFootprintReferences
12DDiode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12
12SW_PushKEYS:SW_Cherry_MX_PCB_1.00uSW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12
610kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR1, R2, R3, R4, R5, R6
6RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHolesSW13, SW14, SW15, SW16, SW17, SW18
3SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1, JP2, JP3
24.7kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_HorizontalR7, R8
1100nfCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC2
110ufCapacitor_THT:CP_Radial_D5.0mm_P2.00mmC1
1Conn_01x04_SocketConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Conn_01x08_PinJLCImport:1_8INCH_LCD_MODULEJ1
1LOGOLOGOG***
1MCP23017x-x-SOPackage_SO:SOIC-28W_7.5x17.9mm_P1.27mmU1
1RaspberryPi_PicoModule:RaspberryPi_Pico_Common_UnspecifiedA1

Questions

How big is the HEXAD PCB?

It measures 130 × 120 mm and has 2 copper layers, 1.6 mm thick.

What parts does the HEXAD use?

48 parts. 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 HEXAD KiCad files?

From the sudo-apt-install-tap/HEXAD repository on GitHub, at the commit this page was made from: the board is PCB/PCB.kicad_pcb and its schematic PCB/PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the HEXAD design in my own project?

Its repository states no licence, so its author keeps all rights: ask sudo-apt-install-tap before reusing the design.

Similar boards

  • 2 layersDemo, the printed circuit board in 3D

    Demo

    adamws/kicad-kbplacer

    KiCad plugin for automatic keyboard's key placement and routing

    48 parts547GPL-3.0
  • 2 layers18.8 × 18.1 mmAmoeba royale, the printed circuit board in 3D

    Amoeba royale

    mtl/keyboard-pcbs

    Keyboard PCBs

    48 parts485
  • 2 layers48.1 × 115.6 mmAPU ENG CRANK PANEL, the printed circuit board in 3D

    APU ENG CRANK PANEL

    jrsteensen/OpenHornet

    OpenHornet 1:1 F/A-18C Simulator Repository

    48 parts431
  • 2 layers106 × 55 mmEndcap, the printed circuit board in 3D

    Endcap

    softerhardware/Hermes-Lite2

    A second generation low-cost amateur HF software defined radio transceiver.

    48 parts384
  • 2 layers42.8 × 88 mm18650 pcb, the printed circuit board in 3D

    18650 pcb

    CRImier/MyKiCad

    My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

    48 parts253GPL-3.0
  • 2 layers34 × 44 mmClk lo buffer, the printed circuit board in 3D

    Clk lo buffer

    loxodes/vna

    Under development open hardware microwave vector network analyzer

    48 parts205
  • 2 layers70.6 × 189.2 mmNano, the printed circuit board in 3D

    Nano

    fellesverkstedet/fabricatable-machines

    Motion systems for flexible digital fabrication and research. Easy to fabricate and customize. Documentation: https://github.com/fellesverkstedet/fabricatable-machines/wiki

    48 parts175