Good day,
I know this is a frequently talked about topic, but I still hope someone can guide me/give advice.
My question is regarding many inputs/outputs based on push-buttons/LEDS/music keyboards for a virtual pipe organ (VPO) project I am busy with.
I want to use an UNO board to interface between a physical setup (push-buttons/LEDs) and music software on the PC. For this, I need to relay MIDI messages to the program (generated based on push-button prompts.
I want to use approximately 100 momentary pushbuttons with LEDs to act as "organ stops" for the project. By pressing a button the code needs to read the button press and generate a corresponding MIDI message (note on/off), this message is interpreted by the software (activates a setting) and returns a MIDI message that the Arduino translates to turn on the corresponding LED. The "tricky" bit here is that the button and LED should not function as one, i.e. I need to be able to control the LED state independently from the button press because changing a setting in the software (via a mouse click or something similar) requires a change in LED status (the software will generate the required note on/off message).
I have managed to get the above setup working perfectly for a test system containing only 5 buttons and LEDs (using the MIDI.h library for the midi functionality). The code perfectly interfaces with the buttons, LEDs and software with no issues at all (proof of concept). My only question is how do I scale this up to handle the multiple inputs/outputs (100 each)?
In short, I would like to have 100 button inputs as well as 100 independently controlled LED outputs. I want to be able to press multiple buttons and/or light multiple LEDs simultaneously if at all possible.
Should I use shift registers for each, and/or also use two different Arduinos for the inputs and outputs? I think the independent nature of the buttons/LEDs would work with two Arduinos if one cannot handle both
Any advice would be appreciated.
Regards,
Gees