

BufferedMult
A BufferedMult made with SKiDL
- Size
- 20 × 109 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 44
- Nets
- 32
- Pads
- 144
- Tracks, vias
- 170, 24
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 21 Oct 2026
- Updated
- 29 Oct 2026
Overview
BufferedMult is an open-source printed circuit board by domesticmouse, from the domesticmouse/BufferedMult-SKiDL repository on GitHub, published under the Apache-2.0 licence. It is a 2-layer board of 20 × 109 mm with 44 parts on 32 nets, routed with 170 tracks and 24 vias.
It is built around the TL074HID, CC0603KRX7R9BB104 and PESD12VL1BA,115-ES, with the ECEA1EKS100 and 1N5819WS among its other parts. Its parts include 15 resistors, 13 connectors, 8 capacitors, 5 diodes and 3 ICs.
Main components
5TL074HID
SOIC-14-20V~-2.25V、2.25V~20V -40℃~+125℃ 105dB 1mV 1pA 20V/us 250pA 26mA 2uV/℃ 37nV/√Hz@1kHz 4.5V~40V 5.25MHz 940uA Four channels Short-Circuit Protection、EMI filtering/RF suppression SOIC-14 FET Input Amplifiers ROHSTexas InstrumentsFET Input AmplifiersCC0603KRX7R9BB104
0603100nF 50V X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTPESD12VL1BA,115-ES
SOD-323-40℃~+125℃ 1 12V 13.3V 1uA 20pF 26V 400W@8/20us 7A@8/20us Bidirectional IEC 61000-4-2 TVS SOD-323 ESD and Surge Protection (TVS/ESD) ROHSElecSuperESD And Surge Protection (TVS/ESD)ECEA1EKS100
插件,D5xL5mm-40℃~+85℃ 1000hrs@85℃ 10uF 25V 28mA@120Hz 2mm 5mm 5mm ±20% 插件,D5xL5mm Aluminum Electrolytic Capacitors - Leaded ROHSPanasonicAluminum Electrolytic Capacitors - Leaded1N5819WS
SOD-3231 Independent 1A 25A 40V 500uA@40V 600mV@1A SOD-323 Schottky Diodes ROHSGuangdong HottechSchottky Diodes
README
README.mdEurorack Buffered Multiple (SKiDL + KiCad 10)
A precision Triple 1-to-3 (Normalized to 1-to-6 / 1-to-9) Eurorack Buffered Multiple designed in Python using SKiDL and targeting KiCad 10.
This project is a SKiDL re-implementation and 3-channel expansion of domesticmouse/Buffered-Mult, omitting the LED feedback circuitry.
Interactive Course & Tutorial: https://domesticmouse.github.io/BufferedMult-SKiDL/ (published via GitHub Pages from tutorial/)

Features & Architecture
- Triple 1-to-3 / Cascaded 1-to-6 / 1-to-9 Routing:
- Channel 1: 1 input (
IN_1) driving 3 individually buffered outputs (OUT_1A,OUT_1B,OUT_1C). WhenIN_1is unpatched, its normalled switch contact (TN) grounds the input to0V. - Channel 2: 1 input (
IN_2) driving 3 individually buffered outputs (OUT_2A,OUT_2B,OUT_2C). WhenIN_2is unpatched, its normalled switch contact (TN) receives the buffered signal from Channel 1 (CH1_BUF), cascading Channels 1 and 2 into a 1-to-6 buffered multiple with zero loading droop between channels. Patching a cable intoIN_2breaks the normal connection for independent channel operation. - Channel 3: 1 input (
IN_3) driving 3 individually buffered outputs (OUT_3A,OUT_3B,OUT_3C). WhenIN_3is unpatched, its normalled switch contact (TN) receives the buffered signal from Channel 2 (CH2_BUF), cascading all three channels into a 1-to-9 buffered multiple (or a 1-to-3 + 1-to-6 split ifIN_2is patched whileIN_3is unpatched). Patching a cable intoIN_3breaks the normal connection for independent triple 1-to-3 operation.
- Channel 1: 1 input (
- Dedicated Input & Output Buffering:
- Each channel uses one quad
TL074H(TL074HIDR) op-amp (SOIC-14):- Stage A: Unity-gain input follower protected by a
PESD12VL1BA(SOD-323) bidirectional 12V TVS/ESD diode, a100Kinput pull-down resistor (0603), and a1Kseries input current-limiting resistor (0603). - Stages B, C, D: Three independent unity-gain output followers, each isolated with a
470Rseries output protection resistor (0603).
- Stage A: Unity-gain input follower protected by a
- Each channel uses one quad
- Eurorack Power Supply Protection:
- Standard 10-pin (
2x5) through-hole shrouded IDC power header (±12V,GND). - Reverse-polarity protection via
1N5819WSSchottky diodes (SOD-323, orB5819WinSOD-123as a larger alternative). 10uFradial through-hole electrolytic bulk bypass capacitors per rail plus100nF(0603) local ceramic decoupling capacitors at each op-amp'sV+andV-pins.
- Standard 10-pin (
Signal Flow
flowchart LR
subgraph CH1["Channel 1 (U1: TL074H)"]
J_IN1["IN_1 Jack<br/>(TN -> GND)"] --> TVS1["PESD12VL1BA TVS<br/>+ 100K to GND"]
TVS1 --> R_IN1["1K Series"] --> U1A["U1A Input Buffer"]
U1A --> U1B["U1B Buffer + 470R"] --> OUT_1A["OUT_1A Jack"]
U1A --> U1C["U1C Buffer + 470R"] --> OUT_1B["OUT_1B Jack"]
U1A --> U1D["U1D Buffer + 470R"] --> OUT_1C["OUT_1C Jack"]
end
subgraph CH2["Channel 2 (U2: TL074H)"]
J_IN2["IN_2 Jack<br/>(TN <- CH1_BUF)"] --> TVS2["PESD12VL1BA TVS<br/>+ 100K to GND"]
TVS2 --> R_IN2["1K Series"] --> U2A["U2A Input Buffer"]
U2A --> U2B["U2B Buffer + 470R"] --> OUT_2A["OUT_2A Jack"]
U2A --> U2C["U2C Buffer + 470R"] --> OUT_2B["OUT_2B Jack"]
U2A --> U2D["U2D Buffer + 470R"] --> OUT_2C["OUT_2C Jack"]
end
subgraph CH3["Channel 3 (U3: TL074H)"]
J_IN3["IN_3 Jack<br/>(TN <- CH2_BUF)"] --> TVS3["PESD12VL1BA TVS<br/>+ 100K to GND"]
TVS3 --> R_IN3["1K Series"] --> U3A["U3A Input Buffer"]
U3A --> U3B["U3B Buffer + 470R"] --> OUT_3A["OUT_3A Jack"]
U3A --> U3C["U3C Buffer + 470R"] --> OUT_3B["OUT_3B Jack"]
U3A --> U3D["U3D Buffer + 470R"] --> OUT_3C["OUT_3C Jack"]
endBill of Materials (BOM)
The design separates SMT components (factory-assembled on B.Cu by JLCPCB) from Through-Hole (THT) components (hand-soldered after receiving the boards):
| Ref | Qty | Value / Part | Package / Footprint | KiCad Symbol | LCSC Part # | Assembly / Description |
|---|---|---|---|---|---|---|
U1–U3 | 3 | TL074H (TL074HIDR) | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | Amplifier_Operational:TL074 | C2878713 | SMT (B.Cu, Extended) — Quad Low-Noise High-Voltage Op-Amp |
D1, D2 | 2 | 1N5819WS | Diode_SMD:D_SOD-323 | Device:D_Schottky | C191023 | SMT (B.Cu, Basic) — Schottky Reverse-Polarity Protection Diode (Alt larger package: B5819W in Diode_SMD:D_SOD-123, LCSC C8598, Basic) |
D3–D5 | 3 | PESD12VL1BA (PESD12VL1BA,115) | Diode_SMD:D_SOD-323 | Device:D_TVS | C38558 | SMT (B.Cu, Extended) — 12V Bidirectional Low-Capacitance (19 pF, <50 nA) Input ESD/TVS Protection Diode (Alt 15V: PESD15VL1BA,115 / C85378; Basic SOD-123FL: SMF12CA / C19077508) |
C3–C8 | 6 | 100nF (50V X7R) | Capacitor_SMD:C_0603_1608Metric | Device:C | C14663 | SMT (B.Cu, Basic) — Ceramic Decoupling Capacitor (CC0603KRX7R9BB104) |
R1, R6, R11 | 3 | 100K (1%) | Resistor_SMD:R_0603_1608Metric | Device:R | C25803 | SMT (B.Cu, Basic) — Input Pull-Down Resistor (0603WAF1003T5E) |
R2, R7, R12 | 3 | 1K (1%) | Resistor_SMD:R_0603_1608Metric | Device:R | C21190 | SMT (B.Cu, Basic) — Input Series Overvoltage / ESD Current-Limiting Resistor (0603WAF1001T5E) |
R3–R5, R8–R10, R13–R15 | 9 | 470R (1%) | Resistor_SMD:R_0603_1608Metric | Device:R | C23179 | SMT (B.Cu, Basic) — Output Series Protection Resistor (0603WAF4700T5E) |
J2–J13 | 12 | WQP-PJ398SM | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | Connector_Audio:AudioJack2_SwitchT | — | THT (F.Cu, Hand-Soldered) — 3.5mm Mono Switched Eurorack Jack (Thonkiconn) |
C1, C2 | 2 | 10uF (25V) | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | Device:C_Polarized | C713347 | THT (F.Cu, Hand-Soldered) — Radial Electrolytic Bulk Cap (ECEA1EKS100) |
J1 | 1 | EURORACK_PWR_10PIN | Connector_IDC:IDC-Header_2x05_P2.54mm_Vertical | Connector_Generic:Conn_02x05_Odd_Even | — | THT (B.Cu, Hand-Soldered) — 10-Pin (2x5) Shrouded Eurorack Power Header |
Getting Started
Prerequisites
- KiCad 10 installed (default macOS symbol/footprint path
/Applications/KiCad/KiCad.app/Contents/SharedSupport/is detected automatically bybuffered_multiple.py). - Python 3.12–3.14 and
uv.
Setup & Run
-
Create the virtual environment and install dependencies:
bash uv venv --clear --python 3.14 .venv uv pip install skidl markdown-it-py pyyaml -
Generate the circuit outputs and run Electrical Rules Checking (ERC):
bash .venv/bin/python buffered_multiple.py -
Generate or update the 4HP Eurorack front panel PCB and Gerbers:
bash /Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3 \ .agents/skills/eurorack-panel/scripts/generate_eurorack_panel.py \ --main-pcb BufferedMult.kicad_pcb \ --output BufferedMult_Panel.kicad_pcb \ --title "BUF MULT" \ --subtitle "1:3 / 1:6 / 1:9" \ --gerber-dir production/panel \ --zip production/BufferedMult_Panel.zip \ --drc -
Build and validate the interactive tutorial HTML from Markdown (optional, for local previewing; GitHub Actions automatically builds and publishes to GitHub Pages via
.github/workflows/pages.yml):bash .venv/bin/python tutorial/build.py --check -
Lint and format with
ruff:bash ruff check --fix buffered_multiple.py buffered_multiple_sklib.py tutorial/build.py && ruff format buffered_multiple.py buffered_multiple_sklib.py tutorial/build.py
Generated Files
Running buffered_multiple.py produces:
buffered_multiple.net— KiCad 10 netlist with deterministic hierarchicaltstampsandPower/Signalnet classes.buffered_multiple_bom.xml— KiCad XML Bill of Materials.buffered_multiple_jlcpcb_bom.csv— Grouped JLCPCB SMT PCBA Bill of Materials (Comment,Designator,Footprint,LCSC Part #), excluding hand-soldered THT parts by default.buffered_multiple.erc/buffered_multiple.log— SKiDL ERC report and execution log (0errors,0warnings).buffered_multiple_sklib.py— Auto-generated SKiDL backup symbol library.
KiCad 10 PCBs & Fabrication Outputs
Both the main circuit board and a mated 3U × 4HP Eurorack front panel are included in the repository:
- Main Circuit PCB (
BufferedMult.kicad_pro/BufferedMult.kicad_pcb):- Dimensions:
20.0 × 109.0 mm(4HP, RevV2.0), 2-layer PCB with stitchedF.CuandB.CuGNDplanes and0.5 mm±12Vpower spines. - Assembly: Full 3-channel (44-component) layout with single-sided SMT placement on
B.Cu(29 SMD parts) and hand-soldered THT jacks/bulk caps onF.Cu(J2–J13,C1,C2) plus the 10-pin power header onB.Cu(J1), complete with a-12Vorientation knockout,V2.0revision marking, and repository URL onB.SilkS.
- Dimensions:
- 4HP Eurorack Front Panel (
BufferedMult_Panel.kicad_pro/BufferedMult_Panel.kicad_pcb):- Dimensions:
20.0 × 128.5 mm(Doepfer A-100 3U × 4HP standard). - Features: 12×
6.2 mmPTH grounded jack cutouts aligned to the+6.48 mmWQP-PJ398SM(Thonkiconn) bushing centers (14.40 mmuniform vertical row pitch), 2×3.2 × 5.5 mmNPTH M3 mounting slots, exposedF.Maskcopper/finish graphics (BUF MULTtitle, input callout badges forIN 1/IN 2/IN 3, and normalling cascade indicators),F.SilkSjack labels andTL074callout, and solidF.Cu/B.Cucopper shield planes with exposed rear ground rings.
- Dimensions:
- Fabrication Archives (
production/):production/BufferedMult.zip— Main PCB Gerbers and Excellon drill files.production/BufferedMult_Panel.zip— 4HP Front Panel Gerbers and Excellon drill files (also unpacked inproduction/panel/).production/positions.csv,production/bom.csv,production/designators.csv,production/netlist.ipc— Fabrication Toolkit pick-and-place, BOM, and IPC-D-356 netlist files (usebuffered_multiple_jlcpcb_bom.csvfor SMT-only JLCPCB assembly).
Interactive Course & Tutorial (tutorial/)
The repository includes an 8-lesson interactive Hardware-as-Code course published at https://domesticmouse.github.io/BufferedMult-SKiDL/ (authored in Markdown under tutorial/ and compiled via tutorial/build.py). Starting from an empty Python file, the lessons progressively grow buffered_multiple.py and its post-netlist PCB, front-panel, and pre-fab verification scripts:
| Lesson | Stage & Title | Markdown Source | Runnable Companion App |
|---|---|---|---|
0001 | Stage 1: From an Empty File to KiCad 10 Bootstrap & First ERC() (0 → 72 lines) | 0001-environment-and-kicad-bootstrap.md | bootstrap_check.py |
0002 | Stage 2: Programmatic Part Discovery & Adding FP_* / LCSC_* Constants | 0002-programmatic-component-discovery.md | discover_parts.py |
0003 | Stage 3: Growing the Script — Adding eurorack_power(vcc, vee, gnd) (68 → 155 lines) | 0003-eurorack-power-subcircuit.md | power_subcircuit.py |
0004 | Stage 4: Growing the Script — Adding buffered_channel_1to3() (155 → 255 lines) | 0004-single-buffered-channel.md | single_channel.py |
0005 | Stage 5: Completing buffered_multiple.py — Cascaded Normalling (1:3 → 1:6 → 1:9), NetClass & JLCPCB BOM (255 → 334 lines) | 0005-cascaded-normalling-and-bom-export.md | buffered_multiple.py |
0006 | Stage 6: From .net Netlist to 4HP KiCad 10 PCB Layout & Single-Sided SMT Assembly | 0006-kicad-pcb-layout-and-assembly.md | inspect_netlist_and_layout.py |
0007 | Stage 7: Automated 4HP Eurorack Front Panel Generation in Python (+6.48 mm Bushing Offset) | 0007-eurorack-front-panel-generator.md | generate_panel_plan.py |
0008 | Stage 8 (Capstone): Programmatic Pre-Fab Design Review — Netlist-to-PCB Audit, DRC & Gerber Verification (5/5 checks) | 0008-prefab-design-review-and-drc.md | prefab_design_audit.py |
Printable Reference Sheets (tutorial/reference/)
skidl-cheatsheet.md— SKiDL API, pre-import KiCad 10 configuration,dest=TEMPLATE,part.fields,u.p[n]vsu["V+"],@subcircuit,NetClass, andERC()syntax cheat sheet.kicad-jlcpcb-lookup.md— Four-step programmatic component discovery workflow (search,show,search_footprints,jlcpcb_search.py) and verified BOM pinout/LCSC table.eurorack-power-and-normalling.md— Doepfer A-100 10-pin power header pinout, Schottky & bulk capacitor polarity,WQP-PJ398SMswitched jack mechanics, and the1:3 / 1:6 / 1:9normalling truth table.GLOSSARY.md— Standardized SKiDL, KiCad 10, JLCPCB PCBA, and Eurorack hardware terminology.
Documentation & Guides
- Interactive Tutorial on GitHub Pages (
domesticmouse.github.io/BufferedMult-SKiDL) — Hosted HTML edition of the 8-lesson (0001–0008) course and 4 reference sheets, built automatically by.github/workflows/pages.yml. PCB_LAYOUT_GUIDE.md— Step-by-step KiCad 10 PCB layout, component placement, routing, and JLCPCB export guide.FRONT_PANEL_GUIDE.md— 4HP Eurorack front panel mechanical dimensions, bushing offset coordinate table, and automated generation workflow.DESIGN_REVIEW.md— Full schematic, PCB, DRC, Gerber, and EMC pre-compliance design review report.
License
Licensed under the Apache License, Version 2.0. See LICENSE.txt for details.
This is not an official Google product.
Parts
44| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | 470R | Resistor_SMD:R_0603_1608Metric | R3, R4, R5, R8, R9, R10, R13, R14, R15 |
| 6 | 100nF | Capacitor_SMD:C_0603_1608Metric | C3, C4, C5, C6, C7, C8 |
| 3 | 100K | Resistor_SMD:R_0603_1608Metric | R1, R6, R11 |
| 3 | 1K | Resistor_SMD:R_0603_1608Metric | R2, R7, R12 |
| 3 | PESD12VL1BA | Diode_SMD:D_SOD-323 | D3, D4, D5 |
| 3 | TL074H | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U1, U2, U3 |
| 2 | 10uF | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C1, C2 |
| 2 | 1N5819WS | Diode_SMD:D_SOD-323 | D1, D2 |
| 1 | EURORACK_PWR_10PIN | Connector_IDC:IDC-Header_2x05_P2.54mm_Vertical | J1 |
| 1 | IN_1 | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J2 |
| 1 | IN_2 | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J6 |
| 1 | IN_3 | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J10 |
| 1 | OUT_1A | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J3 |
| 1 | OUT_1B | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J4 |
| 1 | OUT_1C | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J5 |
| 1 | OUT_2A | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J7 |
| 1 | OUT_2B | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J8 |
| 1 | OUT_2C | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J9 |
| 1 | OUT_3A | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J11 |
| 1 | OUT_3B | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J12 |
| 1 | OUT_3C | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J13 |
Similar boards
- 4 layers11.2 × 25.4 mm

- 4 layers146 × 95 mm

- 2 layers113.5 × 35 mm

- 4 layers138 × 114 mm

- 2 layers67.1 × 116.2 mm

- 2 layers30 × 100 mm

- 2 layers30 × 100 mm

- 2 layers90.1 × 30 mm

Questions
How big is the BufferedMult PCB?
It measures 20 × 109 mm and has 2 copper layers, 1.6 mm thick.
What parts does the BufferedMult use?
44 parts, built around the TL074HID, CC0603KRX7R9BB104, PESD12VL1BA,115-ES and ECEA1EKS100. 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 BufferedMult KiCad files?
From the domesticmouse/BufferedMult-SKiDL repository on GitHub, at the commit this page was made from: the board is BufferedMult.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the BufferedMult design in my own project?
Its repository publishes it under the Apache-2.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).