Recommend a Prusa printer, earn $30! See the updated Prusa Rewards Program.

MIDI88: 88-key MX-Based MIDI keyboard

3d printed 88-key piano-style MIDI controller, powered by QMK
In the contest DJ gear: Mix Anywhere
48
76
0
1663
updated May 23, 2025

Description

PDF

This is a full-size* 88-key MIDI piano controller that can be printed on a standard-size printer (Ender 3 clones, or larger).

It utilizes techniques used for making mechanical keyboards, mainly:

  • It's made for MX-style keyboard switches (Gateron v3 yellow G Pro, or other linear type);
  • The spacing between the switches is the same 19.05mm (1u) horizontally and vertically;
  • It is meant to be handwired using diodes (1N4148 in my case);
  • Keys are placed in a matrix of 13 rows by 8 columns;
  • Columns are scanned using a pair of SN74HC595N shift registers;
  • The keyboard is controlled by a ProMicro-style development board (RP2040);
  • The software is based on QMK (and you, very well, can type with this thing =D).

*full-size - means having all keys from the standard piano. The keys themselves have 19.05mm width, including the gaps. The standard is 13.7 mm (0.54 in) for black keys, and 23.5 mm for white keys.

The list of materials includes the following:

  • 88 x MX-based key switches;
  • 88 x 1N4148 diodes (or similar);
  • 2 x SN74HC595N shift registers;
  • 44 x M3x10mm bolts;
  • 44 x M3x5mm threaded heat inserts;
  • 32 x M2x12mm bolts;
  • 32 x M2x5mm (or longer) threaded heat inserts;
  • ~1.5kg of filament (PETG is highly recommended);
  • 1 x QMK-compatible development board with 11 GPIO at minimum (or buy this one, and use my code);
  • 1 x Prototyping PCB (my design uses a 20x80mm one, slightly cut to fit between the posts);
  • 1 x USB cable to connect the PCB to your device (you'll have to cut it in half to put it through the case);
  • Thin gauge, single strand wire, solder, and heat shrink. I've used thread and followed this video to make the neat looms. Highly recommended.

I've put the .stl files into separate folders. They must be descriptive enough, but just in case:

  1. Each .stl must be printed once;
  2. Parts of the frame are marked with (L)ower and (U)pper. The upper ones go on the side with black keys;
  3. The keys are the same 1 .stl: 52 x white keys, 36 x black keys;
  4. You may choose between the blank bottom plates or the ones with QR codes.
  5. The 0.2 - 0.4mm inlays are meant for the following Cura guide for multicolor printing.

I recommend checking the holes with the drill bit. You may want to drill the frame holes through, to avoid too much material being gathered in the blind spots.

The schematics are included in the photos. Use ventilation, a multimeter, thin gauge wire, and flux-core solder.

As for the software, I had to modify the QMK in a bunch of non-trivial ways to make all keys work, as by default it supports up to 5 octaves only. I've attached the .uf2 file for the RP2040 below (remove .txt in the name of the file).

UPD: QMK fork is now available at https://github.com/thisgradi/qmk_firmware (keyboards/bfb/midi88)

UPD: Second version of keys added. Real scaled-down width ratio. Real non-scaled-down height difference for the closest feel to the real piano one can get from this base.

This project took me a good amount of work, and I hope it will get some traction. The finished keyboard feels more rigid than some synthesizers, and at 900mm+, it has less twist than membrane keyboards for sure. A bit wider than a guitar deck, it may as well be used as a base for a keytar, I imagine. I've intentionally left some place for pots and/or digital synth circuitry.

I will appreciate your comments, makes, and most importantly your interest in the platforms I've incorporated into the QR codes. From Ukraine with love. Thank you.

 

Tags



Model origin

The author marked this model as their own original creation.

License