ninethehacker.xyz $16 MIDI mixer from scratch

$16 MIDI mixer from scratch

custom electronics on a shoestring


I’ve been getting into the excellent VCV Rack modular synth emulator/simulator but pretty quickly hit the limitations of the mouse and keyboard input. You can use the Stroke module to pass through keyboard input, but for finer control you’re going to need some form of midi controller. I wanted to continue, but I’m not a very good DJ and $150 on an entry level mixer was a little steep, worse, I’d be paying even more if I ever wanted to upgrade.

It’s no secret that musical equipment is way overpriced, I managed to build my first custom mixer for 16 bucks and some change.

front view

parts

  • $12 Teensy2.0++ from aliexpress
  • $4 10-pack 10k potentiometers from aliexpress
  • FREE Random bits of hookup wire from junk bin
  • FREE Fake earbuds case also from junk bin

The Teensy was basically half price, which makes me suspect it’s a clone, however I’m very poor, the MCU looks genuine, and it works fine with the teensyduino library and programmer so I’m satisfied. If you don’t believe that hookup wire is actually free and you don’t consider 20 gauge silicone wire an operating expense you can find junk ethernet cables behind nearly any office building or renovation and strip them for hookup wire (and look like a methhead when you do).

inside of rat nest project case

schematic

Nothing fancy, I only did 8 channels because this is a ghetto build while I wait for multiplexer ICs on backorder.

schematic diagram

We’re just setting up power and ground rails from the VCC and GND pins and then hooking output up to the analog pins. I accidentally reversed power and ground on half of the pots which I fixed when I got to the…

firmware

The advantage of building your own stuff is that you don’t have to have an x-ray machine and an electrical engineering degree to hack in features.

The disadvantage is that I’m a much lazier and worse engineer than I suspect even first year employees at AKAI are.

This firmware literally just reads the pots and spams them onto the MIDI bus every frame. Things like filtering input and redundant messages will probably occur when version 2 comes around because this works well enough for 8 channels split by ADC pins. Can’t remember who I stole it from but bitshifting 10bit analog reads to 8bit midi signals is genius and way better than the integer math I was trying to use.

const int channel = 1;
int inputs[8] = {A0, A1, A2, A3, A4, A5, A6, A7};


void setup() {
}

void loop() {
  for (int i=0; i<8; i++) {
    if (i<4) {
      usbMIDI.sendControlChange(i, 255 -(analogRead(inputs[i])>>3), channel);
    } else {
      usbMIDI.sendControlChange(i, analogRead(inputs[i])>>3, channel);
    }
  }
}

Krissy Workman replied:

Very impressive! Am I understanding correctly, you are taking analog inputs & converting them to midi?

Nine replied:

Yep. Just hooked the pots to analog in and every "frame" the microcontroller reads the input and sends it to the pc over USB.


all comments are manually reviewed before publication