Apple Watch — tdlidar_watch
Make visuals pulse to a live heartbeat, or use the Digital Crown as a fader — the wearer becomes the controller.
Category: External · Tier: Free · Needs: Apple Watch (watchOS 10+) running the companion TDLiDAR Watch app, paired to the phone
What it does
Bridges sensor data from a paired Apple Watch into TouchDesigner: heart rate, the watch’s own accelerometer and rotation, and the Digital Crown position. The headline is heart rate — a real, live BPM you can map straight onto colour, scale or tempo so the visuals breathe with the performer (or an audience member). The accel/rotation channels give wrist movement, and the Crown is a precise physical knob on the wearer’s arm. Everything routes through the phone, so it lands on the same /tdlidar/… OSC stream as every other sensor.
OSC in
| address | type | range | rate |
|—|—|—|—|
| /tdlidar/motion/watch/* | float | heart rate, accel, rotation, Digital Crown | watch rate |
The watch publishes a bundle under
/tdlidar/motion/watch/…(e.g. heart rate, accel x/y/z, rotation, crown). The op grabs/tdlidar/motion/watch/*generically; checkout1’s channel list to see exactly what the current Watch app emits.
Outputs
out1 (CHOP) — every /tdlidar/motion/watch/* channel, named after its address without the leading slash (e.g. tdlidar/motion/watch/…). The node tile previews out1.
Parameters
| par | default | what it does | |—|—|—| | OSC Port | 9000 | UDP port to listen on (match the app) |
Quick start (beginner)
- Install the TDLiDAR Watch app on a paired Apple Watch, open it, and enable the Watch bridge in the iPhone app.
- Drop the Apple Watch op. Within a few seconds the heart-rate channel under
out1settles on a BPM. - Pipe the heart-rate channel through a Math/Range CHOP (e.g. 50–160 BPM → 0–1) and export that onto an emission rate, a hue, or a pulse scale.
- Twist the Digital Crown and watch its channel sweep — export it as a fader onto any parameter.
Advanced patterns
- Heartbeat pulse: range-map BPM to a beat period, drive an LFO CHOP or Beat CHOP so the scene actually throbs once per beat — far more visceral than mapping BPM to a static value. A slow Lag CHOP keeps the BPM number from jumping between readings.
- Crown as a precision fader: the Crown is smooth and absolute — export it straight to a parameter, or Slope CHOP it for a relative jog wheel. Pair with Range CHOP to scope it to a useful span.
- Wrist gestures: Slope/Trigger CHOP on the watch accel detects a flick or a raise-to-trigger, freeing a hand that’s holding an instrument.
- Biofeedback mapping: combine heart rate with the phone’s Audio RMS so the show responds to both the music and the performer’s exertion.
Gotchas
- Requires the companion Watch app actively running — without it the
/tdlidar/motion/watch/*channels never arrive. A backgrounded or sleeping watch app stops the stream. - Heart rate updates slowly (every few seconds, not per-frame) and can briefly read 0 while the optical sensor re-locks — Lag it and gate out the 0s with a Logic CHOP so a dropout doesn’t black out your mapping.
- Watch → phone → TD adds a little latency; treat watch channels as expressive trend signals, not frame-tight triggers.
- These channels live under the Motion bundle (
/tdlidar/motion/watch/…), not a/tdlidar/watch/…path — match the address exactly.