I am sure you can optimise it. Everything can be optimised
I would suggest looking into making something using tables, using SDRAM for the tables. That way you can offload the SRAM a bit.
Like for example you can make something for the akai midi controller, where all the parameters are send through a table and store the values there, before sending the values to it's destinations. You are using many midi inputs. Maybe you can actually do with just a single midi input, and write the data to a table, based on which cc is selected. CC1 write to index1 of the table, cc2 writes to index 2 of the table and so on. And then use table read to read out those specific value for the specific indexes. I think you can save a bunch that way too.
Anyway, its not uncommon to rebuild something, in a smarter way, once you have learned more. I have a sequencer for Pure Data that I have been working on for 4 years, build/rebuild numerous times. In the start it was functional but very badly written. So I rewrite it over and over until it worked very well