GLYPH MIDI Controller Kit
GitHub Repository
Get the firmware, complete setup guide, and printable wiring reference.
Six-Switch PCB
See the PCB design matched by the current firmware.
What does it do?
The Glyph Mini 2040 reads six note switches, three potentiometers, and a rotary encoder. It sends USB MIDI messages to a computer or phone running a MIDI instrument app. A 128 × 64 I2C OLED shows the current controls and an edit menu. The board does not produce audio on its own; the receiving app or synthesizer makes the sound. This guide follows the repository’s current six-switch design. Older five-key wiring does not match itscode.py.
What you need
Use CircuitPython 10.x for the Glyph Mini 2040 and a matching 10.x library bundle. The repository’s setup was documented with CircuitPython 10.3.1.
Wiring
The switches and encoder button use internal pull-ups. Supply the OLED and potentiometers with 3.3 V, never 5 V. If a potentiometer turns backwards, swap its outer legs.
Install and play
1
Install CircuitPython
Download the board’s CircuitPython 10.x
.uf2. Hold BOOT while connecting USB, then copy the file to the RPI-RP2 drive. After restart, confirm CIRCUITPY/boot_out.txt reports board ID pcbcupid_glyph_mini_2040.2
Copy the libraries
From the matching 10.x bundle, copy the folders
adafruit_midi, adafruit_display_text, and adafruit_display_shapes into CIRCUITPY/lib/. Also copy adafruit_displayio_ssd1306.mpy, adafruit_displayio_sh1106.mpy, adafruit_debouncer.mpy, adafruit_ticks.mpy, and simpleio.mpy there.3
Copy the program
Copy glyph_mini_2040_midi_keyset/code.py to the root of
CIRCUITPY as code.py. It starts automatically. Later program updates only require replacing this file.4
Choose a MIDI instrument
Connect the board normally, without holding BOOT. In your music app, select the CircuitPython/Glyph device as a MIDI input and select a synthesizer or software instrument as the output. Press a physical key to test it. On Windows, VMPK is one option; on macOS, GarageBand can use a Software Instrument track. See the repository guide for a Linux FluidSynth setup.
Controls
On an edit page, turn the encoder to choose a line, long-press to edit, turn to change the value, and long-press again to finish. Menu edits last only until restart; change the defaults in
code.py to keep them. The six default MIDI note numbers are 61, 64, 66, 68, 73, and 75 on channel 1.
The firmware defaults to an SSD1306 display at I2C address 0x3C. Set OLED_DRIVER to "SH1106" for that display type, or adjust OLED_ADDRESS if your module uses 0x3D. The MIDI controls can still run without the OLED.
Troubleshooting
For the full beginner guide and printable wiring sheet, see the project repository and its PDF.