One way I've done something similar is to use a phasor~ object to read the array. You need to multiply it by a couple numbers first to make it take the right amount of time and second to make it span the entire reach of samples in the array. If you invert the speed multiplier to negative twice whatever normal is, it will play in reverse. You can then manipulate that multiplier in real time to speed up/slow down/ play forward the sample. It's fun.
-i