bcircle

bcircle is a transparent UI object that reports when a point enters or exits an elliptical region — the ellipse inscribed in the object's box, so the corners fall outside. Along with the inside/outside state it reports position and motion.

It takes coordinates from two sources interchangeably:

- Mouse: place a bcircle over a [panel] or any visual, leave it transparent, and it tracks the cursor.

- List input: send [list x y] from any source — Jitter blob tracking (jit.blobs.centroids), OSC, Python/OpenCV or MediaPipe over udpreceive, or anything else producing coordinates.

Both paths share the same hit-test and output logic, so the source of coordinates doesn't change the behavior. Output can fire on edge transitions (enter/exit triggers and gates) or continuously every frame (CV tracking and position-driven modulation).

Where bcircle differs from its sibling bbox is the motion follower. It is polar rather than Cartesian: motion is smoothed as direction and radius rather than as x and y, so circular movement is followed along the arc instead of being cut across the chord. It emits tagged pos / bearing / radius / angvel / radvel / moving messages for downstream [route] — bearing as the angle from the ellipse center, radius normalized from 0 at the center to 1 at the perimeter, and signed angular and radial velocities. That makes rotary gestures, dials, compass headings and spin intensity direct readouts rather than things you derive.

Coordinates can be reported in local, patcher, or screen space. Invisible in performance mode; shows a faint dashed ellipse in edit mode so you can find and resize it.

Universal binary (Apple Silicon + Intel), macOS, Max 9. Free and open source under the MIT license.

Install: download the release zip, unzip, and drop the bcircle folder into ~/Documents/Max 9/Packages/, then restart Max. Or clone the source from GitHub and build with CMake.