It’s a slow month in the Package Manager, so I wanted to take the opportunity to share with you a hidden treasure tucked away inside the jit.mo package. While jit.mo is billed primarily as a motion graphics toolkit, there’s one object in there that every Max user could probably appreciate: jit.mo.time.
Since we released jit.mo toolkit, this object has become one of those objects that ends up in every single patch I make, even the ones that don’t involve wiggling shapes. The fact that it automatically syncs its output to a jit.world context certainly helps, but it doesn’t prevent you from driving it with other means. To use it without jit.world, just add “@automatic 0” and provide it with a steady supply of bangs.
The most widely useful feature of jit.mo.time is its “function” mode, which turns it into a message-rate LFO with saw, sine, triangle, line, and perlin noise waveshapes. This makes it an efficient drop-in replacement for all those cycle~ + snapshot~ instances you might have scattered around your patches. The timing of the LFO is clocked to real time, so even if your bangs have some jitter to them you will get a steady timed value out.
The “accum” mode of jit.mo.time gives you a running-time clock value that can be used to drive the rest of your patch. This is super useful when you are running a show that relies on tight time sync, and for driving animations and simulations that evolve over time.
Finally, the “delta” mode gives you the time in between frames (or bangs, if not running with jit.world). This can be used as a time multiplier, for example, when doing particle or physics type simulations where variations in frame timing could ruin the effect. It can also come in handy if you just need to know how long it has been since the last event.
I encourage you to install the jit.mo package from the Max 7 Package Manager and give jit.mo.time a try and see if it solves any of your patching problems.