I want to built a midi controller for a synth and I'm not sure, if arduino is the right choice.
The controller will have:
1 40x4 lcd display
2 midi jacks
The display should show various parameters for the knobs (like shape, Mod. source, etc) and turning the knob should send midi values over the midi jacks.
Here is a picture of it:
Is arduino the right choice for it? Can I connect so many knobs, etc. to 1 board? I looked at the arduino leonardo board and it has 20 inputs… How can I connect 12 knobs and all the other stuff to it?
And is the arduino fast enough to send instantly midi values?
And can I save enough information on it? I want to save 1000 int values (100 presets x ten parameter values) and some text (100 x 10 letters for the preset naming + menu text etc.).
As you can see, I'm not familiar with arduino. but I think I won't have any hugh problems with it, as I'm a software developer.
Thanks in advance!
I believe that the Arduino is capable of doing what you want. Since you have so many inputs, I would look into using Shift Registers; you can get away with only using a couple pins to read data from many inputs. So with 12 potentiometers and 4 buttons (16 total inputs), you could use two 8-bit shift registers or one 16-bit shift register. Then you could use an LCD shield, which should use the I2C pins on the Arduino (serial communication). And for the LEDs, since you still have a lot of outputs left over, you could simply use 6 outputs, or again, use another Shift Register for the LEDs.
As far as speed goes, I believe it would be fast enough for most applications. I imagine that with MIDI, you need to be pretty fast, so any type of latency could be bad. The good thing is, that using Arduino is relatively cheap. Building a prototype won't cost you more than probably $70. However, you could, at first, just get the Arduino board, and write a program to spoof the MIDI values you are outputting.
As far as storage goes, I am unsure about the best way to do it. I have an SD Card Shield that I can read/write files to, but it may be overkill if all you need are stored variables. You could look into using an EEPROM data storage module as well. I'm afraid I'm not much help in this department though.
Are those knobs potentiometers or rotary encoders? If they are potentiometers, you can use an analog multiplexer or two to read in their values. If they are rotary encoders, you can use shift registers.
Oh, if you want to do it with one arduino, get an arduino mega. It has plenty of pins to do all those without any extra hardware.
Ah, thanks for the correction liudr.