Skip to the content
PCBKitNew board
2 layers200 × 75 mm0x10pb, the printed circuit board in 3D

MIDI controller with 16 pots x 4 banks, USB-C, TRS and battery powering option

Size
200 × 75 mm
Copper layers
2
Thickness
1.6 mm
Parts
32
Nets
50
Pads
179
Tracks, vias
441, 25
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
29 Mar 2024
Updated
26 Apr 2024

Overview

0x10pb is an open-source printed circuit board by vaeinoe, from the vaeinoe/0x10pb repository on GitHub, published under the MIT licence. It is a 2-layer board of 200 × 75 mm with 32 parts on 50 nets, routed with 441 tracks and 25 vias.

It is built around the 74LVC1G07 and CD74HC4067M. Its parts include 5 resistors, 2 capacitors, 2 ICs, 2 diodes and 2 connectors. It belongs with the audio and music and power boards and the RP2040 boards of this library.

Main components

2

README

README.md

0x10pb

0x10pb

What?

Yet another MIDI CC controller in 200x75mm footprint. 16 potentiometers x 4 banks. USB-C for flashing and MIDI device communication, hardware TRS MIDI type A output. Option for battery power.

MIDI CCs, channels and scaling per knob for all the four banks are programmable in the firmware (not on the fly via SysEx, at least not yet). Sends identical messages via both USB and TRS.

Why?

There are many small DIY MIDI controllers more refined than this one, but I wanted something to use with battery-powered portable electronic instruments like the Dirtywave M8 and Teenage Engineering OP-1 Field, and

  1. I couldn't find anything that was battery powered and with both USB and hardware serial MIDI output. It's kind of a letdown to have a portable instrument with an internal battery and then have to carry around a power bank just for an auxiliary controller. Especially as most of these instruments don't act as USB hosts so you can't even power controllers directly from them.
  2. Most of the simple controllers are missing any kind of bank / page system. Quite often you want to control more than 16 parameters without remapping, but don't need to control them all at the same time.

Then a friend wanted one like this too for similar reasons, so I had to actually design one.

How?

There's not much to it. A custom carrier board with a power switch, a bank button, two LEDs that indicate which bank is active (00, 01, 10, 11), TRS MIDI port and associated circuitry, and 16 pots read via a single multiplexer.

Adafruit Feather RP2040 is used as the brain. Mainly because it conveniently has both a USB-C port and battery power / charging circuit built in.

Hardware

First you'll need to get a carrier PCB. KiCad project and Gerbers are included for ordering your own. Once you have that, here's a list of parts you'll need to populate the board:

  • Adafruit Feather RP2040 plus suitable headers (eg. Adafruit slim ones): PCB will likely work with almost any Feather but you may need to modify pin mapping and use a different core lib
  • Optional: 3.7V LiPoly battery with Feather compatible (JST-PH) connector - I use a tiny 500mA one
  • U1: CD74HC4067M (SOIC)
  • U2: 74LVC1G07 (SOT-23-5 / SOT-25)
  • D1-D2: 3mm LED (Whichever you want, I used low power green ones)
  • J3: CUI SJ1-3523N TRS jack
  • C1-C2: 100nF 0603 capacitors
  • R1: 30R 0603 resistor
  • R2: 10R 0603 resistor
  • R3: 10k 0603 resistor
  • R4-R5: 0603 LED series resistors - calculate for your LEDs and 3.3V supply voltage, I used 330R
  • SW1: SPST Subminiature switch (5mm leg spacing)
  • SW2: Omron B3F-10xx series tactile switch + cap
  • RV1-RV16: 10k standard 9mm footprint potentiometers, eg. Alpha 9mm, plus relatively slim knobs such as Davies 1900h clones

If you can (hand) solder SOIC and 0603, populating the board is going to be fast and straightforward. Just mind the build order - SMT components first, and if you don't use removable headers for the Feather you might want to solder the pots before that so the Feather won't get in the way. Oh, and mind the SPST power switch polarity if you actually want "power off" to be on the left and "power on" on the right...

The repository includes a simple "sandwich" type panel design. If you use that, you'll also need some M3 spacers and screws. The exact height will depend on eg. how you mount the Feather. Try eg. 6x 10-12mm male-female ones for the front side (just attaching the panel using pots and power switch is OK too), 6x 17-18mm female-female ones for the back, plus 12x short screws to put it together.

If you use removable header stack for the Feather, you may also want to secure the board in place with a short M2.5 spacer / screw and nut. Otherwise it may slip off during weeks / months / years of use.

For keeping the battery in place, use something like 3M Dual Lock or generic velcro to attach it to the bottom of the PCB or bottom panel. That way you can actually remove and replace the battery if you need to, but it won't move around.

Firmware + bank mappings

Firmware can be edited and flashed with Arduino IDE. You'll also need to install these libraries (see instructions in respective repositories):

After you have the IDE and the libraries installed, open the included Arduino sketch. In Tools menu, select "Adafruit Feather RP2040" as the board and "Adafruit TinyUSB" as the USB stack. Other options can be left as is. Then attach the USB-C cable to the Feather and turn power on. You should now be able to upload the sketch to the Feather via USB.

If the device isn't automatically recognized and you get an upload error, you may have to keep the "bootsel" button (in the back end of the board) pressed, quickly press "reset" towards the front of the board and finally release "bootsel" to get the board to bootloader mode. Then try uploading again.

The sketch also includes the hardcoded MIDI CC mappings for all the four banks. For now, whenever you want to edit the mappings, edit the source file according to instructions in the comments, then upload a new version to the Feather.

Parts

32
QtyValueFootprintReferences
16R_PotentiometerPotentiometer_THT:Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_CircularHolesRV1, RV2, RV3, RV4, RV5, RV6, RV7, RV8, RV9, RV10, RV11, RV12, RV13, RV14, RV15, RV16
2100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C2
268RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5
2LEDLED_THT:LED_D3.0mmD1, D2
110RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2
110kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3
130RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
174LVC1G07Package_TO_SOT_SMD:SOT-23-5_HandSolderingU2
1Adafruit_Feather_GenericModule:Adafruit_FeatherA1
1AudioJack3Connector_Audio:Jack_3.5mm_CUI_SJ1-3523N_HorizontalJ3
1CD74HC4067MPackage_SO:SOIC-24W_7.5x15.4mm_P1.27mmU1
1Conn_02x05_Top_BottomConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ2
1SW_PushButton_Switch_THT:SW_TH_Tactile_Omron_B3F-10xxSW2
1SW_SPSTPCM_4ms_Switch:Switch_Toggle_SPST_SubMiniSW1

Questions

How big is the 0x10pb PCB?

It measures 200 × 75 mm and has 2 copper layers, 1.6 mm thick.

What parts does the 0x10pb use?

32 parts, built around the 74LVC1G07 and CD74HC4067M. 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 0x10pb KiCad files?

From the vaeinoe/0x10pb repository on GitHub, at the commit this page was made from: the board is kicad/0x10pb.kicad_pcb and its schematic kicad/0x10pb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the 0x10pb 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 layers51.4 × 61 mmGB LIVE32, the printed circuit board in 3D

    GB LIVE32

    Gekkio/gb-hardware

    Game Boy -related custom hardware by gekkio

    61 parts379CC-BY-4.0
  • 6 layers121 × 83 mmPS2 79004 Rev 0 4, the printed circuit board in 3D

    PS2 79004 Rev 0 4

    tschicki/PS2-Portable

    A custom designed PS2 Portable

    770 parts207MIT
  • 4 layers85 × 85 mmEPS, the printed circuit board in 3D

    EPS

    rgw3d/1KCubeSat_Hardware

    Hardware design files for my $1000 CubeSat.

    657 parts158GPL-3.0
  • 4 layers120 × 120 mmYellow, the printed circuit board in 3D

    Yellow

    NabuCasa/yellow

    Home Assistant Yellow - hardware for Home Assistant which grows with your needs.

    322 parts116
  • 4 layers38 × 38 mmAgnus, the printed circuit board in 3D

    Agnus

    jbilander/ReAgnus

    A drop-in replacement PCB for the Amiga Agnus chip

    38 parts97CC-BY-SA-4.0
  • 4 layers72.6 × 170 mmOpenJBOD RP2040, the printed circuit board in 3D

    OpenJBOD RP2040

    OpenJBOD/rp2040

    This repository contains the hardware design files OpenJBOD RP2040 Baseboard.

    129 parts87CERN-OHL-P-2.0
  • 4 layers66 × 90 mmIctester, the printed circuit board in 3D

    Ictester

    jakubfi/ictester

    Logic IC tester

    104 parts79
  • 2 layers142.1 × 106 mmPi CM4 16, the printed circuit board in 3D

    Pi CM4 16

    computergeek1507/PB_16

    Open source FPP PB16 Pixel Controller

    118 parts78