Detecting a fast numerical increase or drop

skiptracer's icon

I have incoming numbers of 0 - 127, how would I want to do something like this: if $i1 decreases by 30 in 10ms then bang.

I'm trying to create sword effects triggered by wiimote movements and I want the "clang" sample to be triggered if a sudden decrease in accelerometer data is detected.

Any ideas?

Thanks in advance, you guys have been great in the few days since I got my Max license. Hopefully I'll have learnt enough to be able to help out others before too long.

Sam Tarakajian's icon

Not to self promote, but I've made a video tutorial on doing basically exactly what you're describing. You can cheggiddout here:

Max Patch
Copy patch and select New From Clipboard in Max.

That being said, if you're looking for something you can copy-paste, something like this might get you started:

spectro's icon
Max Patch
Copy patch and select New From Clipboard in Max.

One way to detect a large drop between successive input values. Edit: posted this before seeing Sam's response. Different approach to timing but otherwise similar...

skiptracer's icon

Thanks both.

Sam - is there any reason why the patch you describe in your video wouldn't work using the ctlin object rather than udp?

This is what I have at the moment and it doesn't seem to be working. The number object displays incoming MIDI numbers so osculator is working fine.

Edit: I've decided to just go with the UDP method as it seems to be working well. I am curious as to why my patch wasn't working though...

----------begin_max5_patcher----------

{
    "boxes" : [         {
            "box" :             {
                "maxclass" : "comment",
                "text" : "raw accel data \nx y z",
                "linecount" : 2,
                "frgb" : 0.0,
                "numoutlets" : 0,
                "fontname" : "Arial",
                "patching_rect" : [ 212.0, 98.0, 210.5, 33.0 ],
                "id" : "obj-43",
                "fontsize" : 12.0,
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "ctlin a1 2",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 286.0, 132.0, 59.0, 20.0 ],
                "id" : "obj-37",
                "fontsize" : 12.0,
                "outlettype" : [ "int", "int" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "ctlin a1 1",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 212.0, 132.0, 59.0, 20.0 ],
                "id" : "obj-33",
                "fontsize" : 12.0,
                "outlettype" : [ "int", "int" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "button",
                "numoutlets" : 1,
                "patching_rect" : [ 407.5, 377.0, 20.0, 20.0 ],
                "id" : "obj-5",
                "outlettype" : [ "bang" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "flonum",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 520.0, 184.0, 50.0, 20.0 ],
                "id" : "obj-1",
                "parameter_enable" : 0,
                "fontsize" : 12.0,
                "outlettype" : [ "float", "bang" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "togedge",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 407.5, 325.5, 54.0, 20.0 ],
                "id" : "obj-48",
                "fontsize" : 12.0,
                "outlettype" : [ "bang", "bang" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "> 69.",
                "numoutlets" : 1,
                "fontname" : "Arial",
                "patching_rect" : [ 407.5, 273.0, 38.0, 20.0 ],
                "id" : "obj-46",
                "fontsize" : 12.0,
                "outlettype" : [ "int" ],
                "numinlets" : 2
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "- 0.",
                "numoutlets" : 1,
                "fontname" : "Arial",
                "patching_rect" : [ 407.5, 238.0, 32.5, 20.0 ],
                "id" : "obj-45",
                "fontsize" : 12.0,
                "outlettype" : [ "float" ],
                "numinlets" : 2
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "t f f",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 407.5, 192.5, 32.5, 20.0 ],
                "id" : "obj-44",
                "fontsize" : 12.0,
                "outlettype" : [ "float", "float" ],
                "numinlets" : 1
            }

        }
,         {
            "box" :             {
                "maxclass" : "newobj",
                "text" : "ctlin a1 3",
                "numoutlets" : 2,
                "fontname" : "Arial",
                "patching_rect" : [ 361.5, 132.0, 59.0, 20.0 ],
                "id" : "obj-40",
                "fontsize" : 12.0,
                "outlettype" : [ "int", "int" ],
                "numinlets" : 1
            }

        }
],
    "lines" : [         {
            "patchline" :             {
                "source" : [ "obj-44", 1 ],
                "destination" : [ "obj-45", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-44", 0 ],
                "destination" : [ "obj-45", 1 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-48", 0 ],
                "destination" : [ "obj-5", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-40", 0 ],
                "destination" : [ "obj-1", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-40", 0 ],
                "destination" : [ "obj-44", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-46", 0 ],
                "destination" : [ "obj-48", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
,         {
            "patchline" :             {
                "source" : [ "obj-45", 0 ],
                "destination" : [ "obj-46", 0 ],
                "hidden" : 0,
                "disabled" : 0
            }

        }
],
    "appversion" :     {
        "major" : 6,
        "minor" : 1,
        "revision" : 3,
        "architecture" : "x86"
    }

}
-----------end_max5_patcher-----------