The place to share knowledge about upgrades, mods, customisations and all other cool DIY projects for MPCs and other music equipment.
User avatar
By peterpiper Sun Nov 01, 2020 4:16 pm
Hey, I want to build a small DIY MIDI controller with arduino or raspi. I would like to use it for my TX16w sampler which doesn't have a data fader/knob but the ability to use any controlchange message for that.
Would be nice to use it for software too (GFX program Darktable and VST synths)

So the plan is:
1 or 2 fader
8 rotary encoder (with or without pushbutton)
8-16 buttons


Would be nice to merge the signal from MIDI IN with the signal of the internal fader/rotary encoder if thats possible (From what I read so far it isn't possible internally but I don't understand why not).

Any help is much appreciated.
User avatar
By peterpiper Tue Nov 03, 2020 2:33 am
NearTao wrote:I just got it up to 22 for you :D


NearTao wrote:Still no directly helpful information for you though... sorry :(

No problem. That just means I'll have to dig deeper and read some more sites on Raspi and Arduino Froums. Not a bad thing cause these boards are interesting anyway.
I just hoped I'll get spoonfed here :)

By Pontiac Sat Dec 12, 2020 2:20 am
Check out a YouTube channel called Notes and Volts. Very detailed build walkthrough, for an arduino based midi controller. I followed along with the videos a few years back. It wasn’t a walk in the park but was easier than I thought. Also checkout Adafruit, they are a diy electronics online store with tons of cool kits as well as tutorials.
The Notes and Volts tutorial is for a USB connection, 5 pin is possible but rather tricky and involved.

Good luck.
User avatar
By Ultros Sat May 08, 2021 1:45 am
If you're ok with c / linux you can acheive it through the midi device nodes in /dev/snd/. Open a node for read/write, write to it via code. How you chose to attach your controls to the midi device hook code below is up to you.

Code: Select all#include <unistd.h>
#include <fcntl.h>
int main(void)
    int filedesc = open("/dev/snd/midiC2D0", O_WRONLY | O_APPEND);
    if (filedesc < 0)  return 0;

    char msg[3]={ 0xFF, 0x01, 0x7F };
    write(filedesc, buf, 3);
    return 0;