@woland. Your javascript for the toggles was inspiring and lead me to an complete shift in how I am handling midi. The idea of generating the JSON values for the toggle based on the button pressed and the use of a global variable to hold the current state of the JSON were revelations to me.
Previously, I had created a receiver user actor that I used for each page which would take midi values from a defined range of controller#s and then output values for each button. These were then combined into a JSON for the page. I itterated this over the 9 pages (2-10) and then combined this into the larger JSON that you have seen.
Here's some grabs of that build. It's huge.



Looking at how you did your Javascript I broke it down into chunks: the calculation of page#/button# based on my midi layout, calculate which midi values were for the only-one-on toggles (designated buttons) and which were for non designated buttons. I created a script (with the help of CHATGPT) that would output the the correct page/button and a booelan each for designed and non designated button presses for midi values that are in range for a given track. I filter the boolean for the designated buttons for 0 so that the script will not trigger when the button is released.
From there I used your only-one toggle generation for the designated buttons and am updating the JSON with any non-designed button values - I have some value cycles on some buttons to choose audio track, bank/page group etc. The result is this tiny thing that builds and updates my entire JSON for the Streamdeck XL.

While I am a bit sad to throw away all that other work, I learned a lot and am ultimately very happy to find this sleak solution. It will make me think much differently about how to solve some of problems moving forward. I am also slowing learning some more advanced Javascript from you and from Chat GPT
I am an oldschool Basic/Pascal/C guy from my earlier years. I know how to break a problem down, but I am unfamilar with many Javascript operations, the way it works with classes, and the fineries of its syntax....but i'm learning.
A quick question for you. It looks like the global variable in the javascript actor is cleared when changing scenes. This causes an error for me when I reenter the scene. Is there a way in javascript to store a global variable that is persistent, or would I use a global variable actor and trigger this on scene enter to restore the current state of the JSON for the JSON Generating Javascript?
Thank-you again for all of your help.
@wwachalovsky Just following up on this as it continues to be an issue for me. In my experience the crashes only occur when jumping between scenes at the same time as sending a plink command. I've come up with a successful workaround by creating a second instance of Isadora that only sits in one scene, but receives command via a listener (or OSC) from the main show file which broadcasts the desired triggers to the pj link actor in this secondary instance. It's maybe a little clumsy, but it has resolved my issue. I can share a file to give you an example of how this works if that's useful.
@fred Thanks for this. I have to wrap my head around it since I'm not a programmer...
@woland I did this, but this behavior seems to be particular to Oculus screen cast. Window cpu mode works with other windows such as youTube.
Thanks @woland - I'm not using a suit, so going to try and rejig Mark's patch to either use a Kinect or perhaps the Zig Sim Pro mobile app which looks pretty good. I don't think the latter outputs a skeleton, just individual limb point OSC location data. I don't suppose you know of a way to package that up as a skeleton output that the decoder would recognise?
@woland, oh. cachedResultData. This is the key! I did not previously understand how to use global variables in JavaScript. It's the one ring to rule them all 
OK, that's weird. I opened up Isadora today and it works fine. Get is set to Max/Min. New instances and even the one that yesterday was set to min 0 and I couldn't change it. I was connected to spin on a projector so that shouldn't have affected the min. But it seems like it was a glitch and now it is solved. So the answer seems to be shut it down, walk away, and when I restart everything is great. Thanks for your help!
Shuffle actor. Will never repeat until you reshuffle
Hello guys,
for a show I am preparing I need to create a patch or actor which creates random whole mumbers (from predefined set) and does never repeat value.
I have problems with excluding values which been used already.
Please anybody has a suggestion? Thanks in advance.