I've been using a Komplete Kontrol S25 for a while now and I absolutely love the ribbon touch strips it has for pitch bend and mod. I've gone through quite a few MIDI controllers that had wheels for pitch and mod, and those wheels are the first thing to break. I use pitch and mod quite a lot particularly when I'm working on sounds in Serum. The Kontrol S25 is nearly perfect for my needs except for one thing: it's HUGE! It takes up a lot of desk space mostly due to its 25 keys of which I use maybe one or two. Especially now with quarantine and months-long WFH, I'd like to free up desk space.
So, I decided to build my own MIDI Controller using Arduino. I've never used Arduino before but was encouraged by the metric ton of resources that are available for free. I used this Instractable to teach me the basics of Arduino coding and wiring, then wrote up some specs.
This MIDI controller (let's call it Project Alphonse) will have the following components:
(x2) 485-178 Adafruit SoftPot ribbon sensor 100mm
(x2) 474-SEN-09375 SparkFun force sensitive resistor
(x2) 474-COM-14622 SparkFun rotary pot 100k ohm x 2 (I might have purchased the wrong ohm here.. may need to reorder)
Arduino Due
The two ribbons will be for pitch and mod, the FSRs will be to trigger note on and deliver velocity, and the knobs will be just for fun.
I purchased all of the components (minus the Arduino) from Mouser.
I acquired a breadboard and some jumper cables to use for my learning and testing portion of this project. Because I am learning from scratch I'll want to make sure all of my ideas and wiring works before I solder it and place it in some housing.
The connections took some trial and error to figure out (getting a proper linear output was more difficult that I expected) so I'll need to draw up a schematic so I don't forget where I need to place my resistors and which ohm type they need to be. During this phase I had to have the Arduino connected to my computer and outputting a log to make sure I was receiving useful values based on my input.
So far I've successfully connected one ribbon and am able to get a linear output of values from 0-127. When I lift my finger from the ribbon, it stores and outputs the value that it was last set to by my input- just like how mod wheels work. Here's the code I've smashed together to execute this:
I will be able to re-purpose the wiring for the pitch ribbon, which works out great without any additional code support because the resistor forces the voltage down to 0 when the pot doesn't receive input.
Next step is to make sure the the value the ribbon is outputting is able to be consumed via MIDI in a DAW. I still have some learning to do in this regard and will be using this Instructable as a guide. I'll need to set up Hairless MIDI to test the connection from my Arduino to DAW to test the Mod setup I have so far.
This is a work in progress so stay tuned!
Update 8/19/20
I've installed LoopMIDI and Hairless MIDI, and now have a successful communication of MIDI data from the Arduino to my DAW.
LoopMIDI is necessary on a Windows OS to open a virtual MIDI port that I can select as a device in my DAW. It allows me to name the port so I've dubbed it "Alphonse".
Because I am not using a MIDI library or firmware on the Arduino, I am outputting serial data rather than MIDI data. To turn that serial data into MIDI data I need the Hairless MIDI app. In the app I select my Serial port (the Arduino device) and select the MIDI in/out port as the virtual port I've opened with LoopMIDI.
From this point I need to update my code to write serial data and to do so using proper MIDI byte data. Writing to MIDI I need to send a byte that contains (command, data1, data2).
Right now I just want to send Mod data. Mod is a standard Continuous Controller that has a preexisting assignment of the value 1. The MIDI command byte for Continuous Controller is 176, so my byte will be (176, 1, [ribbonvalue from 0-127]).
I ran into an issue where I uploaded this code, set everything up with Hairless MIDI, and nothing happened. It turns out I was running the Serial Monitor out of habit to read the log, and that was consuming the port so that it could not be accessed by Hairless MIDI. Closing the Serial Monitor window resulted in a successful connection. Now I am able to load up a synth VSTi, press on my ribbon, and see the mod data come in!
Next step is setting up the pitch bend ribbon. The connections on the breadboard will be exactly the same as the mod ribbon, but I will need to write slightly different code to get the correct value that works within the pitchbend paradigm.
Stay tuned!
留言