Skip to the content
2 layers155 × 288 mmMC8P Midi Controller, the printed circuit board in 3D

MC8P Midi Controller

joebmz98/MC8P-Midi-Controller8

8 Potentiometer Standalone MIDI Controller based on the Teensy 4.0.

Size
155 × 288 mm
Copper layers
2
Thickness
1.6 mm
Parts
61
Nets
44
Pads
181
Tracks, vias
267, 0
Pours
3
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Jul 2025
Updated
16 Oct 2026

Overview

MC8P Midi Controller is an open-source printed circuit board by joebmz98, from the joebmz98/MC8P-Midi-Controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 155 × 288 mm with 61 parts on 44 nets, routed with 267 tracks and 0 vias.

Its parts include 12 capacitors, 6 resistors, 4 switches, 2 connectors and 1 IC. It belongs with the audio and music boards and the NXP (LPC, Kinetis, i.MX RT) boards of this library.

README

README.md

MC8P Standalone MIDI Controller


8-Pot Standalone MIDI Controller (Teensy 4.0)

A customizable, open-source MIDI controller with 8 potentiometers, each supporting Up to 10 assignable MIDI CCs per Potentiometer, built around the Teensy 4.0 for high-performance MIDI control.

Photo of the assembled MC8P MIDI Controller

Introducing the MC8P Video

Watch the introduction video

Features

  • 8x B100K Pots with smooth analog control
  • Teensy 4.0 for fast, reliable MIDI
  • SSD1306 I2C OLED (128x64) for the UI
  • Per-Pot CC Assignment – Each pot can send 10 different MIDI CCs
  • 3.5mm MIDI TRS Out (PJ307 socket for Type A MIDI)
  • 4x Kailh Switches for UI navigation/configuration
  • Standalone Operation – No computer needed after setup
  • Open-Source Firmware (Arduino IDE-compatible)

Bill of Materials (BOM)

ComponentQtyNotesLinks
Teensy 4.01Main microcontrollerThe Pi Hut (UK)
SSD1306 OLED (128×64)1I²C interfaceAliExpress
B100K Vertical Potentiometer8Linear taperExample
3.5mm Stereo Socket (PJ307)1MIDI TRS Type AExample
Kailh Switches4For menu navigation—
Kailh Switch Caps4For Kailh switchesAliExpress
Potentiometer Knobs8For B100K potentiometersAliExpress
DC-005 Barrel Jack Socket15V DC power inputAliExpress
10nF Ceramic Capacitors8Potentiometer filtering—
10k Resistors4Pull-down for buttons—
220Ω Resistors2For MIDI Circuitry—
100nF Ceramic Capacitor1Power rail stabilisation—
10uF Ceramic Capacitor1Power rail stabilisation—
10uF Electrolytic Capacitor15V input stability—
100uF Electrolytic Capacitor1Power rail stabilisation—

Available Purchase Options

PCB Only – For custom builds → Purchase from my Tindie store


Installation & Setup

1. Flashing the Firmware

  • Install Arduino IDE + Teensyduino and other dependencies referenced in the Building from Source section
  • Clone this repo and open the .ino file in the Arduino IDE
  • Select Teensy 4.0 in Arduino IDE
  • Upload the firmware

2. Hardware Assembly

  • Refer to the Build Guide

3. First Boot

  • Power via USB on the Teensy or via DC-005 input jack
  • Use the OLED menu to assign CCs

Configuration

Button Functions

ButtonPrimary Function
ASSIGNNavigate backward, cancel actions, return to previous screens
ENTERConfirm selections, activate temporary override mode
PREVMove up or decrease values
NEXTMove down or increase values

Screen Hierarchy

The interface is organized into several screens accessible from the main display:

MAIN SCREEN → MENU → SETTINGS → various configuration screens

Main Screen

This is your default operating view. The screen displays eight circular indicators, one for each potentiometer, showing current MIDI values (0-127). Each circle fills proportionally to the value being sent.

From the main screen:

  • Press ASSIGN to open the menu
  • Press and hold ENTER to activate temporary override mode (the display inverts as visual feedback)

Temporary Override Mode

When you press and hold ENTER on the main screen, the controller enters temporary override mode. In this mode, all potentiometer adjustments are temporary. When you release ENTER, the controller returns to the stored values and activates catch up mode, where potentiometers must pass through their stored positions before taking control again.

Menu Screen

Press ASSIGN from the main screen to reach the menu. Use PREV and NEXT to scroll through options:

  • CC assign – Configure MIDI messages for each potentiometer
  • Settings – Access device configuration

Press ENTER to select an option, or press ASSIGN to return to the main screen.

Assign Screen (CC Assign)

This screen lets you configure up to 10 MIDI messages per potentiometer.

Navigation flow:

  1. Select which potentiometer to edit (flashing number)
  2. Select which message slot to edit, or choose Add/Remove
  3. Edit individual parameters

Parameters you can edit for each message:

  • Channel – MIDI channel (1-16) or OMNI
  • CC – Control Change number (0-127)
  • Min Value – Minimum output value (0-127)
  • Max Value – Maximum output value (0-127)
  • Direction – Normal (0-127) or Inverted (127-0)

Editing values: When editing a parameter, use potentiometer 8 to smoothly adjust the value across its full range. The selected parameter flashes to indicate edit mode.

Navigation within Assign Screen:

  • PREV/NEXT – Navigate between pots, messages, or Add/Remove buttons
  • ENTER – Enter edit mode for a parameter, or cycle to the next parameter
  • ASSIGN – Return to pot selection, or save and exit (confirmation popup appears)

Add/Remove messages:

  • Navigate to "+ Add" to create a new message (up to 10 per pot)
  • Navigate to "- Remove" to delete the selected message (minimum 1 message per pot)

Settings Screen

From the menu, select Settings to access:

Assign Settings – Choose which potentiometer (1-8) to use for editing values in the Assign screen. Use PREV/NEXT to change the selection.

Display Settings – Toggle the display inversion between normal and inverted. Press ENTER to enter edit mode, then use PREV or NEXT to toggle between Yes and No. Press ENTER again to save, or ASSIGN to cancel.

About – View firmware version and device information.

Factory Reset – Restore all settings to default values. A confirmation screen prevents accidental resets.

Confirmation Popups

When saving changes or performing a factory reset, a popup screen appears asking for confirmation. Use PREV/NEXT to toggle between Y (Yes) and N (No), then press ENTER to confirm or ASSIGN to cancel.


MIDI Implementation

  • USB MIDI OR TRS MIDI Out (3.5mm Type A)
  • Up to 10 CC Messages per potentiometer - further expansion maybe soon!

Building from Source

  • Requires Arduino IDE + Teensyduino
  • Libraries:
    • Adafruit_SSD1306 (OLED)
    • Adafruit_GFX (Adafruit UI Design)
    • MIDI (MIDI)
    • ResponsiveAnalogRead (Potentiometer Smoothing)
    • Picopixel (Picopixel Font)

Owner's Manual: https://docs.google.com/document/d/1LK1hT5nvRXzgEnc-npS-HN6GpmSG35B1l2-KNDyIfV0/edit?usp=sharing


License

MIT License – Open-source for personal & commercial use


Support & Contributions

  • Issues: Open a GitHub ticket
  • Custom Requests: Start a thread in the discussions page or send me an E-mail! axs.instruments@gmail.com
  • Want to improve it? PRs welcome!
  • Special Thanks: This project is supported by PCBWay who have kindly provided the PCB stock available at the moment

Acknowledgments

PCBway very kindly offered to sponsor this project and have sent me some more stock for the shop. Thank you to PCBway for supporting this passion project of mine. Emily from the marketing department reached out to me when I first launched the product and store and very kindly offered to sponsor the project. Both working with them and using their services was really easy. All I needed to do was export my PCB gerber files, drag and drop them on the 'PCB Instant Quote' page and send it off for approval. I received my order a week later and was very happy with the quality of the PCBs. Thank you again PCBway for your support.

You can find their website here: https://www.pcbway.com/

Parts

61
QtyValueFootprintReferences
9, , , , , , , ,
8B100kDIYSynthMNL:Potentiometer_RV09_BigPadsRV1, RV2, RV3, RV4, RV5, RV6, RV7, RV8
8C_GenericCapacitor_THT:C_Axial_L3.8mm_D2.6mm_P7.50mm_HorizontalC1, C2, C3, C4, C5, C6, C7, C8
410k_0402PCM_4ms_Resistor:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4
3LOGOMC8P_BITMAP_FOOTPRINTS:MC8P_PXLART_SPACE_FMASK_45X40G***, G***, G***
2220RPCM_4ms_Resistor:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR5, R6
1100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC9
1100uFCapacitor_THT:CP_Radial_D4.0mm_P1.50mmC11
110uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC10
110uF_4x5.3_10VCapacitor_THT:CP_Radial_D4.0mm_P1.50mmC12
15VConnector_BarrelJack:BarrelJack_GCT_DCJ200-10-A_HorizontalJ2
1ASSIGNButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW1
1ENTERButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW2
1LOGOMC8P_BITMAP_FOOTPRINTS:MC8P_MANUAL_QR_SLKSCR_20X20G***
1LOGOAXS_LOGO_KICAD:AXS_LOGO_FMASK_43X43G***
1LOGOAXS_LOGO_KICAD:AXS_LOGO_FMASK_20X20G***
1LOGOpcbWayLogo:pcbWay_LOGO_FSILK_15mmG***
1MIDI OUTaudioConnectors_Edit:Jack_3.5mm_CUI_SJ1-3525N_Horizontal_editJ1
1NEXTButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW4
1PREVButton_Switch_Keyboard:SW_Cherry_MX_1.00u_PCBSW3
1Teensy4.0teensy:Teensy40U1
1~SSD1306_footprint:SSD1306_OLED_ModuleSSD1306

The 50 most common of 61 parts.

Similar boards

  • 2 layers390 × 78.2 mmMBO, the printed circuit board in 3D

    MBO

    shanteacontrols/OpenDeck

    A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.

    61 parts960Apache-2.0
  • 2 layersTUSS4470 shield, the printed circuit board in 3D

    TUSS4470 shield

    Neumi/open_echo

    Open Source echo sounder / depth sounder / SONAR for bathymetry and research. Arduino based and compatible.

    61 parts530
  • 2 layers45 × 45 mmAirCube, the printed circuit board in 3D

    AirCube

    StuckAtPrototype/AirCube

    Works standalone out of the box. Pairs with Home Assistant in minutes. Other platforms are supported through community-contributed extensions.

    61 parts379Apache-2.0
  • 2 layers135.9 × 89.5 mmLeft, the printed circuit board in 3D

    Left

    TeXitoi/keyseebee

    KeySeeBee is a split ergo keyboard. It is only 2 PCB (so the name) with (almost) only SMD components on it. It's only a keyboard, no LED, no display, nothing more than keys and USB.

    61 parts348MIT
  • 2 layers59.7 × 57.5 mmFunBox, the printed circuit board in 3D

    FunBox

    GuitarML/FunBox

    Stereo guitar pedal platform using Daisy Seed.

    61 parts289MIT
  • 2 layers35 × 38.4 mmHandgelenk, the printed circuit board in 3D

    Handgelenk

    Jeija/esp8266-smartwatch

    ESP8266 DIY WiFi Smartwatch with MPU-9250, RTC, OLED, FT232, ...

    61 parts233
  • 2 layers99.9 × 99.9 mmEasy z80, the printed circuit board in 3D

    Easy z80

    skiselev/easy_z80

    An easy to build Zilog Z80 based single board computer

    61 parts180GPL-3.0
  • 2 layers135.3 × 106.7 mmAdlib, the printed circuit board in 3D

    Adlib

    schlae/adlib

    Reproduction AdLib Sound Card, OPL2, Circa 1990

    61 parts168

Questions

How big is the MC8P Midi Controller PCB?

It measures 155 × 288 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MC8P Midi Controller use?

61 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 MC8P Midi Controller KiCad files?

From the joebmz98/MC8P-Midi-Controller repository on GitHub, at the commit this page was made from: the board is MC8P_MIDI_CONTROLLER_KiCad/MC8P_MIDI_CONTROLLER/MC8P_MIDI_CONTROLLER.kicad_pcb and its schematic MC8P_MIDI_CONTROLLER_KiCad/MC8P_MIDI_CONTROLLER/MC8P_MIDI_CONTROLLER-backups/MC8P_MIDI_CONTROLLER-2026-04-15_142720/MC8P_MIDI_CONTROLLER.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the MC8P Midi Controller 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).