The BIG Arduino MIDI controller thread

Home :: Reviews of DJ equipment :: The BIG Arduino MIDI controller threadReply
The BIG Arduino MIDI controller thread
Posted on: 14.12.2010 by Arcelia Siebeneck
Seen a lot of people on here talking about setting up a midi controller based on Arduino recently so thought it might be an idea to get all the relevant information collected into one thread.

Here's some useful links:

This is the Arduino basic tutorial on how to get midi up and running: http://arduino.cc/en/Tutorial/Midi
This is some Arduino code that will get 8 potentiometers working:
http://little-scale.blogspot.com/200...i-cc-data.html

video of it in action:
http://www.youtube.com/watch?v=X7wJDpk_yoA
This is a thread with Arduino code to get 6 potentiometers working: http://www.arduino.cc/cgi-bin/yabb2/...num=1165833586
Here is someone who built a basic Traktor arcade controller using Arduino (includes code): http://www.arduino.cc/cgi-bin/yabb2/...num=1282913420
Quite an insightful thread on getting a midi controller working and discussion of analogue multiplexers: http://www.arduino.cc/cgi-bin/yabb2/...num=1264607305
48 analog inputs/digital inputs/digital outputs (in combination): http://mayhewlabs.com/arduino-mux-shield
Olimpia Briden
12.02.2014
Hi Paradajz, I actually am not surprised by how much the values fluctuate at all :-) That's why I introduced such a large value in there, it essentially lets the code work itself it by the natural fact that we need a 7bit value from a 10bit value, that's instantly 3bits of noise we can discount

I should clarify about my code too, whilst I'm not using delays, I'm also not getting any issues at all, I'm using all of the available GPIO, so I'm getting 16buttons, 2 pots and 2 encoders on here atm, I haven't put any delays in the code but there is a small debounce value for the buttons, everything else, the code is just rock solid. I have no problems 'wasting' cpu cycles, it's really not an issue, they're not wasted at all, as they're not being used for anything else, they're free, it just means my code is running efficiently, if I need to thin things out I can easily add a 1-2ms delay in there but it has been entirely unnecessary to do so and if I really need to I can use interrupts. However, the original code that was posted here, the poster is only using 3 pots and nothing else :-) Although having a mega and 54 pins to mess with, I'm guessing he's going to put a lot of stuff on it, in which case, it would be be simple to put the encoder on a couple of interrupt pins.
Lavelle Wielgus
12.02.2014
Ok, so this was really helpfull! I tried the code from ReggieUK and it works flawless! Easy to understand commenting as well.

paradajs, I have seen your project before but didn't find the code I believe. Or maybe I found it but thought it was to complex for me at the time. Right now I'm trying to figure out how your leds work. And when I get my own leds to work, I'm pretty much done! After that I will probably post the final code and some pictures!
Nathanael Yerk
12.02.2014
Originally Posted by ReggieUK
Did you read my code? Because I don't divide by 8 anywhere, I don't need to. I have a hysterisis value of 8 which I compare against the result of doing an abs() on lastVal[i] - tempAnalogInput, try the code, check for yourself. I am not arguing with you over this, I'm telling you, it works rock solid.
Ahh, sorry I haven't noticed that. However, you would be surprised how those values can change rapidly, even +- 8, so just because you haven't run into issues yet doesn't mean you won't (I've actually used that same method quite some time ago and it started to give me troubles when I started to add more components to circle). But if it works, all is fine.

Originally Posted by ReggieUK
I also added code for rotary encoders that doesn't need delays or interrupts either.
That is very bad practice. By constantly polling the values from pins on which encoders are connected you waste your CPU cycles for nothing. A couple of years ago I was working on project, also MIDI controller with 2 rotary encoders, 31 potentiometer, 27 LEDs and 48 buttons. Method for reading encoders wasn't using any interrups and my code would "hang", that is, LEDs would start to flicker, pots started changing values etc. Why? Because I wasted so much time on those encoders that code simply couldn't do everything I wanted on time. Using interrupts, you handle encoders only when there is actual change on them, not all the time.
Olimpia Briden
12.02.2014
Not sure what your point is, have you actually tried my code out? It's ROCK SOLID and you clearly haven't understood how it works.

1014
1015
1019
1014
1020

is an irrelevant scenario, since none of those numbers are greater than 8 from each other so the actual 7bit CC VALUE WON'T change!!! Did you read my code? Because I don't divide by 8 anywhere, I don't need to. I have a hysterisis value of 8 which I compare against the result of doing an abs() on lastVal[i] - tempAnalogInput, try the code, check for yourself. I am not arguing with you over this, I'm telling you, it works rock solid.

This code is actually extracted from my own adaptation on the instructables 'midi arcade controller', I had to rewrite the analog handling section completely, it also tried to use a 'divide by 8 method' which sucked hard, which is entirely why I rewrote it. I also added code for rotary encoders that doesn't need delays or interrupts either.

A delay in that code might be useful, a cap also might be useful but in the current iteration of code, it doesn't at all.
Nathanael Yerk
12.02.2014
Originally Posted by hoogasv
Though it would be nice if someone posted a new code example with some pots and buttons that works with traktor. It can't just be me who is having trouble with this right? Or, maybe. Anyway, I hope you are willing to help and if not then it's fine.
Check out my Tannin project:

https://github.com/paradajz/Tannin
http://community .djranking s.com/showthread.php?t=78521
Nathanael Yerk
12.02.2014
Originally Posted by ReggieUK
I've had to deal with this myself recently on a leonardo, the issue here is that the analogue inputs will have noise, so what you have to do is introduce a method for filtering out that noise and only outputting real movement. First things first, make sure that all other unused analog pins are tied to ground, that will get rid of some noise.
Yes, but also it's not a bad idea to put 0.1uF cap between AREF pin on your Leonardo and GND.


int16_t tempAnalogueInput; // we use this to take the current reading from each pot
There is no need to define this as global variable since you're using it only in loop while checking pots.

That's about all you need really :-)
Not really. Imagine this scenario. Your pot values are 10bit. So for instance, they start to jump around these values:

1019
1020
1021
1023
1019

By dividing that with 8, you will get stable 127 MIDI value, so no issue. But, picture this:

1014
1015
1019
1014
1020

What happens here? Your code will start sending a stream of messages - 126,127,126,127. You haven't done anything in your code to prevent that.

It is also a good idea to delay the reading of analogue pins by 1 or 2ms (but NOT by using delay), to actually make a pause between each reading to allow the pot to stabilize a bit.
Sunny Falconio
12.02.2014
That looks good i guess.
Olimpia Briden
11.02.2014
I've had to deal with this myself recently on a leonardo, the issue here is that the analogue inputs will have noise, so what you have to do is introduce a method for filtering out that noise and only outputting real movement. First things first, make sure that all other unused analog pins are tied to ground, that will get rid of some noise.

As for the code, I would start by setting up an array containing the pin numbers that you want to read and a couple of variables to store the last reading you took and the current one. so it will look something like this:

#include <MIDI.h>
// define the number of pots you want to use here, then all you have to do is change this if you want to add more
#define NUM_POTS 3 // make sure you change the analogueInputMapping array below
#define MIDI_CC 1 // use this so that we can set a base CC value and change it later
byte analogueInputMapping[NUM_POTS] = {A0,A1,A2}; // put the pins you want to use here
int16_t lastVal[NUM_POTS]; // We use this to store the last value that wasn't noise here
int16_t tempAnalogueInput; // we use this to take the current reading from each pot

void setup(){
MIDI.begin();
Serial.begin(115200);
for (i = 0; i < NUM_POTS; i++)
{
// Set the pin direction to input.
pinMode(analogueInputMapping[i], INPUT);
}

}

void loop(){

for (i = 0; i < NUM_POTS; i++)
{
// Read the analogue input pin
tempAnalogueInput = analogRead(analogueInputMapping[i]);
if (abs(tempAnalogueInput - lastVal[i]) >= 8) { // check that it's a real reading and not just noise on the 10bit value
lastVal[i] = tempAnalogueInput; // make sure we keep a record of the last real reading we have taken
MIDI_TX(176, MIDI_CC + i, tempAnalogueInput >> 3); // shift our 10bit value to 7bits, then output it as a CC
}
}

}



That's about all you need really :-)

Essentially, all the magic happens in a couple of lines, this is the first one of note:
if (abs(tempAnalogueInput - lastVal[i]) >= 8) {

At that point we've taken a reading from the analog pin, so we compare the reading with the last reading (which will be initialised to something random, it doesn't really matter) essentially, if the new reading and the last reading is +-8 or bigger, then it's a real reading, the code will store the current reading into the last reading variable, output the midi message and continue through the for loop. It should be noted that the value 8 should not really be changed, if you do you'll probably get noise (random midi messages) or you'll thin the data out and won't get 0-128 in single steps.

the 2nd line of note is the actual MIDI_TX command:
MIDI_TX(176, MIDI_CC + i, tempAnalogueInput >> 3);

Specifically this 'tempAnalogueInput >> 3' what that does is converts our 10bit analog value into 7 bits by shifting it 3 bits, which gives us a nice 7bit value without needing to do any maths.

The code is super simple, doesn't need any delays and as long as you've tied all the unused analogue inputs to ground, it should be super clean, fast, with full 0-128 range from top to bottom and it is easy to expand, just change the NUM_POTS value and add the pin numbers to analogueInputMapping array.

HTH.
Lavelle Wielgus
03.02.2014
Hello everyone!

Firstly I just want to mention that I'm completely new to community s so if this is posted wrong in some way, please delete my post or tell me what to do instead.

I recently bought myself an arduino mega and wanted to build my own MIDI-controller. But I found it very hard coding it so it works with Traktor pro 2. I have looked around on the internet, including this thread (though not every page) and all code examples I find are either outdated or doesn't use the MIDI lib. I'm testing bit by bit and so far I have managed to compose a code that works with two pots. It's when I try to add a third pot that the assigned knob in traktor starts to wobble back and forth and I'm not able to control it. I have tried to use other pots and changed analog inputs but I'm fairly sure that it's the code that is failing. Below is the code I've used when I tried to make it work with three pots. This is code that I have copy-pasted from other websites and then gone for some trial and error. The code is not really commented since I barely know what it actually does.
I use "loopmidi" and "hairless midi->serial bridge" to convert the signals.


#include <MIDI.h>
int potPin0 =0;
int potPin1 =0;
int potPin2 =0;

void setup()
{
MIDI.begin();
Serial.begin(115200);
}

void loop()
{
potPin0 = analogRead(0)/8;
MIDI_TX(176,1,potPin0);
delay(10);

potPin1 = analogRead(1)/8;
MIDI_TX(176,2,potPin1);
delay(10);

//this is the third pot I've added. without this one it works.
potPin2 = analogRead(2)/8;
MIDI_TX(176,3,potPin2);
delay(10);

MIDI.read();
}


void MIDI_TX(unsigned char MESSAGE, unsigned char CONTROL, unsigned char VALUE)
{
Serial.write(MESSAGE);
Serial.write(CONTROL);
Serial.write(VALUE);
}


//END OF CODE

This is just a small problem since I have to make some arcade buttons and leds work too but I'll try to figure that out myself. Though it would be nice if someone posted a new code example with some pots and buttons that works with traktor. It can't just be me who is having trouble with this right? Or, maybe. Anyway, I hope you are willing to help and if not then it's fine. :)
Olimpia Briden
28.01.2014
Thank's Paradajz, it's all good thanks, it's a simple arduino leonardo board, I've got header pins in the sockets so that I can use female header wires to plug straight in. The issue wasn't with stability, it was to do with how the code was setup to cope with false readings and also how and when it converted from 10bit to 7bit.

Essentially, they applied the hysteresis to the 7bit value and had a misplaced || (or) in an if statement. so no matter what you did, it wouldwobble because the errors had already crept in.

It was all fine once I'd taken a look at how they were doing it compared to how it should be done and rewritten the code
Nathanael Yerk
25.01.2014
Make sure your voltage for analogue stuff (pots) is stable - if you're doing this on PCB make sure you use ground planes. Separating ground from digital planes is also very good idea.
Olimpia Briden
25.01.2014
I fixed another issue today in the instructable code, basically, with the fader moving at slow speeds, it was liable to wobble between values, even though the code (not mine!) had originally been written to mitigate just this situation.

I've cut the analog code down from about 40 lines to 6 and the analog inputs are now smooth as butter no matter how fast/slow they're moving :-)
Olimpia Briden
23.01.2014
Things have moved on a little since my last post, I haven't had a go at finishing the midifighter 'proper' but I did complete a clone unit from the instructables for my son using an arduino leonardo, I had to use the 'arcore' arduino cores to add usb midi support, it only has raw midi data input/output, so I added a couple of commands in there to make things much easier (sendNoteOn, SendNoteOff,SendCC).

I also added midi input via serial, this makes it super simple to expand a unit with anything that can output midi via serial, essentially, it allows you to add another arduino midi controller and only use a single usb socket, I can now add, for instance, an arduino atmega1280 running some controller software which would give me another 50 or so digital inputs and a load more analog inputs. With the number of IO available, you could easily implement a very comprehensive traktor controller.

The only thing I haven't added is LEDs, at the moment I have 16 buttons and 4 faders + 1 spare pin (3 if it doesn't use serial-midi), it might be possible to add addressable LEDs but for the time being I'm going to wait, I have some other neat ideas for leds :-)

I'll post some pictures and a detailed list of things you'll need in the next day or so, my case is really simple, I just used 4pieces of 3x3/4" pine, using pocket holes to join them together nicely, 2 pieces of 4mm ply wood to act as the base and the bezel. I used a 30mm holesaw using 4cm apart centres to mark out the holes for a 4x4 grid for the buttons, the extra space either side of the buttons accounts for the button surrounds.

I cut out the slots for the faders using a scrollsaw and then a simple set of needle files to get them wide enough.

The total cost of the unit has worked out at around
Olimpia Briden
11.01.2014
Here's an instructable for a relatively simple usb to midi controller using either an arduino uno, teensy 2.0 etc.

http://www.instructables.com/id/Arca...DI-Controller/

best of using either a teensy 2.0 or uno with this software as it's got native usb-midi support, you can hack in support for a leonardo but it requires https://github.com/rkistner/arcore to be added to the arduino IDE + some code changes to get it working.

I've just built myself a controller using the above software and an arduino leonardo, very simple indeed to have 16 buttons and 6 faders. I haven't put any leds on it but I don't see any reason why you couldn't use some addressable rgb leds, the ws2812 LEDs only require a single wire :-) It's pretty cheap to build too,
Patsy Klapman
09.12.2013
im about halfway through the build now, so heres some pics if you all want to see! DSC_0064.jpgDSC_0082.jpgDSC_0054.jpg
Olimpia Briden
17.10.2013
It's been a little while since I posted anything but things are marching on, I started off with everything on breakouts and designed PCBs for those breakouts to plug into, I've now designed some boards to build the modules directly, whilst I've been doing that I've been exploring techniques for soldering (by hand, hot-air, solder paste), etching, tinning and next week, SOLDER MASK, zomg!!!!

I must stress at this point that the chemicals used in making PCBs can be seriously bad for your health if you don't handle them correctly, I used safety glasses, protective gloves and face mask while doing all of this.

Yesterday I etched a design for the smallest pitch chip that goes to make a midifighter, it was a tssop-24 tlc5928 for the leds, my first time and it was a success and means I can hand etch traces down to at least 0.012 of an inch :-)

It's all gone quite well so far, some things haven't gone quite as well as I'd hoped but there haven't been any show stoppers, with a little bit of luck I should have quite professional looking boards out of it.

The biggest success has been the 'dexrin' coated paper (
Olimpia Briden
01.10.2013
I'll do some quick documentation of what I'm up to here but eventually I'll do something much better. Over the weekend I made a simple mdf box, 19mm thick and big enough to house at least 2 midifighters + space for extra knobs, buttons and faders for the expansion port. I may or may not actually put 2 in there but as the mdf was just scrap, I thought why not :-D In the picture below you can see the top of the box where I've attacked it with a 24mm holesaw, the first couple of holes were a bit out but for my first time cutting loads of holes with a holesaw, it all looked pretty reasonable in the end.

Onto the breadboard, I've labelled all of the major circuits so you can see how simple it is to lay it all out. You've also probably noticed all of the little green 'breakout' boards, the atmega 32u2 and the accelerometer board were pre-built but the 2 in the corner I had to solder the chips on myself, for anyone that doesn't know, it allows me to use surface mount chips on 0.1" 'through hole' PCBs and breadboards. They're also fairly cheap, usually $1-2 a piece, so you don't necessarily need to be able to etch very small pads to use surface mount components in your designs. fyi. the mcp3004 is narrow SOIC-16, 1.27mm pin pitch, the tlc5928 led driver is tssop-24, 0.65mm pin pitch.

The accelerometer was something I added for giggles, I hooked an axis to the mcp3004 analog input chip and as the accelerometer is analog I get a response from it, unfortunately it needs some attention to turn it into something usable but I'm sure it won't take too much code to make it work :-)

I've decided that I'm going to do the first version on separate PCBs, I've designed the PCB for the button inputs, the 74hc165 chips I got were through hole, so they're easy to do, the other chips on the board are simple enough apart from being very small, not necessarily the easiest things to make PCBs for by hand, so as I want to be able to share this project with anyone that can handle a soldering iron, I believe the other PCBs will use breakout boards plugged into them. I will probably do smt versions as well but I want to focus on making it easy to start off with.



30092013248_sml.jpg
Olimpia Briden
28.09.2013
I got my leonardo and teensy 2.0 boards this week, I currently have the leonardo hooked up to a 3" trackball with about 8 lines of code (using a couple of libraries).

The leonardo was about
Keli Vandenbergh
27.09.2013
Originally Posted by ReggieUK
Although, for anything more than just an arduino and some buttons, you'll probably end up doing some soldering no matter what.
The Dub funny side of things...
Aundrea Fricand
15.12.2013
This is a cool thread any instructables on the thread?
Patsy Klapman
09.12.2013
im about halfway through the build now, so heres some pics if you all want to see! DSC_0064.jpgDSC_0082.jpgDSC_0054.jpg
Patsy Klapman
25.11.2013
For some reason my last post was not accepted by the moderators, im assuming because it was not useful. My bad.
I am building a midi controller for traktor just now and have finished the basic code, its an extremely simple code with a modular cut and paste system, the plan is to release it in the next couple of days with full documentation, so that people who cant understand arduino code can still easily build controllers.

My question though, in order to get my pots to send clean messages that didnt flutter i had to create a threshold of 2. Meaning that the pots only have a 64 step resolution, its fine for effects and stuff but not ideal. Did any of you have the same problem and if so, how did you overcome it?
Patsy Klapman
24.11.2013
hi all, just wanted to weigh in on this thread ive been following for years now! i recently started building my own arduino mega based controller, with a mux sheild and some arcade buttons, i will post up pics when i start the actual construction!
for no though i am just working on the code, im a total programming noob, like seriously never programmed in my life before, and yet i have made a modular code, with "blocks" of functions that can be copied and pasted, with a "mux sheild block" that goes before the function "block". in this way it is long and un elegant but extremely easy to understand and modify, i want to post if for all the super noobs, who like me may have been regretting buying an arduino because the coding is too hard.

i just want to guage interest in this at the moment, before i go posting a full build log!
Olimpia Briden
21.10.2013
In my last post I mentioned solder mask, I tried it out a couple of times over the weekend, it's a bit fiddly but for 2 attempts I'm happy with the results and confident I can get more consistent results with a few tweaks. The curable solder mask goes off insanely quickly under a cheap uv nail dryer lamp, my first attempt I left the board in for 60 seconds for the initial exposure, which was way too long, the board came out completely solid, so 2nd attempt I put it in for 30 seconds, this time I had much better results:



The board on the bottom right is my 2nd attempt, there are a handful of tiny air bubbles in the solder mask and my alignment was slightly off by < 0.5mm but the pads cleaned up nicely leaving the rest of the solder mask intact on the board. The board I used was a failed etch, so it wasn't a problem that it didn't work 100%, just above it you can see the same board with a successful etch, that's the circuit for the tlc5928 led driver board in a midifighter.

The top middle is 4 boards out of a batch of 12 rgb addressable led breakouts that have been chemically tinned, you can see 6 of them in action in the glowing tube (rolled up piece of paper) behind the boards, they look like the kind of thing you'd use for the lights on a spectra/3d.

Below that is the carrier board for my atmega32u2 board that I'll use for the midi fighter I'm building, also chemically tinned.

The board on the left is a breakout for the mcp3004 chip which is essentially the expansion port circuit on the midi fighter, that was hand tinned with solder and looks a bit cruddy because I didn't get even coverage.
Olimpia Briden
17.10.2013
It's been a little while since I posted anything but things are marching on, I started off with everything on breakouts and designed PCBs for those breakouts to plug into, I've now designed some boards to build the modules directly, whilst I've been doing that I've been exploring techniques for soldering (by hand, hot-air, solder paste), etching, tinning and next week, SOLDER MASK, zomg!!!!

I must stress at this point that the chemicals used in making PCBs can be seriously bad for your health if you don't handle them correctly, I used safety glasses, protective gloves and face mask while doing all of this.

Yesterday I etched a design for the smallest pitch chip that goes to make a midifighter, it was a tssop-24 tlc5928 for the leds, my first time and it was a success and means I can hand etch traces down to at least 0.012 of an inch :-)

It's all gone quite well so far, some things haven't gone quite as well as I'd hoped but there haven't been any show stoppers, with a little bit of luck I should have quite professional looking boards out of it.

The biggest success has been the 'dexrin' coated paper (
Olimpia Briden
03.10.2013
I've now done a handful of boards, it's getting a bit hectic though. Whilst I'm doing this, I'm also exploring different techniques, to make my life easier but also not trying to get away from my original plan which was to make a midi fighter as simple as possible for others to follow if they want to make their own.
Olimpia Briden
02.10.2013
I've now got the 2nd board design done, DRC checks passed, so that's the leds and buttons, for a simple midifighter classic, that + an atmega32u2 board are all you actually need. I'll get some test boards etched and then we can see whether I release the magic smoke or not.
Keli Vandenbergh
02.10.2013
Cool! (And sorry for the delay...)

Keep update us mate, asaic I will do my own.. Meanwhile for all of you who love arduino..

http://www.indiegogo.com/projects/ar...tions-the-book
Olimpia Briden
01.10.2013
I'll do some quick documentation of what I'm up to here but eventually I'll do something much better. Over the weekend I made a simple mdf box, 19mm thick and big enough to house at least 2 midifighters + space for extra knobs, buttons and faders for the expansion port. I may or may not actually put 2 in there but as the mdf was just scrap, I thought why not :-D In the picture below you can see the top of the box where I've attacked it with a 24mm holesaw, the first couple of holes were a bit out but for my first time cutting loads of holes with a holesaw, it all looked pretty reasonable in the end.

Onto the breadboard, I've labelled all of the major circuits so you can see how simple it is to lay it all out. You've also probably noticed all of the little green 'breakout' boards, the atmega 32u2 and the accelerometer board were pre-built but the 2 in the corner I had to solder the chips on myself, for anyone that doesn't know, it allows me to use surface mount chips on 0.1" 'through hole' PCBs and breadboards. They're also fairly cheap, usually $1-2 a piece, so you don't necessarily need to be able to etch very small pads to use surface mount components in your designs. fyi. the mcp3004 is narrow SOIC-16, 1.27mm pin pitch, the tlc5928 led driver is tssop-24, 0.65mm pin pitch.

The accelerometer was something I added for giggles, I hooked an axis to the mcp3004 analog input chip and as the accelerometer is analog I get a response from it, unfortunately it needs some attention to turn it into something usable but I'm sure it won't take too much code to make it work :-)

I've decided that I'm going to do the first version on separate PCBs, I've designed the PCB for the button inputs, the 74hc165 chips I got were through hole, so they're easy to do, the other chips on the board are simple enough apart from being very small, not necessarily the easiest things to make PCBs for by hand, so as I want to be able to share this project with anyone that can handle a soldering iron, I believe the other PCBs will use breakout boards plugged into them. I will probably do smt versions as well but I want to focus on making it easy to start off with.



30092013248_sml.jpg
Olimpia Briden
28.09.2013
Not yet, I will post some stuff about it all but I'd prefer to have more stuff to post before I do :-) At the moment I'm still at the stage where I'm deciding entirely what to do about the pcb, it's all on breakout boards on breadboard atm. There are a few ways to go about it, all have their pros and cons, but I'll know more when some breakouts that I've ordered have arrived.
Keli Vandenbergh
28.09.2013
Good news to hear, Do you have blog or some documentarion outside this community ?
Olimpia Briden
28.09.2013
I got my leonardo and teensy 2.0 boards this week, I currently have the leonardo hooked up to a 3" trackball with about 8 lines of code (using a couple of libraries).

The leonardo was about
Keli Vandenbergh
27.09.2013
Originally Posted by ReggieUK
Although, for anything more than just an arduino and some buttons, you'll probably end up doing some soldering no matter what.
The Dub funny side of things...
Olimpia Briden
25.09.2013
I believe the teensy boards and the arduino boards both have their merits. the leonardo is really just plug and play, no worrying about soldering to the board and you can pick them up for about
Keli Vandenbergh
02.09.2013
Solution for scan analog pots state
http://ardpdvj.wordpress.com/code-patches/

To have HID/MIDI without so many complication (and ipad compatibility), check arduino Leonardo. It is the first which has usb native port, no messing with FDTI or A8U...
http://arduino.cc/en/Main/arduinoBoardLeonardo

I prefer teensy boards over arduino but shields make the latest more abordable to noobs.

Peace.
Jerrell Yusef
10.04.2013
I notice a lot of messages regarding work arounds for the Arduino connecting as a MIDI device. I'd recommend taking a look at the Teensy (2++ or 3) to save you a lot of hassle. It already has the MIDI HID capability in its firmware and it is fully compatible with the Arduino library. Check it out: http://www.pjrc.com/teensy/index.html

One thing to keep in mind is that the Teensy 3 is not 5v tolerant like the arduino so if you have a 5v component look at the Teensy 2++. Theres a good tutorial for MIDI here: http://www.pjrc.com/teensy/td_midi.html
Darcy Rehfeld
08.04.2013
Here's my finished controller.

47071_10152238539255931_1846151844_n.jpg

Features:
16 x Arcade buttons
1 x IR distance sensor
1 x 2 x 2 Sparkfun button pad

The housing is just some old pine wood and MDF on top. Its a little flimsy and there's more flex in it than I would like, but its perfectly usable. The arcade buttons are a bit (OK, a lot) of a let down; I got them from Cool Components (UK) and they QA on them is obviously extremely sub-par. There's a huge amount of variation in the springs - some feel really stiff and others are almost too soft. The biggest issue, however, is that some of them bounce like crazy. Most of them work fairly consistently, but even at 100ms debounce time some still fire twice or even three times on a single press, which gets very annoying very quickly.

The sparkfun button pad is a lot more fun than I though they would be. I'll definitely be looking into using them again for a larger project (maybe a monome clone?). As for the arcade buttons; that's a lesson well learned. Stick to known good brands like Sanwa
Nathanael Yerk
21.03.2013
Originally Posted by Taxable fern
I am in almost the same position. I am mechanical, and I am building the case for a controller, but I am also working on the internals. I also have the arduino mega, and I have been looking into methods of making it an HID device.
If I understood right - you're having troubles with converting serial USB data to MIDI? If yes - this is my solution:

1) install Serial2MIDI
2) install LoopBe1 or LoopBe30
3) select the right ports in Serial2MIDI app and that's it - you can feed the MIDI data directly to Traktor, Ableton or any other software capable of MIDI learning.

Of course I would've preferered native MIDI out-of-the-box on Arduino but this works just fine.

If the answer to first question is no then just skip all this.
King Mascarinas
13.02.2013
I am in almost the same position. I am mechanical, and I am building the case for a controller, but I am also working on the internals. I also have the arduino mega, and I have been looking into methods of making it an HID device. Here are a couple things I found that others in this position might be interested in:
http://www.obdev.at/products/vusb/index.html
http://www.obdev.at/products/crosspack/index.html
https://github.com/ddiakopoulos/hiduino
Stanley Topoleski
06.02.2013
here is my bad ass arduino doodad i have been working on the past few years

<< Back to Reviews of DJ equipment Reply

Copyright 2012-2023
DJRANKINGS.ORG n.g.o.
Chuo-ku, Osaka, Japan

Created by Ajaxel CMS

Terms & Privacy