Thermal State — tdlidar_thermal
Drop TouchDesigner’s render load before the phone overheats and silently throttles your frame rate.
Category: Device · Tier: Free · Needs: any iPhone (no special hardware)
What it does
Streams the phone’s thermal state as a single number from 0 (cool) to 3 (critical). iOS quietly slows the camera and CPU as the device heats up, which sandbags your sensor rates without warning. By watching this channel you can pre-emptively degrade quality in TD — fewer instances, lower-res TOPs — so the show stays smooth instead of stuttering when the phone finally throttles.
OSC in
| address | type | range | rate |
|—|—|—|—|
| /tdlidar/device/thermal | float | 0 nominal, 1 fair, 2 serious, 3 critical | on change + 2 Hz |
Outputs
out1(CHOP) — one channel:tdlidar/device/thermal(0–3).
Parameters
| par | default | what it does | |—|—|—| | OSC Port | 9000 | UDP port to listen on (match the app) |
Quick start (beginner)
- Enable the device sensors in the app (thermal rides the device bundle).
- Drop
tdlidar_thermal. - Watch
out1: it sits at 0 when the phone is cool and climbs as it warms during a long session. - Wire it into a Text TOP so you can literally see “Thermal: 2” on a monitoring page.
Advanced patterns
- Auto-degrade ladder (the main use): run
out1through a chain of Logic CHOP thresholds — ≥1, ≥2, ≥3 — each output enabling a cheaper variant of your scene. At 1 drop bloom, at 2 halve instance count, at 3 cut to a static fallback. Switch between variants with a Switch TOP/SOP driven by those logic channels. - Hysteresis: thermal can hover on a boundary and chatter. Put a Lag CHOP (slow rise, slow fall) before the Logic CHOP, or add a Trigger CHOP with separate on/off thresholds so you don’t flap between quality tiers.
- One master “quality” value: Math/Range CHOP map 0–3 → 1.0–0.4 to get a single multiplier you can pipe into resolution, particle count, and FFT band gains at once.
- Combine with Low Power: OR this with
tdlidar_lowpowerso either an overheating or a power-saving phone drops you a tier.
Gotchas
- The value is a float but only ever lands on 0/1/2/3 — always compare with Logic CHOP, never test for exact equality after doing arithmetic on it.
- Updates are coarse (on-change + 2 Hz). It is a trend signal, not a per-frame value; don’t try to animate anything fast from it.
- Thermal lags reality — by the time it reads 2, the phone has already started slowing the camera. Build your degrade ladder to react at 1, not 3.