Need advice: What storage to use for program data

Hi all,

I'm planning to build a rather large Arduino Uno project. Its a Midi mapping device with a LOT of parameters.
The device has one Midi input (and a thru) and 4 Midi outputs. For each output filtering, detection, transformation and dispatching options can be specified. I am in the process of working out the details of the data (structures) so I don't know a specific size yet...

Because of the real-time aspect (Midi message processing) I think I need an optimized in memory representation of the actual parameters to use. The settings need to be stored across user sessions (power off).

I think I need a generous amount of storage to store multiple lists of mapping settings. I don't want to use the built-in EEPROM because of its writes limitation. Perhaps a battery powered static RAM chips is a better idea?

My question to you is what should work best?

[I hope my little story is clear enough, of not, just ask.]

Thanx,
Marc Jacobi

The internal EEPROM write limits should be of little concern unless you plan to update the parameters very frequently. The size could become a problem instead, if the number of parameters gets really high. I suggest you start with the eeprom to keep things simple. You can later switch to an external eeprom or even an sd-card.

Although its not exactly what I'm looking for, I came across this which is - if you have an Arduino Mega- pretty cool

http://ruggedcircuits.com/html/quadram.html

The quadram needs battery backup to maintain data - you could add a routine to transfer data to EEPROM, and then power down.
Reload parameters from EEPROM to the quadram upon power up.

ie. FM25V20 or FM25H20, 256kBx8 nonvolatile, SPI, 8pin..

I came across the micro SD Card shield which is pretty cool if you want to work file based and for instance swap files with your computer.

I found a nice external I2C EEPROM that has 32k byte (256kbit) and has a million writes. The 24LC256 - its pretty cheap (the 400khz that is). I think there is also a 24LC512 that has double the memory address space as the 32kb one (64kb) - that is the same size as my first home computer! :D.

(this guy is a little talkative, but interesting nonetheless - 3 parts)

Advantage of an external EEPROM over the internal one is that if it brakes, you can easily replace it. Its also capable of a lot more writes. And with the I2C serial bus it doesn't eat up that many pins on the main board.

Thanx for your suggestions.