From description i’ve would some thing like Queue for a resulting value like left, right, top, bottom, whatever… Then i’ve would also Queue the time it happened, and remove values from queue after like 3-4 second, then i’ve would check queue for a gesture eg. if slices are = left, right, top then AND (Spectral) guesture => clear queue
I still don’t see why you can’t monitors peaks in your graph with simple high pass and then check witch peaks in witch order are hit during some time you expect the guesture to happen