Help! I'm stuck. How to send parameter IDs from [zl] to [live.modulate]?
Hi! Since days I'm not making any progress with a device I have in mind. I tried to learn from others devices ("reverse engineered"), asked Claude.ai and so on. I tried [coll] different [zl] objects but I'm stuck.
Let me explain where I am and what I want to achieve.
The device looks for the right now selected device (native Live)
I get all parameter IDs and names of a that device
I set rules to filter the parameter IDs I want to control
I store the IDs from step 3 in [zl.group]
Now I'm stuck. I want the stored ID's to route to individual [message] - at least I think I need that step. Actually I want the stored ID's routed to individual [live.modulate] objects. Depending on the selected device I'll (probably) have 4 up to 24 IDs which then needs to be routed to 4 up to 24 [live.modulate].
I feel dumb because there is probably a pretty easy solution :D
What could be an sane approach to get the stored IDs [zl.group] forwarded to [live.modulate]?
Check out [listfunnel] + [spray] or [iter]/[zl.iter] + [cycle], or [zl.nth], or [unjoin]/[unpack]
Thank you. I'll give it a run.
The [cycle] objects works but I do not see a way to use it dynamically. When I set [cycle 24] the values, well cycle through the outputs. Since my device needs to be dynamic this is way from being ideal. Weirdly the other approaches (some of them I tried before myself) always giving me only the very last parameter ID which is stored. The others are "disappearing" though [cycle] shows me all IDs. I'll need to investigate that further. There might be some issue in the logic of my patch before.
I don't think programmatically creating new [live.modulate~] will work, so you'll probably need to design your device around a fixed maximum number of parameters you want to modulate. So no need for dynamically changing this routing.
Otherwise, I would go with an abstraction containing one [live.modulate~] and a [zl.nth #1]. This way you could create a bunch of [my_modulation_abstraction N], with N being the number of the instance, like from 1 to 24. the #1 in [zl.nth] would be replaced by that number and thus pick up the correct ID from your list of IDs that would be sent to all abstractions.
Thank you again. I'll tried several solutions but I'm still stuck at getting all ID's out of [zl.group] I'm not sure why. [cycle] gives me all ID's but resetting [cycle] seems cumbersome - as it cycles thru the ID's. All other solutions like [zl.nth 1] giving me always only the very last ID in the list. I'll check if I find the issue -- I might give [coll] another try.
what is exactly the problem here ?
if you have a list with id numbers,
you can use something like listfunnel to dispatch them to
numbered distances.
unless you need to bind specific parameter to specific destination.
I would remove "id" from any storage and prepend it at destination.
test here random id list and router

"what is exactly the problem here ?" I'm not sure but it seems the stored list in [zl.group] is treated as one big list as each ID number got a "1" attached to while I would assume there would be an order.

what you show in that screenshot makes no sense.
zl.slice 1 goes into zl.group ?
where do you get that list of id's you are talking about ?
after regexp ?
is that a list like id 33 id 45 id 66 ?
if yes, then simply

if on the other hand regexp output are itered id's, then again strip id, collect numbers into a list and so on.
Thank you for your help. When I do not use [zl.slice 1] the message is "3997 A Amp Attack". I strip the numbers (ID) out. Attached the upper signal flow. I get the IDs from the Live device being in front of my device based on names.

I see no list at all there.
this is wrong, you don't get more then 1 item into and out of zl.group.

this is also questionable, what iz zl.reg doing there ?
one input is unfiltered, the other filtered lists ?

Listen, you have some number of parameters.
You filter some of them out, and then you need a list with left id numbers
in order to route them to your controls.
post example list of your parameter list,
filter with explained rules and where you want to route that survived parameter id's.
I'm still a beginner. I got bits of patches from here and there and added some own stuff. It works partly :D I'll revisit my whole patch. BTW: you can see the IDs (numbers) I get in the first screenshot - the print messages.
no matter beginner or not ...
I can't really help you without that few infos .
is it so difficult to post that regexp filter you use ?
if you remove (filter) parameters by name
it could be as simple as this:

"I can't really help you without that few infos." ... "is it so difficult to post that regexp filter you use ?" I think I explained in the first post quite some infos. Also the screenshots showing my patch fully (including the regexp I use). I'm not on my laptop. I can post the regexp as text if that helps.
I wanted to see regexp just to see if process needs to be slowed down a bit.
Your screenshots are not really clear for my aged eyes.
In patch as on my screenshot I get reliable list with > 100 parameters in Max using simple zl.filter.
but that might be different in Live and under different conditions.
You could replace zl.filter with your regexp combo and test if it works ok.
Otherwise one would collect all parameter ID's into for example zl.stack, coll or umenu,
and use output of parameter name querry / regexp filter to trigger next ID in the list.
that would ensure proper functioning.