To preface, I am getting into Arduino because I want to make this instrument, so I am looking for advice on sensors and such to look into. I am hoping to be pointed in the right direction and do additional research.
I want to build an electronic/MIDI concertina, which is a small musical instrument similar to an accordion. It has buttons on either side with a bellows in the middle which pushes air through the reeds that correspond with which buttons are being pressed.
I need help with choosing sensors and general approach to the project.
There will be approximately 50 buttons total that will play different notes, however the sound will not be produced unless the sides of the instrument are pushed in or pulled out. This will simulate the bellows but I don't want it to have to use air pressure like the real instrument does. The faster the sides are pushed/pulled, the louder the notes will be.
I need a sensor that can measure speed and direction on one axis only. I was originally looking at accelerometers, but I am afraid if I shake or move the whole instrument, it will register and make noise. It should only register if the 2 sides are being pushed together or pulled apart.
I would like it to be portable, but I want to be able to plug into a computer to change the note each button makes and change the sound played, as well as recording MIDI to the computer. Is there a prebuilt synthesizer/midi interface that could do this?
And finally, with nearly 50 buttons total, what boards could handle this many inputs and what buttons would you suggest?
Maybe this thread would be useful regarding how to manage a large number of inputs... How to monitor state of 50 Digital Inputs. I think this will be your biggest challenge.
As for the bellows part, maybe you could you a proximity sensor to detect the distance to the other side... then calculate speed based on the changing distance over time?
As for changing the notes... maybe a simple interface with the serial monitor to accept new note information.. and then store that in the EEPROM so it is not lost when powered down.
Almost any Arduino board. You don't have to have one pin for each button.
You can use an 8 by 8 switch matrix or 7 input shift registers, or any number of different port expander chips.
If you use the Leonardo of the Micro then that can be made to connect to the computer as a MIDI device.
As for the sensor for the bellows, in addition to @Paul_B 's suggestion you could also use a flow meter to see if it is sucking or blowing.
Then you can use a "time of flight" distance sensor inside the case to measure how far apart the two ends are.
Which is why I suggested a matrix, or shift registers or port expanders. All these would give you a polyphonic capability.
The OP was worried about what processor could cope with that many input pins. I said that any processor would.
Thank you all for the input.
The reason I don't want to have bellows is because I am trying to make a more portable version that can fold up very small a doesn't require maintenance/repair when the bellows start leaking. I am not necessarily looking for an authentic concertina feel.
Doing a little noodling around google with absolutely no knowledge of compatibility or anything, I came across a magnetic linear sensors like AS5311 Linear Sensor. Does anyone have any experience with something like this? Or am I way off?
Sadly way off because the range of these sort of things is quite short.
Why are you rejecting the use of a time of flight distance sensor? It seems ideal to me in a closed space and any bellows would not have to be air tight at all.
If you want it to be very small have you considered using load cells to measure the pressure on the sides? - in principle they dont NEED to move at all and that would give you a very "thin" "concertina".