Memory use approach

Hello Everyone! Best regards from Chile!

Hope you can help me!

i'm currently designing a program that considers 32 "memory presets" where the user may define data for turning on several relays, turn on leds, show names on a LCD 16x2, and send MIDI messages (PC,CC on different channels). This data is contained on a struct type variable of 30 byte length for each one of the 34 preset.

If i multiply, i would need 960 bytes to store all the info. The fact is that i need to write this on the EEPROM of my Arduino Nano which has a size of 1024 bytes.

Since i'm only working with those 960 bytes, no other variables are going to be written on the EEPROM, is there a problem to work like this, on the limit? Would be better to use an external EEPROM or FRAM i2c module?

The main goal is speed. When the user press a button, all the 30 bytes data associate to the current memory preset is sent to their different task. So i'm affraid that working with external memory and reading that data will be slowler than use internal memory. (I cant find those modules on my country, i must import them)

So, i would like to know what is the best approach to develop this. Read at the beggining all the 960 byte data and store on de SRAM (only 2k bytes available)? or just work the program with addresses and constantly read from the EEPROM or the i2c external Memory? I think that the first choise, would be faster but i will be using inmediatly the 50% of the available SRAM.

With speed, im mean that there is no perceptible delay betwen the user press a button and the relays de/activate, the leds de/activate, midi messages are sent. nothing more fast than that. No other complex operations are made besides digitalwrite on pins, serial write for midi.

Please excuse my poor english. Hope you can understandme!

Thanks so much!

960 is less than 1024 so you can use internal EEPROM without any hesitation. Surely, reading from EEPROM is slower but why not to try in real if it is fast enough for your program. However, you can use all available RAM. Just program must not ask more, never!

Finally, human sense for reaction is not critical concerning the task you are described, <1000x by the eye. In other words, Nano is fast enough to serve LCD, few buttons and relays.