libossia
libossia copied to clipboard
[ossia-max] FR : supporting dynamic instanciation of parameters/model/devices (with correct value recall)
Hi,
following up the discussion with @avilleret in #615, here is the FR and a MWE patch showing expectations.
The idea is that preset values are both sent to parameters and retained until a non-existing parameter eventually exists. This way, any dynamic instanciation of a parameter (in particular, using the powerful address messages with braces notation) performed during a preset recall (or by any other mean really), will let this new parameter retrieve its value.
I am open for discussion on the ways to make that possible in ossia. But IMHO, that would be awesome. :)
----------begin_max5_patcher----------
3631.3oc6cs0iiaaE94Y9UP3l91rt7lt39TBJPAJPQQQ5C8grKFHawwiRjkL
jn2YlrH+2CuH4QxVWntZsK1EYmIKoj447wyMd3wje496VsM9UV5JveG7Kf6t
6K2e2cpljMbW1+9tUG7dcWnWp5wVcfkl5sms5Aceb1qbU6j7VhNcHHJjwUON
Nqw.e0CEu8W+.EW3IiOwyeTTVq5l3ucjoIqUq.eJqqid7cOGDs+wD1Ntt2Ma
VCe.35J+IdyZKwOwqgfOIeg+396k+3AC4rcwGNvh3WwYz0+m3W.IrOyR3.dL
vCjJngPFX2ydQQrvJY7btY6osaCYEaQ94tKNLNQy.v0jGJ7Cjj3q.zPUCZvR
Ci7i9fWx9fH0.l24SwQ7zfeWSEBzoPyQdGTMu5e6I3rels+TnWxp5gaDAqva
jBogVx+Awpm.9fEkHaFSQIrsh2rnDEyMLgo53Mrw7l6nxatz0XA+XgPSHygL
l4rFSlinkCoNiwD21SbdbTi5zEYDRyLxQuDgFFmk7HKxKyP.rNlbqWzdSjPo
DphEoJidzQ1bGd8+jw7AowGXfO6EdR3dXFLvQVHF3vazxRDn7WHh6frv8TXr
fcLUXBWi4LrABSOEmbvSwC10pC8fAhXDHrfQPK0+n25RQrWD70URXwooAdqS
XGh4mchRLViCVMHQZhsU+8LaWR3DgsnajxlNargNtx+O2MTDxsrnZUPkEs.T
gnNCBq5nnhyBPTQvqE7oLexJXiQI2EirhicQrZlEVHK.gEgVx69nmOYEjwfj
0hQVYiSAnZnhJ04lm+bPJP7e7mEX0oviIA70f+EGjx8h7SAh4cfWzafPVzd9
yuABhjcrKviGDGANlDuSDCHH9I06qDfRAaYgwu7f3QUMJ9+EOWPr3C9MQCIL
O+04TQXPDaW7oHdIwvDVpfRUivikdBqtE.RwYUXygUT4RbbUQWIBjP7KBxQ8
KmwUT0m8DKQfPlJc5z63kKHThjBRvy+nEwP2Lczr3AlS6Unau8JM2mEF3PMW
c5vVVhobOh1eteH7JBYOB7ZclarV+yrcdgB058ZSFRkcN3kfvPvt3DIwD9FH
Q8Lfbi2+CoA.fXEYfm7BBAd7rGP9gj8HoMZRYRSIyxXAKNNZ6TPkQKa8pW1L
xydj0+OuOy.ZeFQ.urou0ywJCQVC.n0clF3yJ5KeDgeJRsVbp5mHKxfVtXcv
OZMXmv+oHpFOvSrW.ebUtz+GWoc9B778ESIorTgSbsSYczPmsV79KgDujWnz
e7a.1qAo7zGzyruDm7aBO+BEopcTSliY6IHO.524XbflMDAhMfIba0TrRMCa
q7nZSuU4+zdTyhlJUGVnQHS5cygG19F4vykLFN2aZsHuq8Uxi1OdNtXDDBMF
mZIvfpWgxXu5jLrKSNQavaziVPZIxKI9juZcHAoomXf+hkq6p9uP.b2WHfqN
nWa85vrgCJcq0or235TqPmGQFSk9rf72nWUtyTnIjxBAlycvNJiqz0evLtLa
hDBmw0xPV.IpSuGoDcfhSi4NQ7fGYQ94ggX7ZcviuvLQmvjgNMWmzrvzcD+I
P5aR5M2r9WPqW+WC8+ituXjBfwntgeH6LG4tE.idGXZMfgXsYfTvVi0E5XF1
NqaahPN0EWzwjq8z4U+Pruvl1+OHz++pWE6O5yR2kDbTkarOt5m.9uIBqLXG
P+jd6dl8wUlhRi5ViZirT17b0l.n3IQ4GrmweTFHc5QucrJYTx0L5nt48YS+
X7lql9K9RrjL1Ki+DFYCBkU1QpXpqvne2JuiGKz7cEdEIn7q5PoxVHgrofHc
S3yMkv9bP96CO2pWhfz4B59ThdcGuZmGWm7iQHvjDcJPQJ5FESOYjjZh3cXV
sa0h4q7tKXHjpTBzwu3PTKVwQF+RNXHln2GFu62X9EItUwBa3AQEyCaot8YO
4cJj+X0Kypb+OkQgU1440b8SIAdgmYf8IA9wQRhnzLgr47gSXXyRqlWjYTOQ
j2wJdYgfl.VpoyTASdJcqWhbhJy4a972JdbbX4tN+dgrm3YceLPX+uLJxiOV
emIA6etg2carnyCM8Yq5I8wSQ5deTHSveL06ykQatWXXl1Z4O9W8hBDAUv3A
5o.L7bm5.PdVXIKNLrD+p64yUziuPFeG6k.e9y5kVWX99rIQ0T84YY+f8rTd
413d6SK2RJ+MMnWnoSayzgejyNbLTvEke.g1gLaFOG+RZ1ClKnUD.dub2JpS
WzzWo1aLL9x1ASDCL.VrqpB2stEwWuovVLGVepoT1BsrU+hdQF7uK27elMld
hGkbITFNBi870tvqAPPUCH3dBHkBQnMPgnrPZ4N2fxQfvgS3i6XgmScswRJm
2WjQWTA6nAEE1jE4XAemU4+rL+Wqez57kdwqWkO0Z7qVuu018uVmO1R9YMvW
6E9as1jUTjprAp24HWXY7qZWtF310DWus590PWvM3F1LWws3NtUWxs5VtEWy
s6dtUWzF3l1DW0cwccCtra0scytta18cytvazMdctxq1cdMtzMxstgt1q189
klYtzB9U82p69xly+.5xtpyPdcKFtc64FXSuV65TacJurqJq92coGuxd8lZr
aWHyKAHj56KDtYNfPTVdEfUVI.SLDdUfDUm0MYNHD+sQbDUON5LKhhN5sJPm
ctMjkHNh5KBZOOHnN2FPk.odm9WJH3uGBRCEtQ.81dnUyPHtUH7ACgwLUXhc
kaFvhQgtuhh3YwnniNexPUHuNzkDFxAgmSIcmQOBZDDCuZgn0lcVWcEdZqAy
u0jDcmCQQc8XrHkDywPXuQv4wyblMvknekQJBGr8LZUbQFhiZ2HOWSNUCfVM
.fzlAPZa.nr1qd38hlWUJVlHalkiAsIxhYlZFfTExzHhAqGwPyhtq1CBE9tC
Dxk4cRW6O55r4x0Uqn4He1qWjKrEJjNTGJF6XNaQeiCthmAbUyp817HrYfEZ
.hQvqIh+PoP8ePHAl4RlZAyxYdTV2Esj+GEsKetlQ2z3SI6xkax0mAWy.9rT
dPz4j19KuGFInuFo5ME51EJrxmMNwWmge3xkx2zLkilUJG2ABWpkM6BERG2l
SgNKJrsKjt8RRdFa2EP28VHVzEqY4ry7RgtKcUKRWHPorLYtIPoWHTWnP3sf
BMECstADnUWPvaD8snMzzEKgN2.5qS1AuAz2lw0JXgNKVuCqj6Hs+i5cl+QO
NOIX6ItNT5pJ1idsqv6Ci25Edw12V2FGe+0LvzVXN6hCCAmK3C.pqUsDpg53
h1Xw47PEmk.MWnNT8WUWDDWYk5zwIS1gsUT5BGEC54RrwdZlNZsX59ATWqQJ
DcppQprRnFo+ZxYO2ENFG3e5vwryigNKb1PM0gaBUjioTvLaXMS7DCKTOTyI
FMXcXzbnCqEjvN5LaBc95VGt0ZcDHmU5rZLbxJ0QDt.7a88Zc760532q0wuW
qieuVGautJ589XinCbiaLd6BczewmNu0qy3tENrsfAQF9VvnO5JI5nu9ZX2.
aqBQk65+Oz6JJCMKkBEVWOYnMZWgnuoJ.EqYorIzxsXKc8mP95YO9GpYMUEP
2ECaX2uV1P5osbTH2npQISWmt4FTMJSYYOhmypdLSeOyI879cRXX0exbZMz8
amJmXgmhcDdguITHZGKrC7buWscXWxH2h8RdgOA2kcRFcKTQ5h.Hhtv2GTD4
6aS1MKE6zYYWxz43kX+sw1jcYPK0FvRcgHO5mhB584AYYWePJ0EfREAmbqfH
zDuGCHa2gfO34ZiE0eQb214yoCqdtoh5k89fgxZxqYC04wN8xMrYdvmDA8y.
Wd5VY9NY0WTpKV5v3LKcjIAc5mAH5TZAJSpXfpXjQDjtJ+uFoDQZP7.1xbul
2s04bbLsB+9Iq0UKK7cTopP0JfMsuLv5BO6hHvabpoyDAzPpfNkDgwPwjREW
sps5nBzTSEFgE1SIUPMjJHSpvokoXAbJoBaCoB7TJWXpXwTJUfQKAoBbmjJJ
qPe82+gwmzPlJpT9AOD3qNQ9Syuzir02bEpUV3n+ZMtwY8MGUu1xv0ecXFUJ
iX5zMdBE5HlZPDOkh91CW+Kqw7r3z1h9+ReN8JaNiMWlsFMwMRmd7Men6V0A
r9Dbn6lcyA4Lr6BfeMfuVdrHtUV4X4TYgx7o3k7wEk7U6bcMWwDz2uaDJ8p0
bQhbE5DFjxqLyTxOwykYDlV4MLSwpQqoiz3rSud8QZLhVHBeUQReAe3ydR+5
+hXREXa+f7Wvqt4ups4Ofx+K3SyvEhg42OeKmK+BJjNk2Le563JiOtv69Mbm
CRqop+tDnOBTgiLSnJ6OCYApSmYA4gZqUNKPnChEpy155+lebjWn+Z9qbiub
6G0amCGn9d4PWrsNS4E2P18wl7L603oM3DvqY0COBYMEb6t3H4kpgX3eFHdd
v13Xtw2UEN8vBTwJKoAt1Ueqvhcmgo3tnYhF06jhLk1ySwCiaGS0Vh8DvmSo
Z6fDj2LABxY7byBxpOfx4TTiAWtvfLj35kkTZUa0sjjB6u6UnsoiDEavHUL+
b8djHaLgm1LFiDwfQ5Bx47hcwCancMgIclMlzsZlDMCCsU0CMbXCMbtDhvlH
tRfiwH4XBO4NFizrIchMQDoXNU5+HMalJMYZBMJBD1FLRiwrDxDQ7wXbLQqE
MZiDpkQZLTkPlHfWL0k8ejLQtiNFxcHSLOLF5rHSrshFioIhAhCViz3faYb1
7dEqNnwAZv3LX9wDSPnwXjnvYRniZjF6XXV0xvIIz.GG24xDjQpqkkXtXaun
aTKXBqu5UK9uFHoYOaKewnnzFCii3YZfLZbPiAGQMYjFiIIrQij8UijdA6Wb
jFHGjKNBCt3nK35irf5OpBt7HJPsSc0cjDb+eb+eBsQeWGC
-----------end_max5_patcher-----------
I'm pretty sure the problem with that comes from Max... doesn't it, @avilleret ?
or maybe not... IDK..
this is working for me if I'm removing the deferlow
I'm on build SHA : 1.0.4-7c75235
Just for the record (as @avilleret also reminded in gitter), the deferlow is just there to emulate a heavy process (e.g. loading plugins and stuff) that is deferred. So removing it is indeed removing the problem. :))
so the problem comes from Max (and is one of the reasons why I'm fleeing away from Max) I don't think there is any reliable way to fix this in Max. @avilleret what do you think ?
in that case, we need to hold the value somehow and apply them later, when the paramters are created
there is also a "create node" flag to preset recall method in the libossia C++ API that we could use but then we have to refactor parameter registration for that case to prevent them to auto increment node name
I don't know which way is the fastest