Scripting fluid.object creation/connecting (generic attribute bug?)

TLDR:
-fluid.objects don’t respond to “generic” attributes (varname, patching_rect, etc…)
-can’t script/connect fluid.objects as a result
-not sure how to script the creation of an object with wildcards & additional attributes (@fixwidth 1)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

So building something using fluid.nmfilter~ and I’d like to have it be (behind-the-scenes) dynamically sizeable.

My initial thought was to just make a max amount of components I may want (say 16), and then mc.pack~ and deal with the empty channels later on.

Turns out that that’s really expensive as fluid.nmffilter~ does it’s thing whether or not there’s stuff in those channels, making fluid.nmffilter~ 16 expensive, just sitting there.

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

SO

I wanted to dust off some of the oldschool/arcane magic and script object creation, movement, connecting etc… to basically make something like this:

Screenshot 2023-08-18 at 9.05.06 PM

What’s in the red.

In trying to do this I’m running into a couple problems.

One is a more general Max one where I don’t know how to instantiate the object while having wildcards (#0) in the name AND still set general/global attributes after (@fixwidth 1 so it’s not all smooshed up).

So I can do this:
script newobject fluid.nmffilter~ 16 @bases sorted @fftsettings 512 64 512 @maxfftsize 2048 @maxcomponents 16 @maxmaxcomponents 16 but that creates a really smooshed thing:

Screenshot 2023-08-18 at 9.07.24 PM

Ok, I can put the stuff in a @text attribute, and then shove the @fixwidth 1 at the end, like so:
script newobject newobj @text "fluid.nmffilter~ 16 @bases sorted @fftsettings 512 64 512 @maxfftsize 2048 @maxcomponents 16 @maxmaxcomponents 16" @fixwidth 1

That works, but I can no longer wildcard the amount of components (16s in this example).

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

BUT

All of this is moot when I realized that for some reason, I can’t set the varname of fluid.nmffilter~ other than manually typing it into the info pane.

If I send varname foo to fluid.nmffilter~ I get:

This appears to be the case for all the “generic” attributes (patching_rect, etc…).

Is this intentional or a bug/oversight?

The reason this is important in this case is because the objects need to have scripting names to be able to script connections between them (e.g. script connect foo 0 bar 0). So if I can’t dynamically create a fluid.nmffilter~ with a scripting name attached, I can’t go forward and make connections between it and subsequent objects.

edit:
Initially made this as “Usage Question” category, but I think the attribute problem seems more important, so changed it to “Bug Reports” instead.

Hi Rodrigo,

I remember running into this with objects other than Flucoma’s. Actually, I just tested again with a couple of Max objects (splay~, gate) and one cannot set varname with a message. SO that’s not a Flucoma issue, I assume.

Unless I am missing something, does something like this work for you ?

Best
flucoma scripting.zip (2.8 KB)
,
Julien

1 Like

Ah interesting.

So I guess the #1 stuff penetrates the “text” thing (whereas $1 stuff does not).

And right, having the @varname outside of the “text” seems to work as well.

Cool, I can work with that! Thanks.

Yeah for a fully comprehensive example of scripting flucoma-like objets, see the final tab which describes blocking. Pretty sure I scripted all of that.

1 Like

Turns out using some vanilla pack + tosymbol seems to work well too (at being able to add wildcards at the same level).

edit:

Here’s the patch for creating it, connecting it to before/after, and being able to change the fftsettings too.


----------begin_max5_patcher----------
1424.3ocyZssaihCF95jmBK5b0pLQ1FLG18ltu.qzd8pQUDhSqmkCQ.oSmYz
zm8821.IcBDLMNLaiDIXL96+6+Ll98kKb1T7BuxA86n+AsXw2WtXgZH4.KZN
egSV7KIowUpo4jy+RwlO6rReoZ9K0pgqQaPosiVbnNkWW+08b8J6rIN+QmUH
GGzmZlhXq51fk5iAQs2W9gLQNbmJjHMCtOtN4IQ9iOTxSp0qmOCuNzK53e3n
UHBwaMdEx2aMaEhRWi6vBVVsDoVWpbverbo7vpqizOitCuaWcEvUP.qFj98R
aV3TocP.acDM33mHWfoLpj1gpiWf1j2Asy3UUwOxOi2LBEzyH3qIRY+doLch
VZOsgN5Fv3ALzoEwakJCz6l4rIarcYqcGvGmPcmQqMAS8.HCQxeLMZ6wrhAG
76kt3ynA+phr8bmbBsH+dL1rnYOxtJoTruFkTjmCBGnDD46OTivvuxy1sSjV
yKQf3b17xRVuON4eUyDjM0M0t5oBXREGxUP30pEJ4U7753ZQQ9CuYF9SRY6N
YWLBSEDQActLVxSEK4OO5W2o4IQmL4ngMYHvZNNRwvafuyVNr37ScX5bW5tT
i2RuNHzoogvS17SZzJ5BmDOka.js8WR70wnpOPNIL5Cjd0MtSR2L4pst3nSh
LzdRdQyQ91CeSfbOlwXvFHa+VH0G84NPdmALMdC5VKtP.iq83b8ShJk.wKGN
qvPMMyBlZMFOl6ZB9j+nP2iLhxh6GLBsaUfUwO2JZ28WRg6Mj.47GxC282xi
77s5QPexd5LnpwdXgQMwIuNwtvvVQo0l4.GNeMjTWT80rMEoSrSDpcHbjJrf
EL+chnUGxbk5egtWNCYxx66j98EUBYaDP9KYgOz8OGWlGm0SgFC0ZSNwYuZM
OceFd93afZSe6sxYCgUWos+Kmd5UZx9+tJYmneVK8IxiCPDbynIEYYbcEKmN
wHeKWQH7UGT7V1p5P8L2me6UDYPqdk3w73zds8gSulox55eTA8+6.j.H9Xm3
kuH1V+DhbZrRWqHVnsL+N83th75Jw2TylHyadA0qbtcV1+rTD2ktqumYBzyt
m7HSQAAfEHT0amKldCZpCVgMiTqV0eRuJjfiToDnHnlefmGuIkeZfiogksc4
6ST4kGysi9qtNj+jS7zu0E5UmcipCM39ZJfOafOvwAIsrczUce0WypWx2fM4
8KnsoUr5qvQ2ySeK1Al7wS1kdPrccWBiWAky8ahq3UPZjphxZ9VHIywsO4js
MCcO.h7RPJAo7GpF.JXruHGJYTgDVH6Caf1dnW1eidZEbOoFMhnxl.NbjS8E
co1O2xEpvcVh4NiwY1AB9xFh2rWdiZKH3wJgt5V9qdssDB880DSf5HazG0gX
ay2O0CZmwq8YXtjZN6PZsH4o37bd5E5ZgPFHEBdzV6zaTDz75DxoplhJ.8md
0QJXji+VUUUwgxjVJ0IuniPskWA9mp8B7jYIaWUNodsGlBUnA.o7otZjzqRz
nX4pmkEvJzHrBsBVAFgUfUvx2Hr7sBVLivhYEr7LBKOqfkqQX4ZErnFgE0JX
QLBKhUvBaDVWadC46+dTZ4YCjju+0QIkRbtVjju3u4Ao1E4hHIe5qqFIJatP
hYRQKF0B4kXtFjpnUbtdj7LgSjiwBEkagtdGbSitAXeNzjqG5wpwPw1RAOlS
i78iXGjnlnNsBRikZjYCsWab6kQxJIgMIMhUR2qL1io8bYV.IWS3DyJIgwyE
R9yFkHFDN4aCOOS5ow2JQSlXk7sQYEOS3jmUzdlvIOaj0ya1b87CeeHo2.f3
86elWV0LaEHNYwetPU1Lbk5TQt9Tl5zR9yh14qGItL4IQMOo9Pod+RdwW++X
lSVAT.N+fnoFLPO.R0NtH2akp8wZln1Xlk+X4+o7S12L
-----------end_max5_patcher-----------
1 Like