Skip to the content
2 layers158 × 250 mmDigisax, the printed circuit board in 3D

ESP32 controlled wind synth

Size
158 × 250 mm
Copper layers
2
Thickness
1.6 mm
Parts
90
Nets
97
Pads
308
Tracks, vias
115, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
3 May 2026
Updated
23 Jun 2026

Overview

Digisax is an open-source printed circuit board by AndrewJ-25, from the AndrewJ-25/Digisax repository on GitHub. It is a 2-layer board of 158 × 250 mm with 90 parts on 97 nets, routed with 115 tracks and 0 vias.

It is built around the ESP32-S3, MCP3221A5-E and MPXV7007DP. Its parts include 21 diodes, 9 connectors, 5 ICs, 4 capacitors and 1 switch. It belongs with the ESP32 boards of this library.

Main components

3

README

README.md

STARLITE

zine page

Description

STARLITE is a minimalist Digital Saxophone (Digisax) controlled by ESP32-S3.

Inspiration

This project is intended to be a cost effective, customisable alternative to commercially available wind synths. STARLITE can be used for both performance and silent practice. It weds my two favorite hobbies: music and tinkering.

Features:

  • realistic ergonomics
  • UI in the form of an OLED display and rotary encoder, to control master volume and timbre
  • differential pressure sensor for responsive breath control
  • pressure tube and bleed tube to simulate realistic resistance to blowing
  • audio synthesised locally
  • 3x7 key matrix featuring MX Black switches
  • power via 5V barrel jack
  • DAC with headphone output

The neck can be blown into directly, but an alto saxophone mouthpiece is recommended. (Not included in this project.)

OnShape link: https://cad.onshape.com/documents/a64dba8dfd86a5efa1851173/w/8b62b2d00aa632cf961d9b4c/e/8ecfcb79b78c17c244b3f0aa

Schematic and PCB

Schematic view A pdf version can be found under pcb/unconnected_pcb.

traces

pcb front PCB front

pcb back PCB back

NOTE: Kicad project contatining an unconnected, partially routed pcb can be found under pcb/unconnected_pcb. A fully routed, panelised pcb can be found under pcb/panelised_pcb. Gerber files were generated from the latter.

Assembly

  1. All parts can be handsoldered. I recommend soldering the key-switches last.
  2. 3D printed parts to contain M3 heatset inserts.
  3. Cut two lengths of food grade silicone tubing, 70mm (pressure tube) and 240mm (bleed tube) in length.
  4. All plumbing is a push fit. Connect the pressure tube between the neck and pressure sensor. Bleed tube carries condensation from the neck to the bottom of the instrument. Holes in the right-hand-pinky-keys can hold the bleed tube in place.
  5. All keycaps are a push fit. See images at bottom of page for correct placement.
  6. Wrap cork around the neck to ensure an airtight fit with the mouthpiece.

3D printed parts:

QuantityDescription
1key B
1key B-flat
1key C-sharp
1key G-sharp
3key left palm
1key low B flat
1key Octave
3key right palm
2key right pinky
7key round
1mount left
1mount left palm
1mount left pinky
2mount right palm
2mount right pinky

BOM

QuantityTotal cost/GBPDescriptionMPNSuggested source
116.88PCB-https://jlcpcb.com/
16.30DAC amplifierAdafruit TLV320DAC3100 breakout boardhttps://thepihut.com/products/adafruit-tlv320dac3100-i2s-dac-with-headphone-and-speaker-out
110.40MCUESP32-S3-DevKitC-1https://www.aliexpress.com/item/1005009298826918.html
15.73Differential pressure sensorMPXV7007DPhttps://www.aliexpress.com/item/1005009368234291.html
11.43I2C ADCMCP3221https://www.mouser.co.uk/ProductDetail/Microchip-Technology/MCP3221A7T-E-OT?qs=uHi2%2FQoPa5B%2FLE1GKuvdgg%3D%3D
2123.49 (30pcs)Keyboard switchesCherry MX Blackhttps://www.ebay.co.uk/itm/203537430495?_skw=mx+black+switch
13.800.91" OLED displaySSD1306https://www.aliexpress.com/item/1005006365845676.html
11.16rotary encoderEC11https://www.aliexpress.com/item/1005005983134515.html
10.80Barrel jackDC-005https://www.aliexpress.com/item/4001206395694.html
212.27Diode1N4148https://www.aliexpress.com/item/1005010526571917.html
43.00Capacitors470pF, 100nF, 470uFhttps://www.digikey.co.uk/
295.75 (50 pcs)Screw M3M3 * 12 Phillip's headhttps://www.ebay.co.uk/itm/221326204336
298.88 (100 pcs)Heat-set insert M3M3 * 4 * 4.5https://www.ebay.co.uk/itm/376068195160
13.20Food grade silicone hoseID 3mm OD 5mm length 1mmhttps://www.ebay.co.uk/itm/227352704780?var=526554578797
15.44cork sheet~2mm thicknesshttps://www.ebay.co.uk/itm/277911247699
-103D printed parts--
TOTAL108.53---

Code

Firmware is written in C++.

Column pins use the ESP-32's internal pullup, and all row pins are set to high. I implemented a loop where all the rows are pulled high by default, and any column which is detected as low is matched with the key's corresponding row.

At the moment the code detects simultaneous key presses and prints the note which the current fingering corresponds to. Matrix and fingering mappings can be found in the code/ directory.

Note synthesis and volume control via the rotary encoder will be implemented once the project is built.

cpp
#include <Arduino.h>
#include <map>
#include <initializer_list>

// =====================
// MATRIX PINS
// =====================

int Rows[] = {7, 15, 16, 17, 18, 8, 9};
int Columns[] = {10, 11, 12};

// =====================
// KEY NAMES
// =====================

const char* saxKey[7][3] =
{
    {"Octave1","L1","Ls1"},
    {"fork1","Bf1","Ls2"},
    {"Rs1","L2","Ls3"},
    {"Rs2","L3","Gsh1"},
    {"Rs3","R1","Csh1"},
    {"Dsh1","R2","LB1"},
    {"C1","R3","LBf1"}

More images

render

front view

rear view

bleed tube mounting

Acknowledgements <3

Massive thank you to Rehan for sacrificing his sleep to write the firmware.

Also to Sua for designing a BANGING zine.

Parts

90
QtyValueFootprintReferences
29MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3h1, h2, h10, h11, h12, h13, h14, h16, h17, h18, h19, h20, h21, h22, h23, h24 +13
211N4148Diode_THT:D_DO-35_SOD27_P7.62mm_HorizontalD1, D2, D3, D4, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21 +5
21SW_Pushdigisax_stuff:slim_switchkey_Bflat1, key_C1, key_Csharp1, key_Dsharp1, key_Gsharp1, key_L1, key_L2, key_L3, key_LB1, key_LBflat1, key_Lside1, key_Lside2, key_Lside3, key_R1, key_R2, key_R3 +5
4Conn_01x04_Pindigisax_stuff:pad_1x4J1, J2, J5, J6
2100nFCapacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC2, C3
2Conn_01x03_Pindigisax_stuff:pad_1x3J7, J8
2Conn_01x05_Pindigisax_stuff:pad_1x5J3, J4
1470pFCapacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mmC1
1470uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC4
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ9
1ER_OLEDM0.91_1x-I2CDisplay:ER_OLEDM0.91_1x-I2CU1
1ESP32-S3digisax_stuff:ESP32-S3-DevKitC-1U5
1MCP3221Package_TO_SOT_SMD:SOT-23-5U3
1MPXV7007digisax_stuff:MPXV7007DPU2
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW1
1TLV320DAC3100_breakoutdigisax_stuff:adafruit_TLV320DAC3100U4

Similar boards

  • 2 layers102.4 × 211.3 mmHaxophone001, the printed circuit board in 3D

    Haxophone001

    cardonabits/haxo-hw

    Haxophone, an electronic musical instrument that resembles a saxophone

    92 parts674
  • 2 layers141 × 56.9 mmSenseEHajo, the printed circuit board in 3D

    SenseEHajo

    ehajo/SenseHaJo

    Software for SenseHaJo Streamproject

    119 parts5
  • 4 layers85 × 56 mmDwc hat, the printed circuit board in 3D

    Dwc hat

    dwcguru1/dwc-hat

    Raspberry Pi Monitor for Deep-Water-Cultures (DWC)

    100 parts4MIT
  • 4 layers70 × 60 mmTanklevel, the printed circuit board in 3D

    Tanklevel

    Th3Link/tanklevel

    This project provides a solution for measuring the liquid level in tanks, such as rainwater tanks, using the TL-136 pressure sensor.

    80 parts4CERN-OHL-S-2.0
  • 2 layers141 × 56.9 mmSenseEHajo, the printed circuit board in 3D

    SenseEHajo

    calm4git/SenseHaJo-ESP32

    Replacement PCB for Senseo Coffeemaker with ESP32

    104 parts1
  • 4 layers65 × 26 mmShémas, the printed circuit board in 3D

    Shémas

    CarlDominicA/Projet_Module_CAN

    CA

    43 parts
  • 2 layers50.8 × 22.9 mmIsoISE feather, the printed circuit board in 3D

    IsoISE feather

    garethhcoleman/IsoISE-feather

    Hardware files for IsoISE feather board

    119 partsGPL-3.0
  • 2 layers70 × 110 mmThermostat pcb, the printed circuit board in 3D

    Thermostat pcb

    mikegormack/thermostat-pcb

    knob thermostat PCB Kicad

    103 parts

Questions

How big is the Digisax PCB?

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

What parts does the Digisax use?

90 parts, built around the ESP32-S3, MCP3221A5-E and MPXV7007DP. 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 Digisax KiCad files?

From the AndrewJ-25/Digisax repository on GitHub, at the commit this page was made from: the board is pcb/unconnected_pcb/digisax.kicad_pcb and its schematic pcb/panelised_pcb/starlite_production_pcb.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Digisax design in my own project?

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