Laktica:
2x12x56 is over a thousand variables!!
That's not strictly speaking true, as I wouldn't expect you'd want to have all the patches loaded simultaneously. It is certainly 1,344 values to store, but that's an important distinction because if you offload them to PROGMEM or EEPROM, or SD card or any of these options you are looking into, there is no need to have them stored in variables. Far more likely you'd only load one patch into a single set of variables when required. Hope that makes sense.
Laktica:
Flash memory / PROGMEM, it seems you can only save to this once per 'session' so great for loading loads of pre-determined data into arrays for lookup but no good for on the fly data saving no?
That's a pretty reasonable summary. It's typically used for storing static data, and remembering it goes away between runs, you'd need to store it again each time you start...which means you'd not be able to change the patches permanently as the patches would return to whatever was in your code when you start over.
Laktica:
SRAM is volatile
Indeed it is. And you also have the least of it of the different memory types available. So it's not an option for saving your patches, unless you don't mind them vanishing when the power turns off, or the reset button is pressed.
Laktica:
EPROM is slow? I want to save/recall while its running, plus if I wrote a thousand variables to it a hundred time each time I use it, it could wear out i think?
EEPROM is the slowest of the memory types onboard the processor, however according to the reference page an EEPROM write takes 3.3 ms to complete so if you're going to save a single patch of 56 integers (from your description) that's just over 1/3 sec to write the 112 bytes. Depending on the frequency you'd be expecting patches to be written, that could be quite acceptable. In this application, the 100,000 erase/write cycle maximum is also probably not going to be tested from what you've typed. So I don't think you need worry about wearing it out - saving these patches is very much like saving settings and that's a perfect use for the EEPROM onboard. Remember too, you can add external EEPROM chips if you want more too...
Laktica:
secondly would it be feasible given the amount of overall variables I'm using in SRAM, that I could store another 1000 here in 'patch' arrays without running out of space while its running, then just 'dumping' and 'loading' from eprom on 'startup' and 'shutdown'
You could, but with only 8kB RAM to play with, it's probably a better idea to fetch them when you need them only, as I presume you're not going to need all of them at one time.
Laktica:
any ideas on the limits of the Mega in layman's terms, i.e how many ints can you work with in one go?
Well here's where it's not so straightforward. The size of RAM required to run any program changes during the run of the code. This is impacted by the flow of the program, what functions are called, and variables being created within functions and then destroyed when the functions end. The best I can advise here is to avoid putting big data structures into your code in global scope as it is the most scarce resource you have to play with.
Hope this helps,
Geoff