Skip to the content
PCBKitNew board
2 layers46 × 39 mmMidiboard, the printed circuit board in 3D

A small MIDI interface board: opto-isolated MIDI IN, buffered MIDI OUT, optional hard THRU, a 3V3/5V slide switch, and on-board footprints for two right-angle DIN-5 jacks.

Size
46 × 39 mm
Copper layers
2
Thickness
1.6 mm
Parts
20
Nets
21
Pads
64
Tracks, vias
150, 3
Pours
4
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
20 Oct 2026
Updated
20 Oct 2026

Overview

Midiboard is an open-source printed circuit board by mlainez, from the mlainez/midiboard repository on GitHub, published under the CC-BY-SA-4.0 licence. It is a 2-layer board of 46 × 39 mm with 20 parts on 21 nets, routed with 150 tracks and 3 vias.

It is built around the 74LVC1G17Z, H11L1SM and CC0603KRX7R9BB104, with the 1N4148W among its other parts. Its parts include 7 resistors, 4 connectors, 2 capacitors, 2 ICs and 1 diode.

Main components

4

README

README.md

MIDI IN/OUT 3V3/5V

A small MIDI interface board: opto-isolated MIDI IN, buffered MIDI OUT, optional hard THRU, a 3V3/5V slide switch, and on-board footprints for two right-angle DIN-5 jacks.

top

Board: 46 x 39 mm, 2 layers, all SMD parts on top, 2x M3 mounting holes.

Ordering at JLCPCB

Everything to upload is in jlcpcb/:

FileWhere
midiboard-gerbers.zipPCB order: "Add gerber file"
midiboard-BOM.csvPCB Assembly step: BOM
midiboard-CPL.csvPCB Assembly step: CPL / pick & place
  1. Upload the gerber zip. Defaults are fine (2 layers, 1.6 mm, any colour/finish). For "Mark on PCB" choose Remove Mark (there is no order-number placeholder on the board).

  2. Enable PCB Assembly, Economic, Top side.

  3. Upload BOM and CPL. All 13 placed parts should match automatically:

    RefValuePackageLCSCType
    U1H11L1SM optocoupler (onsemi)SMD DIP-6C899473extended
    U274LVC1G17W5-7 Schmitt bufferSOT-23-5C151394extended
    D11N4148WSOD-123C81598basic
    SW1C&K JS202011JCQN DPDT slide switchSMDC221665extended
    R1, R4, R5220 R0603C22962basic
    R2470 R0603C23179basic
    R310 k0603C25804basic
    R633 R0805C17634basic
    R710 R0805C17415basic
    C1, C2100 nF X7R0603C14663basic
  4. In the placement preview, check the pin-1 dots: U1 pin 1 is top-left (towards R1/D1), U2 pin 1 is top-left (silkscreen triangle). The CPL already applies the KiCad-to-JLCPCB rotation offsets (-90 deg for SOT-23-5 and SMD DIP-6).

Hand-soldered (not in the JLCPCB BOM)

RefPartNote
J1, J2DIN-5 female, right angle, PCB mount: Legion/Haoyu DIN-504, LCSC C23689428Any CUI SDS-50J-footprint jack fits
J31x4 pin header 2.54 mmMCU side
J41x5 pin header 2.54 mmOnly if you use panel-mount jacks instead of J1/J2
JP11x2 pin header 2.54 mm + jumper capHARD THRU selector

The DIN jacks can also be added to the JLCPCB order as through-hole assembly if you prefer.

Pins

J3 - MCU (3.3 V or 5 V logic, set SW1 to match)

PinNameConnect to
1TXMCU UART TX (31250 baud)
2RXMCU UART RX
3GNDGND
4VCC3.3 V or 5 V supply, same as the MCU logic level

J4 - panel jacks: i4/i5 to MIDI IN pins 4/5, o5/o2/o4 to MIDI OUT pins 5/2/4. These are wired in parallel with the on-board J1/J2 footprints.

SW1 3V3 / 5V: slide towards the jacks (3V3) for a 3.3 V MCU, towards the headers (5V) for a 5 V MCU. It only sets the MIDI OUT drive; RX simply swings to VCC. A wrong setting is not harmful: 5 V on the 3V3 setting pushes ~15 mA into the receiver, 3.3 V on the 5V setting gives ~3 mA, which some receivers may not detect.

JP1 HARD THRU (2-pin header, open by default): fit a 2.54 mm jumper cap to echo MIDI IN straight to the OUT jack. When bridged, leave J3 TX unconnected.

Circuit notes

  • MIDI IN: 220 R + 1N4148W reverse protection into an H11L1 (rated 3-16 V), open-collector output pulled up to VCC by 470 R. Accepts 3.3 V and 5 V senders (current loop, ~5-8 mA). IN jack pin 2 is left unconnected and there is no ground copper on the IN side, so the input stays galvanically isolated as the MIDI spec requires.
  • MIDI OUT: 74LVC1G17 buffer (1.65-5.5 V). 5V position: 220 R from VCC to pin 4 and 220 R in series with pin 5 (MIDI 1.0). 3V3 position: SW1 adds 33 R and 10 R in parallel, giving 28.7 R and 9.6 R (CA-033 asks for 33 R / 10 R; 33 R is the nearest JLCPCB basic part, ~7 mA instead of ~6.7 mA). 10 k pull-up on TX keeps the output idle when TX is not driven.

Verification

build.sh runs all of these and stops on failure:

  • KiCad ERC on the schematic (0 errors).
  • scripts/check_netlist.py: the schematic netlist matches scripts/design.py.
  • KiCad DRC with schematic parity (0 unconnected, 0 parity issues, no clearance errors).
  • scripts/check_gerbers.py: rasterizes the copper gerbers, joins layers through the drill file's plated holes, and derives connectivity from copper alone, then compares it with design.py (opens, shorts and NC pads). Mutating the expected design makes it fail, so it does detect wiring errors.

Checked by hand against datasheets: H11L1 pinout and inverting output (onsemi), 74LVC1G17 SOT25 pinout (Diodes Inc), JS202011 contact positions (C&K: slider towards pin 1 closes 1-2 and 4-5), DIN-504 PCB layout (Legion and Haoyu drawings agree), and the JLCPCB/EasyEDA footprints of C899473, C151394, C81598 and C221665 for the CPL rotations and diode polarity.

midiboard.kicad_dru lets through-hole pads have a single thermal spoke per layer: they are plated through both ground pours, so the connection is solid either way.

Sources

KiCad project: midiboard.kicad_pro / .kicad_sch / .kicad_pcb, project footprint in lib/midiboard.pretty. jlcpcb/midiboard-schematic.pdf is a printable schematic.

Everything is generated from scripts/design.py (parts, LCSC numbers, nets):

text
FREEROUTING_JAR=/path/to/freerouting-2.1.0.jar ./build.sh

build.sh generates the schematic, runs ERC, checks the schematic netlist against design.py, places the board, autoroutes it with Freerouting (headless), adds the ground pours, runs DRC with schematic parity and writes the JLCPCB files, then checks the gerber copper. It needs KiCad 7 pcbnew Python, kiutils, numpy, scipy, pillow, gerbv, Java 21 and a KiCad >= 8 kicad-cli (defaults to the KiCad Flatpak).

License

Copyright (c) 2026 Marc Lainez. Licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0), see LICENSE.

Parts

20
QtyValueFootprintReferences
3220Resistor_SMD:R_0603_1608MetricR1, R4, R5
2100nFCapacitor_SMD:C_0603_1608MetricC1, C2
2M3MountingHole:MountingHole_3.2mm_M3H1, H2
110Resistor_SMD:R_0805_2012MetricR7
110kResistor_SMD:R_0603_1608MetricR3
11N4148WDiode_SMD:D_SOD-123D1
133Resistor_SMD:R_0805_2012MetricR6
13V3/5VButton_Switch_SMD:SW_DPDT_CK_JS202011JCQNSW1
1470Resistor_SMD:R_0603_1608MetricR2
174LVC1G17Package_TO_SOT_SMD:SOT-23-5U2
1H11L1SMPackage_DIP:SMDIP-6_W9.53mmU1
1HARD THRUConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP1
1JACKSConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ4
1MCUConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1MIDI INmidiboard:DIN-5_Female_Horizontal_DIN-504J1
1MIDI OUT/THRUmidiboard:DIN-5_Female_Horizontal_DIN-504J2

Questions

How big is the Midiboard PCB?

It measures 46 × 39 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Midiboard use?

20 parts, built around the 74LVC1G17Z, H11L1SM, CC0603KRX7R9BB104 and 1N4148W. 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 Midiboard KiCad files?

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

Can I use the Midiboard design in my own project?

Its repository publishes it under the CC-BY-SA-4.0 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

  • 2 layers100 × 100 mmMist1010, the printed circuit board in 3D

    Mist1010

    UzixLS/mist1010-board

    10x10cm PCB variant of MIST FPGA project for G738/G706 enclosure

    273 parts43MIT
  • 4 layers20 × 37.7 mmFm1-midi dongle., the printed circuit board in 3D

    Fm1-midi dongle.

    wero1414/fm1-midi-dongle.

    A small stick that plugs into the M-VAVE FM-1's USB-C port and gives it a TRS MIDI OUT and an isolated TRS MIDI IN.

    31 parts
  • 2 layers135.3 × 78.4 mmMseq, the printed circuit board in 3D

    Mseq

    MF-Room/mseq_pcb

    KiCad 10 hardware design for MSeq embedded, the microcontroller implementation of the MSeq MIDI sequencer.

    93 parts1CERN-OHL-S-2.0
  • 2 layers35.6 × 27.3 mmBeambreak, the printed circuit board in 3D

    Beambreak

    frc971/electrical

    This repo contains the electrical files for the 971 FRC team. The files include PCBs and the electrical system diagrams. The PCBs are created using KiCad.

    12 parts3Apache-2.0
  • 6 layers46.5 × 47.2 mmNAVCORE SoOP, the printed circuit board in 3D

    NAVCORE SoOP

    kfilipekk/iridium_drone

    STM32H743 flight controller that navigates without GPS from Iridium satellite Doppler

    217 parts2MIT
  • 2 layers159 × 102 mmClaude Micro, the printed circuit board in 3D

    Claude Micro

    Alexpoopy1/Claude-Micro

    A 13-key agent macropad on clear MX switches: six frosted status keys, seven command keys, a rotary reasoning dial, a planar joystick, a five-pad capacitive touch strip and a 19-LED RGB chain.

    95 parts1
  • 2 layers304.3 × 108.3 mmNyx, the printed circuit board in 3D

    Nyx

    HorrorTroll/Nyx

    65% layout PCB with compatible many UDB position

    316 parts1GPL-2.0
  • 4 layers72.4 × 69.8 mmWedge, the printed circuit board in 3D

    Wedge

    aaravjhamb/wedge

    a v2 of aaravjhamb/openIEMA!! hijack sound like never before

    117 parts