I'm looking to build a MIDI controller from some hardware I've salvaged, which includes 30 non-latching buttons and 30 LEDs. I'd like to base the system around an Arduino board (specific type TBD depending on IO requirements), and from looking at the specs of various boards I can see that I'm going to need to do some IO multiplexing or expansion in order to make use of all of the buttons and LEDs.
I'd like to be able to press multiple buttons at once, to enable things like holding down one button to change the function of other buttons, but I haven't managed to find any input multiplexing options which will support this. Could you point me towards some multiplexing methods or multiplexer/IO expander chips which would enable this sort of functionality?
As I'm very early on in the research/design process, I'm not wedded to any particular methodology. I'd just like to find out how feasible this is so I can point my design process and microcontroller selection in the right direction.

matrix keypad diodes... ask question here if something is unclear \$\endgroup\$change the function of other buttons... that's not done in the keypad \$\endgroup\$