DJBB Arcade Button MIDI Drumpad

A simple DIY USB MIDI drum pad based on the Raspberry Pi Pico. It has a little screen, 16 non-velocity sensitive arcade-style buttons, and 3 potentiometers for volume / FX control.

Features

  • 16 (non-velocity sensitive) buttons for sending midi messages
  • Preset midi banks that can be re-mapped
  • Note: these mappings are per session. They will not be saved when the device powers off.
  • Velocity control
  • Repeat mode with optional note lock
  • With free or BPM sync (ROUGH bpm sync, I should say)

Hardware / Tools

  • (Tools) - Soldering Iron, Solder, M3 Allen Wrench, 3D Printer.
  • 1 3D Printed case (models here)
  • 1 Raspberry pi pico
  • 1 SSD1306 OLED screen - (just google SSD1306 OLED and pick the one with 4 pins)
  • 12 m3 nuts and bolts
  • 12 m3 heat inset nuts
  • Some wire (helpful to have some solid core as well - can solder the buttons together easily)
  • 16 arcade-style buttons
  • The shallower ones... like these
  • 3 10k linear potentiometers
  • 2 little clicky buttons for the screen controls (like these)
  • 1 micro USB cable

Overall Cost (not including shipping, assuming Alibaba parts, super rough estimate): ~ $20-30 bucks?

Skills Required: Basic 3d printing. Beginner-intermediate soldering (we are using most of the pins on the pico so it gets crowded).

Note: you should test everything before proceeding, especially if buying these alibaba parts.

Assembly

  • Insert the buttons and pots into the front plate.
  • Use the M3 bolts to secure the screen, but DONT TIGHTEN TOO HARD. I cracked like 3 screens before I learned this lesson.
  • Use a soldering iron to heat-inset the the m3 nuts into the bottom part of the case.
  • Wire all of the button grounds together
  • Here it is useful to use some solid core wire, completely stripped. You can snake this around and solder each ground pin to it. It then becomes a rail that you can solder the screen, pots, and control button grounds to as well (instead of using a bunch of different ground pins on the pico).
  • Wire the buttons and pots to the board.
  • Wire the screen to the board
image
picture of the wiring setup

Reference the raspberry pi pico pinout diagram (google it)

Buttons wiring

GP2 | GP3 | GP4 |GP5

GP0 | GP1 | GP8 | GP9

GP10 | GP11 | GP12 | GP13

GP14 | GP15 | GP16 | GP17

Pots wiring

Pot 1 (Left) - GP26

Pot 2 (Mid) - GP27

Pot 3 (Right) - GP28

Control Buttons

Btn Left - GP20

Btn Right - GP21

Screen

SDA - GP6

SCL - GP7

GND - Any Ground Pin

VCC - Pin 36 (power)

Operation

Plug it into your computer / iPad and look for midi devices in your DAW

Tested on MacOS, Windows and iPadOS

General Operation

Screens Guide

Fun things to try:

- I created this to use with drums, but it can be fun with melodic stuff too. Try turning repeats on with repeat falloff set to 0 (Pot 2 all the way to the left).

- Now hold both nav buttons, and press a note button. It should now be repeating forever at the repeat speed (knob 3). Do this again with other notes to make a lil looper.

Software (Github)

  • Perform setup as described here
  • Add code.py and the lib folder from this repo to the base directory of your pico
  • If you aren't using the same screen as I noted above, you may have to alter code.py

You can open and edit code.py to your liking. I put some run options near the top of the file. These are constants that other parameters reference, so you can mess with these to easily change some of the general settings.

Enhancements and Optimization Ideas

  • Some sort of preset system maybe? So saving custom mapped midi bank values, etc.
  • More midi FX - Pot 2 is underutilized
  • DAW BPM Sync? No idea if this is possible.

Not sure if it's worth doing until this thing gets bigger and more unwieldy, but would be nice to..

  • Refactor code into multiple files. Many of the constants could be separated into another file to make the whole deal easier to read.
  • Run options, midi dictionaries, etc.