

0x10pb
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
274LVC1G07
SOT-353-40℃~+105℃ 1 1 1.65V~5.5V 1.6ns@5.5V,50pF 24mA 4uA 74LVC Open-drain Power-off isolation、Level shifting Unidirectional SOT-353 Buffers, Drivers, Receivers, Transceivers ROHSWuxi I-core ElecBuffers, Drivers, Receivers, TransceiversCD74HC4067M
SOIC-24-300mil-55℃~+125℃ 16 160Ω 16:1 22ns 2V~6V 345ns 365ns 89MHz Bidirectional analog channel、Glitch-free switching SOIC-24-300mil Analog Switches, Multiplexers ROHSTexas InstrumentsAnalog Switches, Multiplexers
README
README.md0x10pb
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
- 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.
- 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):
- Earle F. Philhower, III's Raspberry Pi Pico Arduino core
- Forty Seven Effects' Arduino MIDI library
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | R_Potentiometer | Potentiometer_THT:Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_CircularHoles | RV1, RV2, RV3, RV4, RV5, RV6, RV7, RV8, RV9, RV10, RV11, RV12, RV13, RV14, RV15, RV16 |
| 2 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C2 |
| 2 | 68R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4, R5 |
| 2 | LED | LED_THT:LED_D3.0mm | D1, D2 |
| 1 | 10R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3 |
| 1 | 30R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1 |
| 1 | 74LVC1G07 | Package_TO_SOT_SMD:SOT-23-5_HandSoldering | U2 |
| 1 | Adafruit_Feather_Generic | Module:Adafruit_Feather | A1 |
| 1 | AudioJack3 | Connector_Audio:Jack_3.5mm_CUI_SJ1-3523N_Horizontal | J3 |
| 1 | CD74HC4067M | Package_SO:SOIC-24W_7.5x15.4mm_P1.27mm | U1 |
| 1 | Conn_02x05_Top_Bottom | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J2 |
| 1 | SW_Push | Button_Switch_THT:SW_TH_Tactile_Omron_B3F-10xx | SW2 |
| 1 | SW_SPST | PCM_4ms_Switch:Switch_Toggle_SPST_SubMini | SW1 |
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 mm

- 6 layers121 × 83 mm

- 4 layers85 × 85 mm

- 4 layers120 × 120 mm

Yellow
NabuCasa/yellow
Home Assistant Yellow - hardware for Home Assistant which grows with your needs.
322 parts116 - 4 layers38 × 38 mm

- 4 layers72.6 × 170 mm

OpenJBOD RP2040
OpenJBOD/rp2040
This repository contains the hardware design files OpenJBOD RP2040 Baseboard.
129 parts87CERN-OHL-P-2.0 - 4 layers66 × 90 mm

- 2 layers142.1 × 106 mm
