Peak detection on pressure-sensitive floor boards

Markus Baumknecht's icon

Hi everyone, I am building a sound installation with load cells laid out in a 6x6 matrix, 60cm apart. On top of the load cells are wooden boards. I send my raw sensor data from Arduino to Max and then calculate centroid of mass, mass velocity, speed (scalar & vector), and a few other things.

The challenge I'm currently stuck with is how to implement a trigger system for events/bangs. So far I've tried combinations of peak detection (with and without blocking timers) and velocity thresholds (with hysteresis). When I use velocity or acceleration, it reacts well but is often too sensitive and picks up steps or unintentional movements. When I use peak detection, there's a small delay.

A basic problem is that people continuously stand or move on the surface, which you don't have with touchpads or XY pads—usually the user removes their finger and there are no movements that aren't trigger movements in some way.

For those with more experience in designing interactive systems than me: what are possible ways of tackling this problem? Either it's delayed, not sensitive enough, or it gets too sensitive and triggers at unpredictable points for the user.

Can anybody help? Any pointers in the right direction are much appreciated.

Markus

TFL's icon

It's unclear to me what should trigger the events. When someone steps on a cell, stays on a cell, go from one cell to another, jump on a cell?

Did you try filtering your incoming velocity before it reaches your hysteresis threshold? Something like [slide] or [p smoov] (search for the last one in the forum) might help, although it adds a bit of latency.

Also maybe having a dynamically changing hysteresis size would help filtering out unintentional movements.

Regarding the peak method, I don't know what kind of feedback you expect from your events, but you could think of a "preliminary feedback" before knowing if an actual peak is reached or not and trigger your real feedback. A bit like when a button changes its appearance when you hover it before clicking it, or in video games when you have a small sound indicating that you're in a sweet spot but still not quite there. It won't reduce the delay but make a human feel like it's more snappy.

Hard to give better advice for me without knowing more about the actual intended interaction, and a patch! You could even record some data using [mtr] for us to play with.

Markus Baumknecht's icon

Hi TFL, thanks for replying and sorry for the delay. I was really busy the last few weeks. I'm uploading you my patch and visualizer, as well as some recorded mtr data. I'll try to add my threshold logic later. for now, I hope this helps!

It's unclear to me what should trigger the events. When someone steps on a cell, stays on a cell, go from one cell to another, jump on a cell?

I think the difficulty for me was filtering out what consitutes a 'stomp', as opposed to a 'step'. people will walk on this thing all the time, but I found the boundary between walking and intentionally stomping all but impossible to figure out.

(the file visualizer.txt you have to rename to visualizer.js and link to the main v8ui object)

main_patcher.maxpat
Max Patch
sub_input-output.maxpat
Max Patch
sub_parameters.maxpat
Max Patch
sub_sortsensors.maxpat
Max Patch
mtr01.txt
txt 448.42 KB
visualizer.txt
txt 4.72 KB