Acceleration — tdlidar_accel

Shake, punch or throw the phone and have it fire an event in TouchDesigner.

Category: Motion · Tier: Free · Needs: any iPhone (no LiDAR required)

What it does

Streams how hard and which way the phone is being moved, after gravity has been subtracted — so a phone sitting still reads ~0 on all three axes. The three channels are the X (left/right), Y (up/down) and Z (toward/away) push in G-force. A sharp shake or impact spikes the values; the magnitude of the spike is your trigger.

OSC in

address type range rate
/tdlidar/motion/accel/x float G, gravity removed (userAcceleration) ≤50 Hz
/tdlidar/motion/accel/y float G, gravity removed ≤50 Hz
/tdlidar/motion/accel/z float G, gravity removed ≤50 Hz

Outputs

out1 (CHOP) — three channels accx, accy, accz. The node tile previews out1.

Parameters

par default what it does
OSC Port 9000 UDP port to listen on (match the app’s OSC port)

Quick start (beginner)

  1. In the TDLiDAR app, enable Acceleration (Motion / Sensors).
  2. Drop the Acceleration op into your network — you should see three flat lines near 0 in the tile.
  3. Pick the phone up and wave it: the lines jump. That’s live data.
  4. Wire out1 into a Math CHOP set to Combine CHOPs → RMS Power (or Length) to collapse the three axes into one “how much movement” channel, then feed that into anything (an opacity, a feedback amount, an LFO rate).

Advanced patterns

  • Impact trigger: Math CHOP (RMS of the 3 axes) → Trigger CHOP with a high Trigger Threshold (e.g. 1.5 G) and a short Re-Trigger Delay so one shake = one bang. Use the trigger to fire a Beat CHOP reset, swap a Switch TOP, or kick a particle burst.
  • Smooth then react: A raw accel signal is spiky. A light Lag CHOP (lag 0.05) tames jitter without killing the spike; a heavier Filter CHOP gives you a slow “energy” envelope for ambient reactivity.
  • Direction-aware hits: Keep the axes separate and run three Logic CHOPs to tell a left-swipe from an up-toss; map each to a different scene.
  • Throw detection: During free-fall all axes drop toward 0; pair a low-magnitude window with a following spike (the catch) to detect a toss-and-catch.

Gotchas

  • This is userAcceleration — gravity is already removed, so resting ≈ 0 on every axis. If you want “which way is down”, use the Gravity op instead.
  • Values are momentary spikes, not held states — don’t expect a level you can read between movements. Always pass through a Trigger or Filter for stable downstream logic.
  • Units are G (1 G ≈ gravity), not m/s². A brisk shake easily exceeds 2–3 G.