Create Kinect wall harp
create_kinect_wall_harpBuild a projected wall harp with Kinect depth sensing: hand entry triggers plucked tones and vibrating string visuals, with synthetic fallback for offline use.
Instructions
Build a synthetic-safe Kinect v2 / FreenectTD projected wall harp in an isolated Base COMP. The network can create a FreenectTOP depth path when explicitly enabled, listen to an external OSC Kinect bridge with source='osc_kinect', or build a synthetic fallback. It extracts left/right hand centroids, divides the projection into configurable musical zones, triggers short electronic plucks on zone entry, renders a denser vibrating curtain of projected strings, and exposes depth/mask/hands/audio plus bridge-status diagnostics. If FreenectTD or Kinect hardware is unavailable, the tool returns warnings instead of throwing, so the visual/audio/trigger chain can still be tested offline.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| glow | No | Visual glow multiplier for active strings. | |
| name | No | Name for the generated Base COMP under parent_path. | kinect_wall_harp |
| decay | No | Electronic pluck decay in seconds. | |
| source | No | Input source. 'freenect' tries the FreenectTD FreenectTOP Kinect v2 path; 'synthetic' builds a device-free wall-touch simulator; 'osc_kinect' listens for normalized Kinect hand points from an external OSC bridge. | freenect |
| crop_top | No | ||
| osc_port | No | UDP port for OSC Kinect hand input when source='osc_kinect'. | |
| crop_left | No | ||
| hit_color | No | Touched string color as #RRGGBB. | #FFB000 |
| input_top | No | Raw normalized Kinect Y that maps to the projector's top edge. | |
| smoothing | No | Hand centroid smoothing amount used by the tracking Script CHOP. | |
| base_color | No | Idle projected string color as #RRGGBB. | #050505 |
| brightness | No | Very subtle harmonic color for the generated sine pluck tone. | |
| crop_right | No | ||
| input_left | No | Raw normalized Kinect X that maps to the projector's left edge. | |
| reverb_mix | No | Wet reverb mix for the internal pluck synth. | |
| show_debug | No | When true, the visual Script TOP draws hand dots and zone guides. | |
| cooldown_ms | No | Per-string retrigger guard in milliseconds. | |
| crop_bottom | No | ||
| frequencies | No | Pluck frequencies for the musical trigger zones. | |
| input_right | No | Raw normalized Kinect X that maps to the projector's right edge. | |
| parent_path | No | Parent COMP path where the isolated kinect_wall_harp Base COMP is created. | /project1 |
| sensitivity | No | Blob threshold / cleanup aggressiveness for the wall-touch mask. | |
| audio_device | No | Optional Audio Device Out device name. Leave empty to keep TouchDesigner's default device. | |
| input_bottom | No | Raw normalized Kinect Y that maps to the projector's bottom edge. | |
| output_width | No | Width for generated debug and projected output TOPs. | |
| reverb_decay | No | Feedback decay for the internal algorithmic reverb. | |
| string_count | No | Number of musical trigger zones across the projected wall harp. | |
| master_volume | No | Overall gain for the internal pluck Script CHOP. | |
| output_height | No | Height for generated debug and projected output TOPs. | |
| curtain_follow | No | How strongly nearby visual lines bend around tracked wall-touch hands. | |
| curtain_spread | No | How many neighboring visual lines share vibration from each musical zone. | |
| depth_polarity | No | Which side of the wall-depth band should count as touch candidates. | near |
| input_mirror_x | No | Mirror normalized hand X after OSC input, before projector-space calibration. | |
| reverb_damping | No | High-frequency damping for the internal algorithmic reverb. | |
| expose_controls | No | Expose calibration, harp, audio, and visual controls on the generated COMP. | |
| touch_thickness | No | Accepted depth band around wall_depth_center. | |
| vibration_decay | No | Visual vibration decay in seconds. | |
| background_level | No | Neutral projected background brightness; 0.0 leaves the wall unlit behind the laser lines. | |
| vibration_amount | No | Maximum horizontal string vibration in pixels. | |
| activate_freenect | No | Safety gate for actually creating/activating FreenectTOP. Default false because FreenectTD Kinect v2 initialization is unstable on the validated macOS setup; leave false for crash-safe synthetic fallback. | |
| audio_sample_rate | No | Script CHOP audio sample rate. Set to 192000 when using UMC202HD at 192k. | |
| visual_line_count | No | Number of visible projected laser lines. Can exceed string_count for curtain behavior. | |
| wall_depth_center | No | Normalized depth value representing the calibrated wall/touch plane. | |
| bridge_status_json | No | JSON status path written by scripts/kinect-wall-harp-bridge.mjs --status-json and read by the generated bridge_status DAT. | _workspace/kinect-wall-harp/bridge-status.json |
| calibration_hold_ms | No | Milliseconds a hand must remain stable on a calibration target before auto-capture. | |
| fallback_to_synthetic | No | When true, missing FreenectTD/Kinect hardware still creates a playable synthetic fallback with warnings. | |
| deactivate_existing_freenect | No | Deactivate existing FreenectTOP nodes under parent_path before starting the new Kinect source. Kinect v2 is a single-device path, so this avoids multiple active FreenectTD nodes competing for the same sensor. |