Skip to the content
PCBKitNew board
2 layers100 × 100 mmSynth machine, the printed circuit board in 3D

Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXTREVISION.md and adds onboard battery power.

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
93
Nets
77
Pads
296
Tracks, vias
783, 44
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
25 Aug 2025
Updated
23 Sep 2026

Overview

Synth machine is an open-source printed circuit board by zachtemkin, from the zachtemkin/synth-machine-libDaisy repository on GitHub. It is a 2-layer board of 100 × 100 mm with 93 parts on 77 nets, routed with 783 tracks and 44 vias.

It is built around the MAX98306ETD+T, 1N4148W and MMBT3904. Its parts include 19 capacitors, 19 switches, 18 diodes, 13 resistors and 10 connectors. It belongs with the audio and music boards of this library.

Main components

3

README

hardware/v0.4/README.md

synthMachine carrier board v0.4

Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXT_REVISION.md and adds onboard battery power. It is a new outline: 160 x 74 mm landscape instead of 100 x 100, with all 19 key headers in one row along the bottom edge in panel order. The USB-C, the Seed's own USB and the headphone jack still share the top edge.

PCB render

ChangePartsWhy
One row of key headersK1..K19 along the bottom at 7 mm pitch, diode above each, name belowEvery button lead is the same length and points the same way. The headers are rotated so the row is 132 mm wide and the corners stay free for mounting holes.
Battery powerJ17 JST-PH cell, U5 BQ24074 charger with power path, U6 TPS61023 5 V boost, J16 power-switch header, JP2 always-on jumperRuns from a single LiPo, charges from the USB-C, and runs from USB while charging. See the power section below.
Plug detect reaches 3V3Q1 is a 2N7002 MOSFETThe v0.3 BJT clamped HP_DET at 0.8 V so D13 never saw a plug. No jumper, no HP_DET=adc.
Firmware mute on its own transistorQ2 2N7002, R6 gate, R15 pull-up; MUTE on D0Muted at reset, in DFU and after a crash; firmware drives D0 low to run. Wired-OR with Q1.
I2C for encodersJ15 STEMMA QT (top-entry) on I2C1 (D11 SCL, D12 SDA) at the top right; R16/R17 pull-ups DNPFor the seesaw rotary-encoder breakouts; the cable leaves upward toward the panel.
Display headerJ9: GND, 3V3, 5V, SCK (A7), MOSI (A3), NSS (A8), D/C (D26), RST (D27)Hardware SPI1 for an OLED or a Sharp memory LCD.
Encoders instead of bank potsJ11..J14 removed; only J10 (volume) remainsThe four bank controls are seesaw rotary encoders on J15. Their old ADC pins go to the expansion header.
USB ESD, SMD fuseU4 USBLC6-2SC6, F1 1812 PTC on the USB inputData lines were unprotected; the radial fuse collided with the Seed.
USB-C receptacleJ1 is the HRO TYPE-C-31-M-12 (LCSC C165948)Same land pattern and body depth as v0.3's GCT USB4105, which went out of stock. A JLCPCB basic part.
Peripheral 3.3 V railU7 AP7361C-33 (SOT-223, 1 A) from +5V, C27/C28Feeds the encoders, the display and the expansion header's 3V3 pin, so the Seed's regulator carries only the Seed, the headphone amp and pull-ups.
Assembly-ready BOMevery part has an MPN or LCSC numberfab.sh writes pcbway_bom.csv / pcbway_cpl.csv.

Only the volume pot header remains (A0). The four bank controls are I2C rotary encoders on J15, chained over STEMMA QT. The firmware profile HW=carrier4 reads A0 only and leaves the bank inputs alone until the encoder support exists.

Power

text
USB-C J1 -> F1 2.5 A PTC -> VUSB -> U5 BQ24074 IN
                                    U5 BAT  <-> J17 cell (+ C22)
                                    U5 OUT   -> VSYS (4.4 V on USB, else the cell)
VSYS -> L1 1 uH / U6 TPS61023 -> +5V (5.1 V) -> Seed VIN, speaker amp, J8/J9 5V pins
                                       +5V -> U7 AP7361C-33 -> 3V3P -> J15 encoders, J9 display, J8 3V3
  • Charger. EN2 high and EN1 low select the resistor-programmed input limit: R19 1.1k gives 1.5 A, and the charger's input-voltage loop backs off automatically on a weak USB port. R18 1.8k sets 0.5 A fast charge, which is 0.25 C for a 2000 mAh cell and keeps the linear charger under 0.7 W. TMR and ITERM are left open for the default 30 min / 5 h safety timers and 10 % termination. CE is tied low, TS has the 10k that the part needs when there is no pack thermistor. The system runs from OUT while the cell charges, and the cell supplements USB on peaks.
  • Boost. The TPS61023 makes 5.1 V from VSYS (750k/100k on a 0.6 V reference). It carries the whole load on USB as well as on battery, which is fine: from the charger's 4.4 V it is barely working. From a 3.3 V cell it delivers about 1.5 A continuous with the 470 uF C1 covering the amp's peaks. Inductor per TI's table (Coilcraft XEL4030-102ME); XGL4030-102MEC is the LCSC-stocked equivalent.
  • Switch. J16 takes a panel SPST. Closed, it pulls the boost's EN up to VSYS through R28; open, R27 holds it low and everything downstream of the boost is off, while the charger keeps charging. The EN pin draws nothing, so any small switch works. J16 sits on the left edge at mid-height with JP2 beside it to bridge the switch on a bench board; the two enable lines run across the board to the boost, which is fine for a pull-up-and-pin signal.
  • Firmware signals. A10 reads VBAT/2 (R23/R24, 0 to 2.1 V). A5 reads ~CHG (low = charging) and A11 reads ~PGOOD (low = USB present), both open-drain with 100k pull-ups. Nothing in the firmware uses them yet.
  • Cell. Single-cell LiPo on J17, pin 1 = +. Use a protected cell (the Adafruit and SparkFun packs are); there is no protection on the board. 2000 mAh or more suits the speakers, which can pull over 1 A at volume.
  • Note. The Seed's own USB port powers only the Seed; it cannot charge the cell or run the amp. That was already true on v0.3.

Regenerate, route, fab

Same pipeline as v0.3, run from this directory:

bash
KICAD_PY=/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/Current/bin/python3
$KICAD_PY hardware/v0.4/gen_kicad.py                       # schematic + placed PCB
$KICAD_PY hardware/v0.4/route.py --java <java25> --jar freerouting-2.4.1.jar
$KICAD_PY hardware/v0.4/route.py --pours-only              # rebuild just the GND pours
sh hardware/v0.4/fab.sh                                    # Gerbers, BOMs, CPLs, test print

Freerouting 2.4.1 needs Java 25. Neither is installed system-wide on the Mac; a portable Temurin JRE from adoptium.net and the jar from the Freerouting GitHub releases page were used, and both can live anywhere. PREROUTES in the generator carries the audio paths, the MAX98306 fan-out and short stubs off the boost converter's 0.5 mm pitch pins, which the autorouter cannot reach with power-width tracks on its own.

Pin map (what the firmware profile HW=carrier4 expects)

Seed pinUse
D0MUTE: high = speakers muted (default via R15), low = run
D1..D3matrix rows
D4..D9matrix columns
D10C4 key
D11, D12I2C1 SCL, SDA (STEMMA QT)
D13HP_DET, high = headphones plugged in
D14HP_MUTE, headphone amp ~MUTE, low = muted
A0volume pot
A1, A2, A4, A9spare, on J8 (the old bank pot inputs)
A3, A7, A8SPI1 MOSI, SCK, NSS (display)
A5~CHG from the charger, low = charging
A6spare, on J8 (seesaw INT candidate)
A10battery voltage / 2
A11~PGOOD from the charger, low = USB present
D26, D27display D/C, RST
D29, D30USB-C data (MIDI)

Headers

RefWhatPins
K1..K19keys, JST-XH 2-pin, bottom row in panel orderrow / diode (any way round)
J10volume pot, JST-XH 3-pin, left edge below the USB-C3V3A, wiper, GND
J5, J6speakers, JST-PH+ / -
J17battery, JST-PH1 = +, 2 = GND
J16power switch, JST-XH 2-pin, left edge mid-height (JP2 beside it bridges it)either way round
J15STEMMA QT, top-entry, top rightGND, 3V3P, SDA, SCL
J9displayGND, 3V3P, 5V, SCK, MOSI, NSS, D/C, RST
J8expansionHP_MUTE, A1, A2, A4, A6, A9, HP_DET, MUTE, VSYS, 3V3P, 5V, GND

Ordering with assembly (PCBWay)

fab.sh writes fab/pcbway_bom.csv with an item per line: designators, quantity, manufacturer part number, LCSC number, value, package and whether it is SMD or through-hole. fab/pcbway_cpl.csv has both sides. Upload the Gerber zip, the BOM and the CPL; on the quote, tick at least J1 (USB-C), the 19 K headers, J10, J5/J6, J16, J17 and J15 for placement. The Seed sockets, C1 and the jack can go in the same job or be hand-fitted.

Ordering with assembly (JLCPCB)

fab/jlcpcb_bom.csv and fab/jlcpcb_cpl.csv carry every part with an LCSC number, which is all of the SMD parts and the JST connectors: the 19 key headers, the volume and switch headers (JST XH originals, C158012 / C144394) and the speaker and battery sockets (JST PH, C131337). Choose standard assembly, not economic: economic is SMD-only and drops the through-hole connectors. Still hand-fitted afterwards: the two Seed sockets, the two expansion/display sockets, the headphone jack and C1, which are on the Digi-Key list. The DNP pull-ups are excluded automatically.

Design review notes (v0.4 quality pass)

Things checked after the layout settled, and what was changed or accepted:

  • Current paths. Every net that carries real current was audited for width: VBUS/VUSB/VBAT/VSYS 0.4 mm, +5V and the filtered speaker lines 0.6 mm, with 0.5 mm-drill vias. The only narrow copper left is the unavoidable necks onto fine-pitch pads: 0.3 mm for less than 1 mm at the boost's VIN/SW/VOUT/GND pins (0.35 mm pads, 0.5 mm pitch) and 0.2 mm for about 1 mm at the amp's PVDD and speaker pins (0.4 mm pitch). The amp's two PVDD pins are joined right off the pads into one 0.5 mm feed. The boost's input and output capacitors sit at its pins with 0.6 mm copper.
  • Power switch really switches off. The TPS61023 has true input-to-output disconnect in shutdown, so with EN low nothing reaches the Seed's VIN.
  • Bulk capacitor on the boost. The 470 uF electrolytic on +5V is inside the TPS61023's stated 4 to 1000 uF effective output range.
  • Boost thermals. SOT-563 is about 120 to 140 K/W. At 1 A out from a 3.3 V cell the part dissipates about 0.5 W, so it runs warm (60 K rise) but within limits; the amp's 2 A peaks are brief. Keep the ground pour under it. If a future revision needs more headroom, the TPS61088 in a QFN is the drop-in class.
  • Seed 3V3 budget. Solved with a separate rail: the Seed's regulator feeds only the Seed, the headphone amp and the pull-ups (tens of milliamps). The encoders, display and expansion header run from U7, a 1 A SOT-223 LDO on the +5V rail (3V3P). At 300 mA it dissipates about 0.55 W, a 30 K rise on its ground tab and pour. On battery that rail is boost-then-LDO, roughly 60 % efficient, about 20 mA of extra cell current at typical loads. The headphone amp stays on the Seed's quieter rail.
  • USB-C current. The CC pull-downs advertise a sink but the firmware does not read the source's advertisement, so the charger's 1.5 A input limit applies to any port; the charger's VIN-DPM loop throttles rather than crashes a 500 mA port. A CC ADC read would let firmware lower ILIM later.
  • Battery divider on the ADC. 100k/100k is a 50k source impedance, high for the STM32 ADC's sampling time; the 100 nF across the bottom resistor is what makes the reading settle. Do not drop it.
  • Reverse cell. No reverse-polarity protection on J17 by design (a diode would cost the charger its regulation). The polarity check below is the protection.
  • Quiescent when off. Charger from the cell, boost leakage and the sense divider add up to about 25 uA, years on any usable cell.

Check before ordering

  1. J17 polarity against the cell you will use: pin 1 is + here, and the silkscreen says so. A reversed cell destroys the charger.
  2. J15 pin 1 (GND) is the pad nearest the board's right edge; check it against the cable's black wire before plugging in an encoder board.
  3. Q1/Q2 pinout: KiCad's Q_NMOS_GSD is gate 1, source 2, drain 3, the 2N7002's SOT-23 order. Check the LCSC part's datasheet agrees.
  4. U5 thermal pad has vias to the ground pour; make sure the assembler's stencil does not flood it.
  5. Enclosure: the outline changed. The top edge still carries all three ports at the same spacing from the left edge as v0.3, but the board is 60 mm wider and 26 mm shorter, and the mounting holes moved. The headphone jack's nose now stands 1.5 mm proud of the edge instead of flush.
  6. F1 and L1 look unpopulated in the render only because this KiCad install has no 3D models for the 1812 fuse and the XxL4030 inductor footprints. Both are in the BOM and the placement file.

Parts

93
QtyValueFootprintReferences
181N4148WD_SOD-123D1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D17, D18 +2
81uC_0805_2012MetricC7, C8, C11, C12, C16, C17, C18, C19
710kR_0805_2012MetricR4, R5, R6, R8, R9, R10, R11
4100R@100MHz 0805L_0805_2012MetricFB1, FB2, FB3, FB4
4100kR_0805_2012MetricR3, R12, R13, R14
4220pC_0805_2012MetricC2, C3, C4, C5
4M3MountingHole_3.2mm_M3H1, H2, H3, H4
2100nC_0805_2012MetricC6, C15
210uC_0805_2012MetricC13, C14
247pC_0805_2012MetricC9, C10
25k1R_0805_2012MetricR1, R2
1470u 10VCP_Radial_D8.0mm_P3.50mmC1
1A#4 [c1 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK11
1A4 [c2 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK10
1B4 [c1 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK12
1BTN1 [c0 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK14
1BTN2 [c0 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK15
1BTN3 [c1 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK16
1BTN4 [c2 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK17
1BTN5 [c3 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK18
1BTN6 [c4 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK19
1C#4 [c5 r0] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK2
1C5 [c0 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK13
1D#4 [c4 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK4
1D4 [c5 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK3
1Daisy Seed / Seed3DaisySeed_2x20U1
1E4 [c5 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK5
1ExpansionPinHeader_1x12_P2.54mm_VerticalJ8
1F#4 [c3 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK7
1F4 [c4 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK6
1G#4 [c2 r1] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK9
1G4 [c3 r2] JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK8
1GAIN: 1-2 = 18dB, open = R13, 2-3 = 12dBSolderJumper-3_P1.3mm_Open_RoundedPad1.0x1.5mmJP1
1Headphones 3.5mm (CUI SJ1-3515N)Jack_3.5mm_CUI_SJ1-3515N_HorizontalJ7
1KEY C4 (direct D10) JST-XHJST_XH_B2B-XH-A_1x02_P2.50mm_VerticalK1
1MAX98306ETD+TTDFN-14-1EP_3x3mm_P0.4mm_EP1.78x2.35mm_ThermalViasU3
1MF-R250 2.5A PTCFuse_Bourns_MF-RG300F1
1MMBT3904SOT-23Q1
1Pot ATK (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ11
1Pot DEC (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ12
1Pot REL (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ14
1Pot SUS (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ13
1Pot WAV (10k lin, panel) JST-XHJST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ10
1Speaker L (JST-PH)JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ5
1Speaker R (JST-PH)JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ6
1TPA6138A2PWRTSSOP-14_4.4x5mm_P0.65mmU2
1USB-C (MIDI + 5V power)USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_HorizontalJ1

Questions

How big is the Synth machine PCB?

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

What parts does the Synth machine use?

93 parts, built around the MAX98306ETD+T, 1N4148W and MMBT3904. 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 Synth machine KiCad files?

From the zachtemkin/synth-machine-libDaisy repository on GitHub, at the commit this page was made from: the board is hardware/v0.3/synth_machine.kicad_pcb and its schematic hardware/v0.3/synth_machine.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Synth machine design in my own project?

Its repository states no licence, so its author keeps all rights: ask zachtemkin before reusing the design.

More from zachtemkin/synth-machine-libDaisy

1
  • 2 layers160 × 74 mmSynth machine, the printed circuit board in 3D

    Synth machine

    zachtemkin/synth-machine-libDaisy

    Second revision of the carrier. v0.3 in ../v0.3/ is the board that was fabricated in September 2026; v0.4 applies everything in ../NEXTREVISION.md and adds onboard battery power.

    123 parts

Similar boards

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 6 layers160 × 100 mmAdrmu6layer, the printed circuit board in 3D

    Adrmu6layer

    marcoreps/ADRmu

    ADR1000 10V standard

    240 parts149
  • 4 layers241.2 × 327.2 mmCyclic, the printed circuit board in 3D

    Cyclic

    tpcarlson/synth-diy

    Mostly Eurorack projects

    439 parts107
  • 2 layers60.2 × 106.5 mmTiNRS - DuckTape, the printed circuit board in 3D

    TiNRS - DuckTape

    ThisIsNotRocketScience/Eurorack-Modules

    This is not Rocket Science presents: Eurorack modular synthesizer modules!

    262 parts87MIT
  • 2 layers84 × 85 mmHbr mk2-rxtx, the printed circuit board in 3D

    Hbr mk2-rxtx

    afiskon/hbr-mk2

    All HF bands QRP CW/SSB transceiver

    239 parts76MIT
  • 2 layers447.8 × 139.3 mmA500KB, the printed circuit board in 3D

    A500KB

    HenrykRichter/A500KB

    Amiga 500 Custom Mechanical Keyboard

    250 parts46
  • 2 layers155 × 70 mmPayphone v1, the printed circuit board in 3D

    Payphone v1

    sdylewski/Analog-Redial

    A circuit board for old telephones to come back to life. Plug one or two phones in, and you can call the other phone, use bluetooth, connect to others via voip, and do a variety of other things with a plain old rotary…

    137 parts46