fix(sound): boot data-only patch output-only
CI build oscope-of / build-check (push) Has been cancelled

scsynth failed to boot under the data-only patch with "AudioDeviceStart
failed" because it opened a default input device that was unavailable
(an iPhone Continuity mic showed up in the device list) and needed a mic
TCC grant. The patch is output-only, so pin numInputBusChannels = 0; the
server now boots cleanly with no mic prompt.

Also nil-guard the hand-coordinate reads in scene_pose_action's hand->FX
map (hf[\lx]/\ly/\rx/\ry could be nil when one hand is absent, matching
the existing ? 0 pattern on lopen/rspeed/dist).

Note: a separate "Non Boolean in test" error still kills the
scene_pose_action routine on its first tick (pose->FX mapping not yet
live); ~poseKin/~poseState/~handFeat are Dictionaries populated by
data_feeds OSCdefs — left to investigate.
This commit is contained in:
L'électron rare
2026-06-26 17:22:26 +02:00
parent 32a4ef2232
commit 8a4a0e688d
2 changed files with 6 additions and 2 deletions
+4
View File
@@ -105,6 +105,10 @@ Routine({
// Boot le serveur (idempotent : si deja boot, retourne immediatement)
Server.local.options.numOutputBusChannels = 2;
// Output-only patch: don't open an input device. Avoids the mic TCC
// prompt and "AudioDeviceStart failed" when the default input is
// unavailable (e.g. an iPhone Continuity mic in the device list).
Server.local.options.numInputBusChannels = 0;
Server.local.options.memSize = 65536;
"[data-only/boot] booting scsynth...".postln;
+2 -2
View File
@@ -93,8 +93,8 @@
var hf = ~handFeat;
var hasL, hasR, ys, height, openMax, spdMax; // toutes les vars en premier (regle sclang)
if (hf.notNil and: { hf[\ly].notNil }) {
hasL = (hf[\lx] + hf[\ly]) > 0.001;
hasR = (hf[\rx] + hf[\ry]) > 0.001;
hasL = ((hf[\lx] ? 0) + (hf[\ly] ? 0)) > 0.001;
hasR = ((hf[\rx] ? 0) + (hf[\ry] ? 0)) > 0.001;
if (hasL or: { hasR }) {
// main la plus haute = y minimal ; height = 1 - min(y)
ys = [];