
Haxophone001
cardonabits/haxo-hw
Haxophone, an electronic musical instrument that resembles a saxophone

ESP32 controlled wind synth
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.

STARLITE is a minimalist Digital Saxophone (Digisax) controlled by ESP32-S3.
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.
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
A pdf version can be found under pcb/unconnected_pcb.

PCB front
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.
3D printed parts:
| Quantity | Description |
|---|---|
| 1 | key B |
| 1 | key B-flat |
| 1 | key C-sharp |
| 1 | key G-sharp |
| 3 | key left palm |
| 1 | key low B flat |
| 1 | key Octave |
| 3 | key right palm |
| 2 | key right pinky |
| 7 | key round |
| 1 | mount left |
| 1 | mount left palm |
| 1 | mount left pinky |
| 2 | mount right palm |
| 2 | mount right pinky |
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.
#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"}



Massive thank you to Rehan for sacrificing his sleep to write the firmware.
Also to Sua for designing a BANGING zine.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 29 | MountingHole_3.2mm_M3 | MountingHole:MountingHole_3.2mm_M3 | h1, h2, h10, h11, h12, h13, h14, h16, h17, h18, h19, h20, h21, h22, h23, h24 +13 |
| 21 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D3, D4, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21 +5 |
| 21 | SW_Push | digisax_stuff:slim_switch | key_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 |
| 4 | Conn_01x04_Pin | digisax_stuff:pad_1x4 | J1, J2, J5, J6 |
| 2 | 100nF | Capacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mm | C2, C3 |
| 2 | Conn_01x03_Pin | digisax_stuff:pad_1x3 | J7, J8 |
| 2 | Conn_01x05_Pin | digisax_stuff:pad_1x5 | J3, J4 |
| 1 | 470pF | Capacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mm | C1 |
| 1 | 470uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C4 |
| 1 | Barrel_Jack | Connector_BarrelJack:BarrelJack_Horizontal | J9 |
| 1 | ER_OLEDM0.91_1x-I2C | Display:ER_OLEDM0.91_1x-I2C | U1 |
| 1 | ESP32-S3 | digisax_stuff:ESP32-S3-DevKitC-1 | U5 |
| 1 | MCP3221 | Package_TO_SOT_SMD:SOT-23-5 | U3 |
| 1 | MPXV7007 | digisax_stuff:MPXV7007DP | U2 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW1 |
| 1 | TLV320DAC3100_breakout | digisax_stuff:adafruit_TLV320DAC3100 | U4 |

cardonabits/haxo-hw
Haxophone, an electronic musical instrument that resembles a saxophone



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




It measures 158 × 250 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask AndrewJ-25 before reusing the design.