Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions hackpads/midipad/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# MIDIpad

An independent venture into MIDI controllers.

## ✨ What

In its current state, MIDIpad is as the name implies: a portable 12-key MIDI controller
with an admittedly non-standard key layout (order: left to right, top to bottom). There
are three knobs for interfacing with a Digital Audio Workstation (DAW), and when pressed,
for switching between three MIDI channels.

The future vision is to make a portable and minimal looper, able to load samples or
plugins from an SD card, while still functioning as a MIDI device.

## ❓ Why

Although I own a MIDI piano, I find the linear layout to be less intuitive for drumming.
I took great inspiration by Launchpads—I don't own one, but I value the grid-based
interface. However, although flashy, I don't need the full 64 keys that Launchpads offer,
so that became my initial motivation for this device.

## 📝 Bill of Materials

- 128x32 OLED Display
- 3 EC11 Rotary encoders
- 12 Keys
- 3 SK6812 LEDs

## 📸 Pictures

![PCB view of midipad in KiCad](https://github.com/user-attachments/assets/e291a786-e8bb-4892-b345-8339b5e39b9f)

![3-D view of the entire case](https://github.com/user-attachments/assets/a71cd22a-a47e-4b95-8770-f265110977b5)

^ Yes I'm missing a few models. Yes this is a screenshot of Onshape.

![3-D view of the PCB](https://github.com/user-attachments/assets/93470769-9958-4fc9-a9b4-fbe5257d9d89)

^ 3D render in KiCad

![Half of the schematic view of midipad](https://github.com/user-attachments/assets/3db30f81-78f0-42c3-90d1-1a9fae4ef9c9)

![The other half of the schematic view of midipad](https://github.com/user-attachments/assets/7542dc9c-3ca8-418c-934b-b8694c95423f)
1 change: 1 addition & 0 deletions hackpads/midipad/cad/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**Disclaimer:** The rotary encoder model had to be scaled, so KiCad excluded them for being "mechanically unreliable".
102,938 changes: 102,938 additions & 0 deletions hackpads/midipad/cad/midipad.step

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions hackpads/midipad/firmware/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import board

from kmk.kmk_keyboard import KMKKeyboard
from kmk.keys import KC
from kmk.scanners import DiodeOrientation

keyboard = KMKKeyboard()

macros = Macros()
keyboard.modules.append(macros)

keyboard.col_pins = (board.GP26, board.GP27, board.GP28, board.GP29)
keyboard.row_pins = (board.GP1, board.GP2, board.GP4)
keyboard.diode_orientation = DiodeOrientation.COL2ROW

# TODO: rotary encoder pins

keyboard.keymap = [
# WIP: Will output MIDI instead of typing
]

if __name__ == '__main__':
keyboard.go()
Loading