Simple Grid MIDI Controller/Keyboard

Hello Lines community. I’ve been a lurker for a few weeks and you’ve been an inspiration. I want to share this project I’m working on. It’s a grid style MIDI controller that can flip into a computer keyboard:

Story

I’m a bass player, so playing software instruments is often a challenge on piano keyboards. I wanted a simple MIDI controller to let me do that.

I was watching a video by Voidstar Labs where he made a mechanical keyboard and saw that his keyboard had straight columns instead of staggered columns. Turns out that’s called “ortholinear” in the keyboard world and it looks a lot like a fretboard! So I bought a mechanical keyboard with addressable backlights and tweaked the firmware to add a layer with MIDI controls and fretboard style lights.

Make Your Own
You can make your own by buying the same keyboard (Technik by Boardsource.xyz) and flashing it with the new firmware. Instructions are here.. I’m not affiliated with Boardsource, it was just the only ortho + low profile + backlight keyboard I could find. The parts are about $240 before shipping.

The compiled and uncompiled firmware are on github at sndwrk/musicKeyboard. I’m new to this open source thing so please let me know if you have any questions.

Future

I would like to make a custom model with a few improvements.
-5th row for numbers and better range
-Pitch Bend, Modulation Wheel, and global velocity knob to complete MIDI controller features
-Dedicated Octave and Mode Switch keys
-(maybe) playhead controls while in music mode

Acknowledgements

“Guiboard” - inspired me and is similar to my concept

“Hybrid Hexagonal Keyboard…” by s-ol here on lines - I actually found their post after I got my project working. S-ol’s device also flips between keyboard and MIDI on the same buttons. Our projects are pretty similar but with different layouts.

~Sorry I can’t add all the links in this post. Thank you for reading and making lines a great resource!

32 Likes

Nice build! It’s cool to see more keyboard - music cross pollination :wink:

If there are free pins on the controller, pitch bend and modulation wheel could maybe be added via capacitive sliders on an extra PCB.

Btw, this is off-topic, but what software are you running on the Raspberry Pi? It looks interesting (and pretty!) :slight_smile:

2 Likes

This is super cool! Thanks for sharing. I am a mech board afficionado, and always was wondering about building something specific for the MIDI implementation in QMK but kept hitting obstacles. This is awesome. :smiley:

1 Like

This is amazing. I’ve been looking to dip my toes into mechanical keyboards and this is pushing me over the edge (plus I just came across a great deal on a second hand Preonic keyboard in my local exchange).

I’ve never used QMK before and I’m not much of a programmer – I know how to mess around in Max/MSP and SuperCollider and I ocassionally dapple in HTML/CSS. It isn’t going to be simple for me to build my own custom configuration, but I think I’ll be able to work it out eventually.

Do you have any tips on how to get started,@watney_sw? Or educational resources you could share? I really appreciate the imgur guide you threw together. I guess this documentationwill point me in the right direction, but it’s a bit opaque to me: QMK Firmware.

1 Like

Thanks for the nice comments everyone!

@s-ol the raspberry pi synth is a Norns shield running mx.samples

@danielshine that’s great that you’d like to try something like this! The preonic is 5 rows right? That will be great for playability. 4 rows is too tight. Unfortunately you won’t be able to drop in my firmware.

Do you have any experience with microcontrollers or programming? That will help. Working with QMK felt a lot like programming Arduino.

Let my try and point you in the right direction, but I’m mostly self taught so I could have some details wrong.

So the goal here is to update the software that runs on your keyboard to add a new layer that sends MIDI commands instead of keystrokes. I think you call the keystrokes “HID” commands for human interface device.

The term for software that runs on an embedded device is firmware. Updating the firmware on an embedded device is called flashing. The firmware is written in C but before you can flash it to the keyboard you have to “compile” the firmware where the compiler takes the code that is legible for humans and turns it into instructions that the microcontroller on your keyboard can understand. The compiler will also pull in relevant code from libraries and such so you need a “dev environment” set up for that to work.

If you have exactly my keyboard and are OK using my firmware the process is quite easy. Just take my precompiled firmware (on GitHub) and flash it to your keeb using QMK Toolbox.

For your Preonic you will need to make your own firmware. The QMK folks made a neat online tool called QMK Configurator that allows you to make and compile your own firmware using a graphic interface. Unfortunately the Configurator does not do MIDI or custom RGB Backlights, so you need to make the firmware with a text editor.

Long story short please go do the QMK TUTORIAL to set up a text editor and dev environment on your computer. Your goal is to make a new layer on your keeb that sends out midi commands with the tuning you like. In my case I used perfect fourths tuning like a bass guitar. Then compile it and flash it to your keeb.

Feel free to ask questions here or over DM along the way. I hope that helps. Good luck!