MIDI controller

Hello, I'm starting to work on a project but before I keep on developping and prototyping I need to know if it is feasible, and what the requirements are (I'm learning).

My project is to create an Arduino Uno based MIDI controller that would allow me to send MIDI data from analog sensors such as LDRs and pots, and switches. I would like many of them (4 LDRs, 1 slide pot, 4 rotary pots, 4 buttons, and a tact switch to toggle various modes. I want at least 5 LEDs but 6 would be better, I also want to be able to implement a LFO later with the same circuit, if possible.

So far I listed 9 analog inputs, 5 digital inputs and 6 or 7 digital outputs (including MIDI out). I ordered a couple of 74HC595 shift registers to learn how to light several LEDs with few pins but I wanted some advice about the other features:

  • What are the best ways to expend the number of in/outputs?
  • Can I use all the PWM pins if I use a timer?
  • Is it possible to send MIDI data fast enough when reading from 14 inputs and writing to 6?

So far I've made a script that allows me to read a LDR, toggle between 3 modes (continous reading, freeze and calibration), I soldered a Pico Paso.

I know I need now to learn about:

  • the MIDI protocol
  • timers (for the LFO)
  • reading from many analog sensors (I read from 8 switches using a 4051 but I didn't try with pots yet)
  • soldering wires to components (I've only soldered on PCB)
  • choosing an enclosure and components after the prototyping stage

Anything else I didn't think of?

Thanks in advance, this is my first Arduino project and I start with no knowledge in electronics and very little in coding :stuck_out_tongue:

By the way I started a blog about this project if you're curious, I thought it would be fun to share the Arduino experience of the noobest beginner :slight_smile: http://yanghttpout.blogspot.com/

Thanks for any help!

Can I use all the PWM pins if I use a timer?

You can use the pin but not in the PWM mode. Each timer controls two PWM pins.

What are the best ways to expand the number of in/outputs?

A port expander like a MCP23S17. The hardware can monitor 16 inputs on just one output making looking for a change easy.

Is it possible to send MIDI data fast enough when reading from 14 inputs and writing to 6?

Yes.

Have a look at some projects like:-
http://www.thebox.myzen.co.uk/Hardware/Pendulum.html
http://www.thebox.myzen.co.uk/Hardware/MIDI_Footsteps.html

Grumpy_Mike:
You can use the pin but not in the PWM mode. Each timer controls two PWM pins.

That's a lot simpler and clearer than anything I could read! (though I have read a lot and might have lost focus at some point...)

What are the best ways to expand the number of in/outputs?

A port expander like a MCP23S17. The hardware can monitor 16 inputs on just one output making looking for a change easy.

Sounds interesting! One more thing I have to learn about...

Have a look at some projects like:-
http://www.thebox.myzen.co.uk/Hardware/Pendulum.html
http://www.thebox.myzen.co.uk/Hardware/MIDI_Footsteps.html

Thanks for the help!