It is really simple - you just add a PROGMEM qualifier to the declaration of your pattern arrays, so the compiler doesn't gnerate code to copy ythem into RAM at startup, then use a slightly different method to access them.
That way, instead of, say, one or two kilobytes of pattern storage, you could have tens of k, depending on the size of your flash memory.