Rectangle — tdlidar_rectangle
A live size-meter: a rectangle that grows and shrinks with any TDLiDAR channel you point it at — the quickest way to see a sensor working, and a building block to copy.
Category: Camera & Vision · Tier: Free · Needs: nothing special — any TDLiDAR sensor that’s streaming
What it does
This is a demo / meter op. It listens to one OSC channel of your choosing and makes a square’s size follow that value: bigger value, bigger rectangle. It draws the result two ways — a Rectangle TOP (out_top) you can see immediately, and a Rectangle POP (out_pop) you can drop into a 3D scene. Point it at brightness, mic level, a pinch, body distance — anything — and you get an instant visual readout. It’s also the simplest worked example of “OSC channel in → geometry out” to copy when building your own ops.
OSC in
You choose the channel. The default is the phone’s screen-brightness fader:
| address | type | range | rate |
|---|---|---|---|
/tdlidar/device/brightness |
float | 0–1 | 2 Hz |
Set the Size Channel parameter to any address from OSC-REFERENCE.md (e.g. tdlidar/audio/rms, tdlidar/pinch, tdlidar/body/distance). The op reads that one channel off the OSC In CHOP and uses its value to drive size.
How size is computed
size = Base Size + (value × Scale) — applied uniformly so the shape stays square. With the defaults (Base 0.2, Scale 0.8) a 0–1 channel sweeps the rectangle from 0.2 up to 1.0.
Outputs
out_top(TOP) — a Rectangle TOP whose width/height track the channel (the at-a-glance meter).out_pop(POP) — a Rectangle POP at the same size, for use in a 3D/Geometry scene.out1(CHOP) — the chosen channel’s raw value plus the computed size, for chaining.
Parameters
| par | default | what it does |
|—|—|—|
| OSC Port | 9000 | UDP port to listen on (match the app) |
| Size Channel | tdlidar/device/brightness | which OSC channel drives the size |
| Base Size | 0.2 | the rectangle’s size when the channel reads 0 |
| Scale | 0.8 | how much the channel value adds to the size (size = Base + value×Scale) |
Quick start (beginner)
- Enable any sensor in the app (the default uses device sensors → brightness).
- Drop the Rectangle op. Confirm OSC Port is 9000.
- Drag the phone’s brightness slider —
out_topshows a square growing and shrinking with it. - Change Size Channel to, say,
tdlidar/audio/rms, enable Mic Level in the app, and the square now pulses with sound.
Advanced patterns
- Smooth it: at 2 Hz (brightness) or with noisy audio the size jumps. Put a Lag/Filter CHOP on the chosen channel before it drives size (lag ~0.2–0.3 s) for a calmer meter.
- Remap the range: if your channel isn’t 0–1 (e.g. metric
body/distance), use Base Size + Scale — or a Math/Range CHOP ahead of it — to fit its real min/max into a visible size band. - Stack meters: drop several copies, each on a different Size Channel, lay their
out_tops side by side, and you’ve built a quick multi-channel dashboard to confirm what’s actually streaming. - Copy it as a template: the internal chain (OSC In CHOP → pick channel →
Base + value×Scale→ Rectangle TOP/POP) is the minimal pattern for turning a sensor into geometry — clone it as the starting point for your own visualiser ops.
Gotchas
- One channel only. It reads a single address; multi-value messages (quaternions, skeletons) won’t map sensibly — point it at a scalar.
- Square, uniform size. Width and height move together by design; it’s a meter, not a free aspect-ratio rectangle.
- Pick a channel that’s actually streaming. If the chosen sensor is off in the app, the value sits at 0 (or stale) and the rectangle parks at Base Size — that’s expected, not a bug.
- Match the units to Base/Scale. A channel outside 0–1 will blow the size out or barely move it until you tune Base Size and Scale (or remap upstream).