could you try printing some of the values in the draw loop? I would like to see how far it gets before the error throws, and what the numbers are at the time of the error.
voi draw() {
for (int i = 0; i < iMax; i++) {
println("i: " + i + " dF: " + dF + " i/dF: " + i/dF);
band = fft.getBand(i/dF);
}