diff --git a/data_only_viz/osc_listener.py b/data_only_viz/osc_listener.py index a4aad6d..d2598ab 100644 --- a/data_only_viz/osc_listener.py +++ b/data_only_viz/osc_listener.py @@ -100,6 +100,8 @@ def _build(state: State) -> dispatcher.Dispatcher: with state.lock(): state.social_rate = float(args[0]) d.map("/data/bluesky/rate", _social) + # NOTE: sound_algo/control/data_feeds.scd also listens to /data/pose/{count,skel} + # for sonification. Both consumers are intentional. Do NOT consolidate. def _pose_count(addr, *args): if args: with state.lock(): diff --git a/sound_algo/control/data_feeds.scd b/sound_algo/control/data_feeds.scd index a072f6f..586d715 100644 --- a/sound_algo/control/data_feeds.scd +++ b/sound_algo/control/data_feeds.scd @@ -185,6 +185,10 @@ \sho_l, \sho_r, \elb_l, \elb_r, \wri_l, \wri_r, \hip_l, \hip_r, \kne_l, \kne_r, \ank_l, \ank_r]; +// NOTE: /data/pose/count and /data/pose/skel are ALSO consumed by +// data_only_viz/osc_listener.py for Metal rendering. This is intentional — +// both subsystems update their own state. Do NOT consolidate; they live +// in different processes. ~feedDefPriv.(\d_pose_count, '/data/pose/count', { |msg| ~feedSet.(\pose_count, msg[1]); });