ossia / libossia

A modern C++, cross-environment distributed object model for creative coding and interaction scoring
https://ossia.io
GNU Lesser General Public License v3.0
206 stars 33 forks source link

[libossia Max] feedback loop ø.parameter #748

Closed fxw-fxw closed 2 years ago

fxw-fxw commented 2 years ago

here is the patch... Maybe a message like 'set ' could be usefull


----------begin_max5_patcher----------
564.3ocwUFriaCBDF9r8SgEmcs.hSrSu0qU8VusUUQDaZBqrAW.uMQq12qdu
uXEFrSa1c8V2ropWvhgA9muggw2GGg1pNvMnj2l7ojnn6iih.SdCQCyiPsrC
UMLC3FRx+lZ6snzvRV9AKXtQwp2xj6FWP12p5sMbKrKxfUQM3r6.dCczyfa1
ic7PXffiI4yCK2wrU6Excaz7JavCBYQFNMoXkebYoejRyvm1hSag7jzdaODG
6GRmIisbigsi+DH4G5TFdhxT80dt9XBgtHOYcYwp4SMdRreQjWCTRngOqHuL
yzKf4ItWUFifkUyuSTwSt4c2LaRIWFnDLEPrL7ASt92tlFQMWOaPVrFcJb0r
Vtkq2vkrsM.O3KhxbbQFcYZxBxRfOL.aN9+IlEWeLIkvCUZd4+LJmnr8GeOC
vH4ieX5r.8YxB4SW1l9Gnkthl4tSokvc55+hJWvCTiP93VwfJd6mmALpdc0X
bMF1I+RnZtwJjLqPI+cmJNyIk1mXlLsOWooyPYeWOuSuNgvyPIxUPn4kLW+7
IS7qS5h4Hc9SfLT.w55tiqMCdCh3drbqBBrxTXpPFlB09Hsqu9n+vSbDS6Jq
stZ5dMDXnCqBOIPsJGhxdwPIiCOmjF6wlGWzJccOfs9dVqpksYuXmi8c6s75
MJs6m6C+X0g2WX8M1yyIrpJtzVoZBwoqIh+cD1+xJz+H6D5oC4VsaCPf.pNb
3stSVLdiLlgf9F93yzwBIdn8R7Cw+DfvmrgF
-----------end_max5_patcher-----------
avilleret commented 2 years ago

this is not a bug but an expected behaviour. [ossia.param] is not intended to be used with gui object, use [ossia.remote] for that purpose. [ossia.remote] provides a deferred left outlet output prepended with set message which is particularly useful in your case. If you want to use [ossia.param] in your special situation, insert a [prepend set] object between the output of the [ossia.param] and the slider.

fxw-fxw commented 2 years ago

Hi, Thanks but [ø.remote] is note a good way for me. the loop probleme is not inside Max but between Max and Score. I need a 'set' message to send osc message on UDP but not send value out of [ossia.parameter]. Maybe a "@set 1" attribut will beter... here is a patch to explain :


----------begin_max5_patcher----------
1682.3oc6YszaiaCD9r8uBBeYu3ZPR8tmRQ60BrWZuDDXHaw3vsxjtRTINcw
9eu7kTnrkjU7irs.6gHGMCoHmu4aFNj7qSmLaEeOobF3mA2ClL4qSmLQKRIX
h88Iy1ltecdZotYyXjW3q9xr4FUBxdgV7tBxNBKCTRD05XUa4UhbhP2QjUJM
S2d423mPQ0M0zNwq6HloxrYfGrp1kJV+DksYYAYsvnM.5s.NGDfPpehvpmX4
yl9HGYJqYfUx91zopGyOKi74zBV5V8Ta196wObrwmJDEf8f6VQYYBNnLmlQJ
9L3NJ6YZIcUNAfp6TNkQVyqX5dh6Dp75.pR5Gpla+aDPlen9GDFp9wKnWLyJ
rfTJ3E1QJ1uowkoOSxVJmXxAXox3oqpDFdzjFHUMQJj3lfTrjvRknfROb9QJ
2ltaWiZsVs6585zLn9vruAlQtvMFdYLyf.MmTixHe3siZdYwe9mmU5E.+NF+
g9tD+EbYweVH6GweiK9CEdYLy+mD+4cdVIJN9FG+slucKgINxJYDRF.jB9jz
L+DXKorLcCAnh3T1NubciLNC7G+1mARZIfwEF8OmlWI0HEweDbOurjltngP7
vB.u.rM80UDvJk.0vbmbb.nOApo3KVrny3XuNgbnyzeMOmWXfO3hnXeOjWDN
vOAhRBmKEA8Rvnfv3Pbje.pKIHG.1wI13C6xQkX3gwFWTr9M+nOB5HnfHpJX
imKddTQbhlCh8Mq6AOhJ1B2SBgQI9dwIX+n3DeMJaefNUpP8fSJNLE2izbxy
jhRJm4z5IyjozbDOwoKJ.7Kl4T77FQTlQDtQTAQs1go+vFooERHPHs+pB6BR
g0qhp9LbYFPVEswapck1oj1ooVHqbW5ZSmU91Z0NUQjnQDXn5mPeyJGwNYwj
jhM470+EIqUFctLCDkIyDIi1DohCl6yxHOlVkKV9HmIJo+idFfTLyNz+ncF1
oxlEi+kBZZdiAroflwYpIQKOgRb8vICIzw.n.WiQ2BV5tN5rYItdTVJMxpxU
oE1E4c8eyDbddaUM8Km7nvpdGkwN.EE7c8qrft4oA56JtT41g91ZMkKqXFsK
kbBwR0x4saWZdtMxt8meeJitMUPDTiK.CaTZVP8ox0E777V1qQyycnISxwWS
dglIdROPtjAYyo6pIQyZ7xYzMxhRZKSjtorsjRwqFP2QT0JaL7RAY6tboUzt
AxnCZon7I9Kk1FVSzbAf21spaLsaZxVxOHcoI6VS.aeKYbz9Ab6QWI58Mo1Q
5zfdv5mMb79RqYyQZVs0EMzS.VFYuSpj55xlTu.w4f.5oP+..pa..41i9Wh3
D3CNJdr3C7Rwm2RunpTvRZ.OL0Mm7Xqi9cELHyLuJM+.FbWwJmek18rneNOM
SU+EfreGujnpG6uqHEuJyx64CRhiBGc4.Ama8.Z+rsn.j+sdmgMltoXRS5rw
ajvKwHQdZyKJ3iq76+jRdAfmMXwtN1mev.0l5EZpq.6V410cmRUaW029Awuu
8C56O31uWkx1L79BCSLLx3dJS8l4x90JY5jQ6vvC3vBM0XifZaHDc8cX18tc
jMrNmJMsWjoa4uL5fK+wDb0a0jCA.dZeYrI4hWe..1YHZp1U15qc3n2n8tdI
CXbAXa3X7sJbrOq32k6YIe7FQ7rSd7KlThej1f1SfFuQDMfQHKo9VmXbn0vZ
xHBF57zvcbl0ngOhxQbtYHr83Ii9HOR2JL1CBgQIIcevtpi.0IszoOJi3yaY
857KlSWKx6DXv6qDRSNTmQKBmHGKTj5g5eCQQuUx54bvsus0KMb0lQO27HFp
ozvl5futmM+2iClGcYGLu0a+iClejEhcYmX8G14x6RKsjtdHmGn8jDN7U4hf
Pl0HGaRl+SP2zip6toqcLZyTIus6ojWUrtFbp2TI3MKUtqZAk0bNk2+1lx.1
DTGQAF6H4CGwHoVm3xGowLPss6szrcbJSTVeIAQKBjTAnYWkQ3ieyOPeAB1V
pe6Bm13w3JvWA7AOJOQxP.T.xER7iiN9MK.Ya4UAfFwz1usymWjYteB3Meja
68btiETyEpbzspb.p5EjnvJLLxbXbvl2N1fPWjAcf2sGKJ5JP1p+HCypuFIX
TWP8osofgn0VGfkH644e7aVZsskWCZ8ASodl29WCDZTYFCuFij2XhUuFCzXR
ZVOatrQZL73qQR.aXej9pFwgl8805MDxkCpeqkwYpJ3fqaUYWGbMqGbEqGe8
p8e0pGdsp5iuuuqSc52l9ujeG0IG
-----------end_max5_patcher-----------
fxw-fxw commented 2 years ago

An other way would be to had a [ø.param.send] and a [ø.param.receive], like [udpsend] and [udpreceive]. it would be useful and closer to Max's uses...

avilleret commented 2 years ago

I'm not sure to understand well what you really need. There is already a 'set' message on '[ossia.parameter]' to send value through network without repeating it through object's outlet. There is also an 'osc' message on '[ossia.device]' that allows you to send raw UDP message to connected clients.

If you do want to avoid sending back message receive from network, then you could use a simple gate like that :


----------begin_max5_patcher----------
1336.3oc6ZsraiaCEcs8WAg1jMtF7kd0UoncaAlMsaBBBjr3jQCjEcknbb5f
4eu7kzHGaIywV1YJvrH1QjL3xy8btT2iT9x7Ydo7crZOvuBd.La1WlOaldH0
.yrWOyacxtUEI05k4slUWm7LyagYNAamPONpcjxl07FQASnWOxNZdldU7zO+
KXb6RMqS75FlYG34AdzN0lDwpOkW97SUrUByrDe3R3B.FFn+Jdou7S7RX2ei
Lx4ksAFqF6qymq9XwEhMnyXCAOSrEgzv45gsR1KxM3APS.RAEfziCPxg.LZP
7klT9r2BINWX+cG3RjOV8kORi5AwKZ5v6yIBF.AbWshtLBkFqAHdb.NgD5lJ
1FVYFnlIbFigmGFwThlDizbYH9JPhMqSYUGGG3CwQfW2lsJYMSvpdhUljVnQ
CbPL5hfk56qfW.USmvald8bnSzYxm9PhoZDc03y8.41jpRIMomY2C3GOD7IB
QEXG39z7xLAGTWjmwp9.397xs404Rh8aExE4krU7lRQeswIONCE6MlrP+iCo
LZfoR.qEFD+AyY1AqX0BdkMRj9o35jsrrmjaMYHdRA+7zFg4Nzy5RpiJv6O4
5jMa5lVOqlv9doMSd28avCOu5PWzllxPSdFQg+nVARunVbdmp.QuKUf9WVEn
Mk8yJv8RpASeEXq17+IUfjyqBDEEckq.WwWulUJN.kkLVF.j.tSBy6.VqH.U
MmB675UciwKA+0e7AfTVBJ4By7aSJZjyHGh+QvC7557jkcb+iKA7Jv5jWSYf
T0.pvbuLN.zcfVI9xkKOZkL4nobXus+JdAuxj9fKCinDDID6Sign3fExgfjX
LxOHJ.GR8QGaDTuDbORj3MBQEazgQFJJReEM7FHGK3IYJp.v1sgWyTTy+zvp
dUd3CgBhiBCbVk5eltKvZzFarMgn2rtQM5pL117UL2AI7R.IhngWn+sqR7uy
Yu.vdip66gOp+HxTRf41SXROiCv2QORT5UzjDMRa5MH3Z4RZHJ62aj2g1YBC
OFgg68PlBPSOeMzCYZUQtDYuH6yh+hy0VztZqOxKE04+qluPJw1IK4T+Ecc+
8aU4IEmNsPBUeEYNwgLkONiQKFINysj3Q.gO1VLFcsJFGBE+IOiU3NHh7NYe
XlCDukXPyDH2AQ3Hf.Cu5GKN1cv5N5CLVi0G4zSLZb2Jt7LOwVmJg2R2cMXL
ABggwwG2imxMTuSkNc+0QmoCWa6Z5iWCImHE78YIybBZ+dDgwgxLMLP4TQ8q
Avf1HcdN3Zm1lt1WQuv7QDTKokX5786MhM82CO5nKyit0T0O8nu2stmdK5sl
WuYVz6KLsxtAjmuY1SJ4vWlhiZeEZVa7NdNyOHBNcT0kpu4MypApZ78InZdS
0p1zS6aXE7sMelDV4kIhbdYuEgLq4nZ.WCTjCwocybQAR8dUuYHBep3.mf.4
JEg5VCuRc7xf0sNmJcHvgSTlDcJswTjHcAPQSPfBcQrOEZvfaUf7cI04OEpc
pS0uSAKQcIP6i604Ya34kh51mrXn5dGgPyyeJDe3UTyKz2tR8UWpJ1oDT7X6
aeT+cJMJ7vqns++Vfmr8sCaa59bR24XvK6brXWxXSwIYHmp7mhxDjKk9p2X1
vp.hebOdmPnGdkUEXW4TnBdyVZf8McJxPNUeGLEQh3hzdJBjKmB2taNnMQYq
jaYU01UqChri8OadgLQKzWlWZtT2mqrKWksPy5Q5tS8RpjMPKj811TYcYFXr
m3slKKVKaxs8cHw2bkQaoc.Ui+0aRLPQ6ZX9Wm+e.ygDVn.
-----------end_max5_patcher-----------

Here is a video showing how it works : https://user-images.githubusercontent.com/504914/138609737-667f97f2-dd5b-4efb-a53a-b6062f060967.mov

fxw-fxw commented 2 years ago

Thanks Antoine, Yes, 'prepend set' works with version 1.04 but not with version 1.24 and later... So i can stay on libossia 1.04. Thanks again

avilleret commented 2 years ago

what is not working ? i.e. what did you do, what did you expect, what did you get ? the video was made with ossia-max 82dc72f (which is much more recent than 1.2.4) and score 3.0.0-rc1

avilleret commented 2 years ago

just to be clear, here is a demonstration of the 'set' message working :


----------begin_max5_patcher----------
1419.3oc4ZkraiaDD8rzWQCcwWTD5MtkSNH4Z.lKIWLLLHk5wgCHYqP1TVNC
l+8zaTl1ZqoTSMCvbvRtWjp9UuWUrJR80oSlkw2xZlA9UvCfIS95zISzSolX
hc7jYkoaWVj1n21rlh7Ur5YyMKU0VlWUvD50P1IyWo2IO6K+Blzam7VwG255
z5zRlfU+DqJMqfoVCZWyrcwqqYly2rYfG28wDK+m7pmeplsTXVMHfr.NGPSB
UuggpWQT4afGUeluMcp5k4NhxJ1Kxie2YWv1JLPpoIOcQMqjKXfg4IP3C6IH
GEsys+4BpC0ugfIZviuTT2Vl4NhRNLfvWD0JAZVZ0ymDrHTjFkDp5s.3Ug0R
VSS5yr8nXzAgO9.Ra7ok1CS9hwTit0HeSVDLBXC5J1PPuhsf.Mb7B1NRjo.j
AJ.YtpciGXvnVaN2QcpkKQAXsNEccwjGFuOmJy.g.NqVQiAgR0oaLvz2.bcM
aMqZEngIbkTi7IF6R1DqSyDgugIVCu0IVIXMQF5i7p9iNQdkOIQQlnQjO3y2
AxMo0URFQux1GvOtO3SEhZvVv8Y4UqDbakCeBbed0l7lbIG9VfbQdEaIusRz
mxOqqJYLJtv5x5JtvTSEIP4yrenZVifWa+RUxmcqzjtgs5I4YS9s8jB94YsB
SklS14TOoVt+hkoqWuaY8pZBanz1.qcEdqpcsSaJSqNd0tdIQfzQnDmwOBD8
8HBLXLh.streVi.Qg2pHvNs4ObQfDeFAFh8W.3RdYIqRrGHqXrU.PJ3NIJuC
X6DAnB4TPm2rb2b7Jve8GeBHUkfJtvr9lzhV4Jxo3eF7foc6cr7iK.7ZPY5q
YLPlZBkYtWZG.5NPmBewhEGLPlbJOt5zujWvqM9I3hnXJAQhvAzDHJIbtbJH
IAiBBiCwQz.zglA0K5qGGdDJDdBdxzFerggh0ZRZjeEiE7zUJl.v1tl2vTLy
+1xpeUlkgPAIwQgtpQCPiQc2FW.hNFEiZzUqXaxWxbFkvQ.kl.xnfQIR7uyY
u.vthOZvfkoXyMhghI85a.dSZQhRu88Hg087FF5gljNFk86sxKP6pK.OXBKv
FaAi0hOzUQXG6lLsrHWBsWj0Ywew06NA8LAWelWIZx+OMggTpsyFyo9D6JI7
2pySKlcd+BQmzI1jygLFgiDWYWRxfYWRhMbL1CgiGCE+IeEqvYPDO7bJlBwL
oDGILnYBjyfHZvfHxm4EO0kv1klafOLBL5zoOOb2JtbOOw1NUhFot6ZwXBDB
iRRNbOdptg5kU5r0WG6yqp2kGIVGAFQdyGLrdxLoP6Wt.LIRk2NT0Uh5eCgg
ceoWVKbcKa8W8YRnVtpRDB0xWKEdYM7ch9z+NzjNZLZR2TD2Oq8nSuUsnaad
cL5PuurzJ5Nh37Cqd17rixskERzUhZaie+rL+fn2zVUGn9gefAZLol+8DTCu
sdYmmn6GO.3sC+JIrxqRE47pdaR8b06sox7Uq44UBqICB0UsGFXpZmpkMueD
Mv7TrL6TO5HRJWO2e3Hc3ycG3tJKk3fgh7fchcAPXOYHz4LjmrC9bJKnGLTj
KdNjGLT3sxPAHGrTfO7cTnKw+w9vRtXHzoRzDgTYOhfl6UW3dCnlmRtYa5AW
4QF6RRFev2XW3aePBXmn6jSwBj39ddRHZ+QVhvtSuvDNbrouWgwqUUX0cYyQ
0xn2kQcmgQW2U3b4BOHebkGjSIP8Q1FjKYPUOluiK+vDROAGFFu+Hq7ytSeH
+9vQ5HmapO7PNklLzGVxkJ+7BjbI4FxGkpgf2n70nKplPSw5xB52vparaVaB
YeSew7bwhmqGlWYFpa2Q1qgp0by9Q5dDlkVK6XQH6vns11oenoIwYkbY1mp1
baBHI5lptYGxlxTse0rN0.DcuaS+1z+2NJOEI
-----------end_max5_patcher-----------

and a video that shows score receiving the data :

https://user-images.githubusercontent.com/504914/138652658-ead2b814-c67d-4f17-87c4-378caac1ed76.mov

fxw-fxw commented 2 years ago

'prepend set' does not work in 1.24, there is a need to use a gate (not very elegant ;-))

This patch works with 1.04, but not with 1.24 and later :


----------begin_max5_patcher----------
1167.3oc6ZsraiaCEcs8WAgV6ZH9Pu5pInqKPW0Eyff.YI1TFHI5JQ43oCl+
8xW1Q1V1lNlpYVLKhhoHkt2y8EOWZ+s4yBVw2R6B.+J3KfYy917Yyz2RciY1
wyBpy2VTk2oWVPC8U9pWBVXlRP2Jz2l20wxWVyKoUfO+vmeXIb2RZ5qYMUTg
9wg1axJMO0pW9knAKj2KNdklaI95ZpQKCB.OZmZctn3uYMO+TKsPXlkfRVFt
.jDotBg5AHzxPvipG46ymqtrvUn1Wuh1FrWZs40TAs8IZS9pJs5D5HFSFGin
yhwEffU4MOeYrlQznDgU+KJ79v53t00sz0zlRPGU3p+Dl3SGZTnAcPn1uh7H
H2j21H8n5Y19EzimB9bgnErE7oUrlRAGzUwJos+A3SrlMrNlLF.rOJuh0PK3
8Mhg90qZpxF2TguTbg9OGLYjXrI7PGXfiT1L6C0R6D7V6KESFLSW9FZ4SRcS
91dRAe1pdgo.wr8F0KlKLbx570q2OsdVsC6VcaF6tOxCQgSQrIQmGZryPR3G
eFHwmnDaprL8YfvOhLvnoHCzZx9YF3HF73oH17GtLPrOQILMcpx.uKP5SLhx
zfCQvGiQ6yTvq3sl0FtLKNLIifSyPjjzLxBf1yab+90tTwyKqocc.5107NJf
2U7O8z1uBfYwDPVZRry7b8q8Ryv0ZzfjoHjvPoujtgUPcFjg9GjPL4MN8uaP
VvqqoMhSP4exnuBPthOxY1uH7B0nhMaFb.M8vO7VRHjonmDbblIhL0C8jbNW
1u0K2OzUXhtYGVroFDLTigX3c4vT0NxeldBFJpXRn8pjVC+0QwBZDrrO45u3
MhN1+pcMPk15ubtcnGqcjolJK3AEhUxdOqsGZY4UA9NcD6p2Emcyd2HjMcL0
CoimCE+t5bPbFDo2dMEidaJINQXP6Ib9TbvI2LHPg9rv3k1CaecRvgDYuZ6h
v2QMRWHrZOyFHJYh5lpGgvggRRRYi2Skp6iAkktJUuzfInDigVaB9DtdN1Cj
oF5fWbBJSepepKpOFCS18NeecLsaZq45vf2ElKog5nWqG780e0EZK9CnmX3T
zSr0a+ydhGYe8onYwnH+2R7v.SaX2YBOOZ1qVncBOEFnYWxQJy7CR.mVp5T0
i9hXzXRc+CcPc791hcVB62t.3McuThJVStfwaFrFjYMiFB3pbTcvdUAo5.7t
kDIzAIo1T59kjKB5PbWyJWyYMBq2BlkrLRFeEZZVMAc5HRj97LrqTO5NUaD7
+IeNxIOQ1kLPQvglDRZxoirFH6J8hAxA0lbnym2ppmuKGcRkLbbACuKAejW3
LRNwCAEPmp33iBApiK95XJ5Rge3nrAAbXYc9SFYC+rqzGgeGoRmQuI9vB4TE
rXeHIrK4T9PPtTbam1beRxk33CWzfygFt+Pme6jmOSLnrUWYjEJI1bH2ZJZG
NR1wxfXP8nC.mgkfjIwFZamUC03RRX6EiFktPOj0XFp46KI4n5JvrdM2jf7V
ISIgjYSeqsGiXCCz.0Oei1ldlsVjzhNW0kkjLnh1W25biwSyYb92m+ev5wt9
f
-----------end_max5_patcher-----------
avilleret commented 2 years ago

I think there is a misunderstanding here. The set message is designed to set a parameter's value without firing this value through object outlet (wether it is a [ossia.parameter] or a [ossia.remote]). But the value is spread to network if your device is exposed. This does work.

[EDIT] : the following is false : score doesn't not send back a value it received to its sender : that would have been a big break, but another client might do that ~What you are facing to is a loopback between oscquery device and client:~ the value you send to the network is sent back to your device by your client. The set message can't do anything for you here since it only works locally : it prevents only the value you send to be output on the same object, it can't avoid to output a value received from the network even if it is the same.

I know this is confusing but I do think that the issue is on Score side which sends back the value it received. Thus the gate mechanism I show you to break the loop on device (Max) side. But it could be better to break it on client (Score) side. Instead of a gate, you could use the repetition filter on your parameter.

avilleret commented 2 years ago

furthers tests exclude the responsibility of score in that loop... and since the loopback only happens when I send a value from score to Max, I suspect a locked mutex in Max side. I will investigate further how to fix that on max side

jcelerier commented 2 years ago

maybe the changes on parameter pushing wrt. defer and that mutex thing have fixed this ?

avilleret commented 2 years ago

Here is the problematic part of the patcher :

image

With such a design, when the slider value is updated from the network, [ossia.parameter] outputs the value which then goes through [pattr sliderP] and [prepend set] objects and back to [ossia.parameter]. The [ossia.parameter] then try to send this value over the network which is not possible because the mutex is locked. Then the thread waits for the mutex to be unlocked, which would never happen since it has been by the same thread. No more network will be processed.

I got the exact same behaviour without the `[pattr]« object :

image

When used locally, there is no issue since the set message avoid the repeating of the value at [ossia.parameter]'s output, thus breaking the Max loop. (But the value is sent through network).

jcelerier commented 2 years ago

thanks for the investigation ! I wonder if there's a way to provide an object which would have a behaviour equivalent to this subpatch directly (parameter -> pattr) -> set.. what do you use this for @fxw-fxw ? is this for some kind of preset system ?

fxw-fxw commented 2 years ago

HI,

The patch below works for me, but only with libossia 1.0.4 (2020/06/17 - OSX).


----------begin_max5_patcher----------
1957.3oc6bssaiaCD84juBA+riAuHRJ0m5ts.KPwt.EsOTTTTDPay3Ua0ECc
IIaWr+6kbnjhjsiijMSZ1VYfjXKIxY3Yl4LyPImub4EyVlcupXl2248GdWbw
Wt7hKfCYNvE0e9hYIx6WEKKfKa1MwYoUIylaOk9sQowpR3b3GNXVUYyQI0Gc
qrb0GiR2bctZUoUhDJdAZtGQDZ9CCAefr.48m0iwNMkedqxNfYyl6MaoLcyr
1K4lr7DILe75iDsFTzrke5JxrVgmKSTkp7qUoxkwvzgLm5qWdo4WyG3pOUcm
ddal0R08fjmsMWsUkt1qPUNBjAeLjAsHvWvEXJNf3Ghvz4dXAdAly4TQnuvO
v724dBx.Ps1S0Aa7ErFccUVbVt8ZQKB4H87SCBI9hfP+4dfYA9E1HjyF0tUl
mpMFvYhuMdevTVVl6oOi22GkFUFIi0ReDvJcjvJgHVDZdE3yPZeQBkqWpH5v
7FgeNL9xaT5B4sp0WqOnVQt1r5hVVUZC6tnExzC1tZaLDsB9Qbe2+jIxsa64
caMTNxIOqnHRtnUZVKjAM7zbBxRWQIbHG+PMAg9EV6aRHTeBGahFFpE5vVGw
rNPCbIyhiR2kLDTQyw6iWEYU4qZDRq016AMYspnLJUVFkk14pH8tlr70p7Gm
IxshFB26bUIQq2lEkVVudI9nEz8hLXg6GYPH3y4Jwbz9jXGT5G3J2G5vmIzI
FDzUCvmorXCRVh8jk04TGaeqJun9xAwnCa+jk3NXN7wnT6Gg.rY4paiZtd6Q
j453sRcvVUtk+8dt+L6Pyz.ZZUTMlpWfZQVT943cCHZoteS05nresTVVUb8G
ToU13e8x5FYUbYevX4lahhiaSyzkzqIXsNITCoVuTRjPeLNvjDhhoBBGdm9M
Ll1K4AVRXL3lA4yz9QDyk5yIBeF7t.BkQm2mbEFF4AYYnY.IfBCP912oODtN
+WyvzUgXYZIBSxwFx37rsY4MFU8PCau9pxrM4x0Qpzx8InmW6KkqOK.6.lTi
oIZ.MpYLc885aLRht+bMBsJ3gwTpf6Kv.jD3Sw.33uCtbhv4NFbGaDbIV+iV
v0CieaV7ZueNyjxI5XH+MYZAE820rA3NkQ4HU4C9u+ojeyXz7LuI2TSkQ46V
F89pX2rzFBtAahzovYteENTjdbqTzqvU5U3o33iFG2wTdirIKKtmIdWufi6p
6VKn7dwPbVmLjtgP9mjIYIxq+XzFcv6lOVZ50JWqHpiA9xUqzRqyhDaaykse
utmo5ocG7vDueQsoJVVWgyoOaxkEk4xU.VdTeqd1u.tOiys7UTNBJAJ.KvDV
O623hb5RcZ5RDj30QolxTUscw9HafvYBC5FnKyReabkZDn.EaBWL5Bus3vv5
HHWqZ+bU913Qob55Y8CMpjoMWQfsdUcoqLWpb2DWU7wGwGT2RXT81oM3o696
t9N4sJyvFi6HFrDHVPaA4G5Psezz..oumZu4Coqu2vKQCIXFG.QDvXowQeSO
Cv7Q5Nc19IBeHogJVkzmQPSFzcNH.0.qqZR.Qw2W5zf14sPOwP3ZeqsUIZlK
vXWOAAP6JXamKceIFfivSwE9zlzMwYK0EMkOByIWqmTXcGPvBgvxy3yBoCPi
y8pkXxm+grjjVZsAqoEOh6bwIOweZ4xo71Cs.rgltHzYbX+UQbzZU9uY1Jii
Ym1M4due4HcIN5V0B6N6NppMzTOP3OvezZjZX96RzsK0YHMf.1w.dPfcaMBn
bL5a0L4wYx0vsz4wSJYoPG7Ll7LrUT3QVIkaBeexBVb8lQ8slyShpnPtQ8tb
kJ84pq4SyD15vf4LgukpWmmjAo5w5b8fwT3+eq8gr1drwriKuFMFP8VvvXlZ
sfPKb6d47eNqwtEz6BxU8PhRc67kU4XEr2PFZB4glYsWB4CUXwoPhR9WjD0d
+dM8RebJzCfYuLcT2QAIulUv7r6RGMD9fdwZ2A.5yjF9CeVNdEDQBY9.2mPP
oDQcedXL08J3.RjeHMDPOp4EPnCsP6dk6C5LaokxQqdA9Hc+wPXKGoUN.J4g
3Pl60weWEGmc23UQBCCFVQ.N.xEhXZq9A5onOmEKDgBdNV.juEW.UIKU4uSW
6ynw+iUWh6bQxFwMoD8TR8DRMm0hKm9Rn0y3jmhsiN7ky67Xv4yBBDtqhfge
2IeoKKXqb0e4tcJdazVk6JxK26pqtZ2M1aP67r.CakrtJ.FCY23MNIjSHeiV
7VejX7DOsM+3Ca8Ljbu6ccX9KGLhdEAinIbzE3HYBFcALRmfQW.i9SvnKfQ1
DL5BXjOAit.FESvnKfwfIXzEvX3DLdhvn8g03kb6cerZ9Gt1N0AJ.FSnfFEr
OTJu6Iuymiae+NzS61Y83VM3ETwouEKLD0uKQF7Htv3z9qIGYgJF+y2Uw4sm
IG61ML+rfji6s+R6RWbd8x++TXhNASCAlFcu3sOmjX3osEzu5GA2mcr5UTgR
EmWu3+O0aiOASCAlDSvzPfofIX5QfoSusH62yBaQsMe8GfNheEU03IrrDDD2
lrByED6CAR.BZ3wc3dob6H9Rw9dYYl26Me4Pl4J4mKSKhkkN7F7Vk9D294iM
e1+gI.+CMwLgEaq+NhB+eO4xud4+.sJThX.
-----------end_max5_patcher-----------
avilleret commented 2 years ago

@fxw-fxw could you try with this version https://github.com/ossia/libossia/suites/5951824853/artifacts/204240881 (on OSX only)?

avilleret commented 2 years ago

I've inserted a gate like effect in the code to avoid trying to send a value during a network callback

fxw-fxw commented 2 years ago

It works well !

but the Namespace is completely disorganized : I use instances of poly~, and instead of :

model_A.1 model_A.2 ... model_A.x model_B.1 model_B.2

model_B.x model_C.1 etc...

A random organization is displayed :

model_C.6 model_A.4 model_D.12 etc...

everything is there, but it's not easy to find your way around !

avilleret commented 2 years ago

I'm sorry but you lost me

where this namespace comes from ? from Max itself ? from Score ?