Newbie project: MIDI connector for switches and pedals

Hello, I'm new. New in this forum and completely new to Arduino, too.

I have an idea for a project, have done some research and would like advice regarding feasibility and approaches.

I have never before programmed a microcontroller, but as a software developer I'm comfortable with Java, Ruby, C, C++, JavaScript and a bit of Python. I do know at which end to grab a soldering iron, although I'm not in practice.

The project I have in mind is similar to

but without the built-in pots and switches. Instead I want to have (stereo) jacks to connect switches, push buttons, and expression pedals.

The idea is to map these inputs to selectable MIDI CCs via one of several curves (including threshold). In the special case of buttons and switches, I'd like to be able to advance through a chain of values.

All connections would have to be electrically robust against abuse such as short circuits.

Initially, the configuration could be hard-wired or read from an SD card where it's written by some undetermined external tool.

Beyond that, I have several ideas for expansions

  • USB MIDI
  • Re-mapping of CCs from MIDI IN
  • Multiple presets
  • Sysex export and import
  • Graphical display for preset names and control values
  • Web browser remote control (requires ethernet/wifi and server for app resources and web socket connection)

As I said above, I'm new to this stuff and my best hope of getting anything done is going at it one step at a time. So far, I've read a good bit in Mike Cook's very nice book "Arduino Music and Audio Projects". From that I got the impression that for the initial hardware an Arduino Due is the best fit. For the latter stages, I'm not sure whether a second microcontroller might be necessary.

I already have lots of questions about details and I'll surely come up with more. For now, I'd be happy about some general directions and advice.

Michael

Start with a simple concrete project. leave flexibility-and-generality later, after you get the hang of arduino and its capabilities after the simpler project.

Well, yes, I want to start simple. However, I don't intend to go through a number pedagogical projects. I'd like to work on my project, just as simplified as possible. I'm fully aware that I won't get to the bells and whistles for some time. Still, I need an idea of where I'd like to get further on, even thought that may well change along the way.

mschuerig:
From that I got the impression that for the initial hardware an Arduino Due is the best fit.

I just found out that the Due is apparently "retired". The same seems to go for the official ethernet shields. I think I'll take a couple of steps back and watch from the distance what boards become available.

I've read a good bit in Mike Cook's very nice book "Arduino Music and Audio Projects".

Thanks for those kind words. :slight_smile:

However I think you are better off using an Arduino Leonardo, or Arduino Micro. These can be programmed to look like a MIDI device to your computer. The number of input / output pins can always be expanded with a port expander or shift registers.

Grumpy_Mike:
However I think you are better off using an Arduino Leonardo, or Arduino Micro. These can be programmed to look like a MIDI device to your computer. The number of input / output pins can always be expanded with a port expander or shift registers.

I've never tried it, but I think that the Due should be able to do this as well: https://www.arduino.cc/en/Tutorial/MidiDevice.
But like you said, the Leonardo/Micro is really easy, and might be better to start with.

It's indeed a good idea to split the project up in smaller chunks:

  • Get MIDI working with a simple potentiometer and a button
  • Get your custom CC curves working
  • Add the jacks and external pedals/controllers
  • Add presets and a display.
  • Create some kind of interface and connection to change the presets

Instead of adding a network connection for your (preset) configuration, you could create a MIDI plugin for your DAW (or other audio software), or create a standalone application that communicates with the Arduino via a custom SysEx protocol to set the preferences. JUCE is a great way to write such a plugin/application.

Pieter

Hi Mike, thanks for the suggestion. I'm not entirely happy about the Micro, because I was hoping to use a few standard size shields (MIDI, Ethernet) at least to start out. What to make of the Arduino-brand boards, I'm not sure. Right now, most of all I'm confused by the number of options and their consequences I don't yet understand.

At any rate, your book was a good read, so far. Quite different from the enterprise stuff I usually do.

PieterP:
It's indeed a good idea to split the project up in smaller chunks:

  • Get MIDI working with a simple potentiometer and a button
  • Get your custom CC curves working
  • Add the jacks and external pedals/controllers
  • Add presets and a display.
  • Create some kind of interface and connection to change the presets

Yes, that's the idea. I expect to make mistakes and I'll have to keep the search area small, otherwise I won't have a chance to find them.

PieterP:
Instead of adding a network connection for your (preset) configuration, you could create a MIDI plugin for your DAW (or other audio software), or create a standalone application that communicates with the Arduino via a custom SysEx protocol to set the preferences. JUCE is a great way to write such a plugin/application.

SysEx export/import is unavoidable, I think. The network/in-browser config stuff got in there, because I'd like to find out how it works. I've noticed that more and more pro audio devices have that kind of remote control. E.g, the Behringer X32 mixer and MOTU audio interfaces.

What to make of the Arduino-brand boards

When I said Arduino - I meant Arduino ( U.S. ) or Genuino ( rest of the world )

Grumpy_Mike:
When I said Arduino - I meant Arduino ( U.S. ) or Genuino ( rest of the world )

That's how I understood it. It's just that things were easier for when I just had to look at boards from a single source. Presumably, the variety with several brands and compatibles is a good thing, but I can't appreciate it yet.