Gen Param and initialization?
Hi, a question around genExpr "Param" object and initialization – see the attached patcher.
When opening the patch you will get the message "gen~ * invalid attribute testy" – which I don’t expect.
You will also note that the genexpr Param object ‘testy’ is not initialized with the gen~ attribute value of 1000, as set in the gen~ object with "@testy 1001".
However when you change the @testy attribute on the gen~ object, the value is reflected correctly.
Also if you press the "testy" message, it is reflected correctly.
So it seems only to fail during initialization – what am I doing wrong?
"version" : "Version 7.3.1 (340a77a) (32-bit mac)",
"platform" : "mac",
"arch" : "x86",
"osversion" : "Mac OS X Version 10.12.2 x86_64",
My description was a bit clumsy. In short: I have a patch with an gen~ object that should be initialized through the use of attributes, like this:
gen~ @testy 1001
Inside the gen~ object there is a codebox declaring "Param testy(100);" in the first line.
I would expect that when opening the patch containing the gen~ object, that it would just be initialized with the value ‘1001’. This is exactly what happens while I’m in edit mode – I can modify the value of @testy as I want and the change is reflected in the gen~ output.
However when I open the patch for the first time, instead i see "gen~ * invalid attribute testy" in the max window. Also the value of @testy is not reflected in the gen~ output then.
So I’m not sure if this is a bug or by design – but to me the behavior is unexpected. Otherwise there is some initialization order logic that I can’t come up with a good way of adressing.
Can anyone cast some light on this behavior? Thanks :)
You don’t declare the attribute in the gen~ object’s argument. If you want to declare params in arguments, I think it works in gen~ subpatches, and not in the top-level gen~ object. But I haven’t tried it. I do know, if you declare a Param in a codebox, these days you don’t need to declare it outside the codebox for it to alias with the external environment, unless the codebox is in a gen~ subpatch.
I think you would use setparam when communicating to a subpatcher, but I guess that’s a bit different scenario than this.
I just puzzles me that after opening the patch, changing the @testy value directly on the gen~ object does propagate to the codebox. So it seems that it is actually designed for that, but that the initialization order somehow is wrong. How to fix that though I don’t know.
Any other ideas?
(My ref for the subpatcher stuff: https://cycling74.com/forums/topic/param-in-gen-subpatcher-dont-receive-anything/#.WIkfAbbyDMU)
Thank you for the information. As I say, you dont need both declarations. I wont have anything further to say to you..
np, thanks Ernest.
Hope someone else in this forum can shed light on this behavior.
Awesome!! Thanks Graham.
Forums > Gen