CNMAT / CNMAT-odot

Multi-paradigm Dynamic Programming
Other
114 stars 11 forks source link

Proposal for new object: [o.substitute] #403

Closed superbigio closed 3 years ago

superbigio commented 3 years ago

Changing the address of an OSC packet is a very common operation. For example, in my specific user case I have a controller app that outputs the following set of OSC messages:

/source/*/azimuth
/source/*/elevation
/source/*/distance

in order to be compatible with some software I want the app to control, I need to be able to translate those OSC messages as follows:

/source/*/azimuth   --->  /source/*/azim
/source/*/elevation --->  /source/*/elev
/source/*/distance  --->  /source/*/dist

I made a patch using [o.mappatch] to accomplish the above.

image


----------begin_max5_patcher----------
1062.3ocyYszbapCEds8uBML2UcbwHIDO5pt5t9tuSmNXrhKo.xCHmaR5z+6
U5HbLIk.JXEl5YrwRV1emuy6C9mqW4sSbOu0C8IzWPqV8y0qVAao2XU25UdU
Y2mWl0BGyql++hc25sw7QR98RXaIpEsunUd9CNlIy+dQ8gu0vykleeZH0msA
ERi8C1fLuRB7CPes66TeppntjKAfvW1TbRddWR2tE6ATURxGomgzbL4CG4F7
771f7.YB8U8I90505W1b8DkWxuaDhRXA9z9OvgOQ6v.GQaxnzFjPWS6rGKpF
g1XlggcDk3HhhGknfLMKhdSoPg8X9qrDs+ZDXwXVZ2tQzTkA+.QV6.iuHDMY
UbIu4a75rck.OCFi86xpOLO1WwaayNv+C671Vwolb9V5VcjSVcNG8O3oUR3.
vbiClHplLnRAOfRYD+62GyMASWDyMI8uPyMYqNiQlrPTOt8tSKc1diCbk8Nv
w16WIO1ik92JJpGKMFIzmk1+gJ6cTLCHppDVXP+GQuc1OjOQ7nI4bpF3TsVA
fHSmImEm.WvyISNc.VFMNKcMSyEU6Jp4nsHiWt5MeP8TWx.8YYSwgC7lVD9M
6KPRAe+jIzK1mQfsbVegeqJROWhNG4+gsZ8wI426sykbAW16b4focanolh.o
oywuIb.8CcZ+F0y+8TY4+kk+C9La3S3q33wxrGFghlz.ILS1fXH6GMb5pD0x
axxeVB9gyHpsS4hRQSmFEbz5+xS.0W+7TrrFn1hGAfv5LzKTJ01xBU3E1hlC
SLNEX7bpaLTrCd4hctoQT09P0NQI5ysbc0aonAs0hDoZWDk4iLql+GnZIYgp
VJ7UNi5zESFRfSgKgLGwP7BwPIZGpbZ1wRLozz893fYZReUxAs3s4cqIWCcd
26wM4uvVbwOUnazFb6L3mmmg4n9aiVp.1pri.qljhzvjK9BNHSb3qxvdEl+C
Oa.TuRUaZu3tPAxsd+mqDLFyte3tPIzEQeOuUVTC8tz6L5jI5CMnd9s.DdI.
JwBFE4.bhr.mTGfSnEJNcKdNAnoHjtWoqFHJwdUW2YpJ1eTM1kryKmFAAeXJ
TQIIDloVu3ZkLrERF0I5ffqUGPHz2GcfM9apQtPt.nI82vNPWSrIIG0E4dz2
HhIQ54Azuvph0859xQliILSevvkmuhZpwhUax5VcsjvlLafG.1EHYkuF8ZQh
YCmhcgK.0Hty2EHLLp2ezCCG16uEnaEkD22nqW4BwlLULhqzOSZycEPS1ZiK
.BaCihcQ7hMkmHNIQlMkmHtnMJxRUtgrTkavAVVD3pAZoTc34o5LCmnFn5Nd
Sa2oALTyhcq4dzkrAVVTaVBS940vuq374YvNYMpgvjpIvN0.xk28Ql4k7pD6
4M0mJfu8ZM6TPBy4Uqlbt8X2sMDFGb8uV+aPu32Sl
-----------end_max5_patcher-----------

As you can see - unless I have done something fundamentally wrong - it involves many objects and a lot of patching to perform a relatively simple operation. It seems inefficient and cumbersome in my opinion. I see the need of having an [o.substitute] object which would implement a set of substitution rules in an OSC pattern-matching-aware fashion. That way the user would be able to perform all of the above steps more efficiently and intuitively. BTW, the portion of Ircam objects dedicated to OSC processing already includes a [spat5.osc.replace] object, which implements similar functionality. I propose having an [o.substitute] object implemented in odot. Would it be something sensible?

equilet commented 3 years ago

I know it's not ideal, but I'm curious if something like this works for you?:


----------begin_max5_patcher----------
783.3ocuVszbZCCD9L7qPiOAsN32w3NSt1y8twCivVgXpsrqkLkjL8+d2UVl
X.mIjoIMSFIzpu8g91GvySmXro5.SXP9FIlLYxySmLQIBELQedhQI8PZAUnf
YvY+tZyNCytqjrCRk3pEBVAKURrpZk82xaKgSELoRUWsz7rNM1r6lvdjcvjO
Vy5hECCShw2aKJ9AM8mLvEIZf0TY5C47sqa.m0g00IXgsIw2KD2B8vUW2E1G
0ABibdeT3fx9yzo3h4U9lqVjkKpKnOdwyFesXPrxvRT01jxr9hE8o7xUP7OT
FvM6OWFXS4JijdadeEWdOMUQ.1iRfNWRfAC0Vj+jRaG3w+p750vjKUaAKcvM
O+OVpjcntYQZUFCAdAeRyxdTPtirkIgO1vDBlX1bf33Jp9NRbh4JdIsd1JNg
TPK2jQmESSPDD3u5lps7YcelPrRAMfLWtbFv7XBfNuGIbKZOqz33BFeq7gYV
oyI2PbRPOLPekljuR1Uky6MSLplMfToOnRxbySLauSQvVxytzRFGSEreMCo2
4IICBI8iD2QaCt8L2qMXhVk43F7l5HtU748TZQNmkV0xU7pieeRGXTFWRk4U
70iC4sqCGoQ1az5P6WuNbPu86tS2IJR0iGoZ0cBC+XKPSqJqqDrKqMOoCuU9
.RPKfL6os4Jt8xqvtcJOkgg0hQSRd+KCBb+LFDDpln5ZqlCD37Zzbe8fftmk
sdSKOqfstqmpKJ7GCPFUR67lWfIIZIjIcBwELmZqVPY1Nl.K71+64BCtT5Gf
KNGMmOX7HsgP.9ZfQ3stt3MnF1QG03V7n+.a66qCI6OoXQI3k2qiyRc70EKu
Xk+awi8Q+FnCin9jyQMFMXt0yjbCh+7vfjLnaTUHoJ+O6GenJFQ4m1h10FoK
c0+xAxKkiYLgLmq57FfIv3b2Z9t8i2U3mvO.+3dE9wyXbZjVWum0HzfUt.lo
sqpAOtzTcLm2cTM5vngsOuGefRBsAlAHgA.sMpvx3vs9FcpBeUcCuMWOPEdb
fKUyK4zRlnVOoRMVc5el9WfnShVO
-----------end_max5_patcher-----------
equilet commented 3 years ago

Here's how you would dynamically reassign:


----------begin_max5_patcher----------
740.3ocuUszaaCCC9bxuBAcxY0M9cZx.10cd2SBBTrYSUmirmkbPZK5+8Q8v
4UcQSAVWPfd7Q9QRQQQ+xvAz0U6AIk7cxbxfAuLbv.CjFXfa+.5V197RlznF
sZbAWVWxdh5akpf8Jij.YUaSND7s.1y7sHR3X+EhinPIr6snn0THZz3N6UxE
PdUqvXzDG38UB08rbPiE5vDsaqZUkfxDXQNTdgMLW+3sYzSXK4OaXGEOty.V
1pmpAaBfRIKchpYp7G3hMqZfbkUZbTFxjjN0LkMMROMAGOPBCHt3P7nwdc3P
8f+Umag80MiyqJ.shuIAyJJdRR9AYCnvkMfTBRuQ9jEhsrZuEBBojsccAyaN
aoFkf+pap1H7rqIjfbjNd8wUdKnAKn9D1nNMQoJTZP974kfXi5Auf7QjaIQK
W5eFeCSxMjGq3hNyLWSKD0zvGorbj+YlsyoZkCTWHLPMeNSB+wCSoIiNweXl
gigO51atzscFhriU1BdrQirjLSHrMasPnckN8Tf0eJnCGUvBnOjGWqNYsUud
KKiR6pSvKAPnXJdkX04pjc0ktwuszMo2R2v2uz8mskk+hk+aPgokS2cEkzQy
lomRlX2c2c+aqoyq1VWIgOneQq5g9aYXxs822fIxgundGweE8NzYVeRbno0Q
1615nqdPx1AEqV2JJJgU1mj1nHsOEJXJl0aIY9jYSwaxn6zC56zPyfFKLxGy
Be7+jXrWmgeldH5f4RQiOyYHsBoNEmokFGqknYDN6.iI5somX6zTWHE9EEKF
fim2nnot3yFKGsx+s3I7feybgwrtKmCL5MXlj3StUq+kgAY4IuFMERlx+K9X
toXTie9ST6yHWoqqgC4X4XAHUbg4k2I5jQuzs9eZ+DeE9Ig1+wiUWuCZjNkM
t.607XUid6TeyVtvt07jl1.63c5a5GSYM3aSE9vrswDVz8SRoVp3WcaDsbWi
N7vgtzzGSv1BxZWGDS6tguN7ufIgrnG
-----------end_max5_patcher-----------

...note that in a forthcoming release, delete accepts a list of addresses.

ramagottfried commented 3 years ago

hi all, just chiming in to give another way also -- I've used this name mapping system a lot -- and it's pretty modular I think, you set the name maps in the right inlet and then the patch assigns the names if found:


----------begin_max5_patcher----------
988.3ocwX0zbihCD8r8uBU5jcsLNHwG1rUsW2y68wSkRFTRXVP3BDd8NSM+2
WoVBGb.aSLjrUk.Rpa0cqlW+ZC+b9L7thi7JL52QeEMa1OmOaFrjdgY14yv4
riwYrJPMbwp3h78EUbriQpjeTBRd3ohhcrR0PhqaizmJDxpzev0ZPnqbsKWT
Ky3R4+tma7MFi9lUzdlL9kTwyOVxikFo9QQqBbPAqiTF.Qh7z2n9qbOsIsad
hECVqwGh57TgxKPbSsKllXNE699WhvupnId.MI1UqXG3IOtqVjjweLiKdV9h
VrWXexSXRlIV8TAZzFUTRVquniWW3hdMWhiJ7t8ejPGjud+tTsQH1KZ6FAl0
GTy2WqRP2s6pxL5n7Wymqu3L9msrejlCImshG3Y7CPJUMNIsRpyJM6HKUviK
pEv17ZdjVxq3BISlVHdrWMlDXBMXSWXR.YjvjM2ELY8mILAvDTpELPbiZoyE
wH8B2HsCABYy.LDsWC41DLD3R3.Lj2GAlsNW9RabKfAaCdYhXN.DUy6i.6L3
p+MAz9SIf1yyEPxtds.zgAiDPGdW.ZMr3iGQScuHh1XWynP8H+2IJuw18gxM
rpgm.sD6QX3P+WsdWneTSFIJ5s4hKVL7+e2.A+eTvkNkUEqTn+8bQB5AAK+T
YWGj8eVmk8Wr3+lKuJFesmoaNwB0gaTZKL9Y3YRW7r+EvyeXjIaMy1heKohR
fdpQPKxE055YawWsK4jPYXSmD5j1CjdmTFteFTF9ifxfbpb4V8Q63u6jF4bO
d0Nt83x2O2xa82EaLOsbDkJXBG8PNa+dthonVXFcQ1Bri4+AxZX6LFXYMBIu
aVC559wzd2EsA+39RE2QBWqXWtijjxJzefdlK0C4UU7pEKeuuhTqTiyUlMfz
F0KDRaaBz27nijcXByjWDOUKTTrisWSywOZM.dtQqldNodSYqlqhYTkKK1JP
nLV9tD1hux9lidJBk9zBzNUqijE51J5NvawneCwPKsJfPJWj9r.jap5.MNvx
p4KNaOKcrqxV1+1aJaMp2VaixvMkULH7sBsQ1JRTMAk7ElEW1aOOh6M+kzmT
4yu9vyiX.HldoAi8KMPtcABXeHG8luFCDk50OGKUUTWF2bxs9.8ZTlvqjoBH
q1RGMm2EI5Gpi7GfiT0IHxH8S3.7yTbd7FfeHSfeVOv71X8C7PlbCGEMAOfn
C4DsYJbz.7iemLmohRQecfWVYUFbgha86Ek5ovazhU0tlovuR.WxOj1nO7Qb
vrREOgTQRTWBgE9Xn4cNv4J16RQcpsIf5vobIvwqIYq1a4IfVAy+07+CzZz3
lA
-----------end_max5_patcher-----------
ramagottfried commented 3 years ago

and then expanding it to deal with spat-like addresses, I find o.explode is useful, which turns sub-addresses into sub-bundles -- in this approach you can avoid string mangling a bit:


----------begin_max5_patcher----------
1937.3oc2ZszaiaCD9ryuBAcJo0ah3CKaUfdn.EEn25ohBDuvf1hwQakoLjn
xlcWz+6kujrjhnsrMsy1BDHGMCImGblO9Py2tYj+xrWoE9d+j2idiF8saFMR
QRRXj48Q9aHutJkTnZle18qx1rMqf5OVykSekq37PQVY9J5CvGHeMYS4F9yB
pfwyY6XPSouP3IYLAGXKNwIEbBaEUv.0hwSYYKI4xQJHnRjoIL5prRlRtXCw
s4zBJiqF9E81hmxX7hjuRkz.v6CLjyJ4oTN+KaoZ+fuu2GqFSBe0yIr0Kxoq
3ZtXzLQO8.Q5mH4OgStOntORo7DYkZvpDAqbSBSHDkKDZHlDqcnK+zGv.+cs
TqOplBLTKHuPiWrrjEmRWjRYq4OqXiw80fXBmnUVzjwdQyD5IXp7gTiCTOjz
B.iEJ3g+CJZLV0+IxGf5gCKF7Hy.Iavj.8uQRtPnjirGAQU8P+egx+CWM5BS
P2tNREbNZfhvNqD.lYzJsv2MJ6WGfmmNDTKqIFQGUMMT2i8q.nySAf0MDniC
hp5PSgXcFHPDTKCu9matQ9XriQH5EcnWfAInPu49nCl6ibYtOBBUo6x785j+
IfyM4O3zR9CBtFI+3yO4+HRzwNHQ+HxowNHm9.YvmTJDi9YQjwaxextWDnuk
xh8L4G91Bi+sxzz+fr5uo78GPiBTgvg5UyBTw0xf75N0J3E71fWTjkfW2Bbz
FwnMTw2WXD3Y.kKc5TWhQflcRXDSCuBPDxjfCi.Ljz+tijkr6gjZ+1gp2L2q
aZqqRWCvpkgPGe15T2ksZwXqPnJD1x4rAa7j.MlTvwakgWbqL69bw.SE3v4q
98e8uraoiG7jakcC.Z6Fd71Mte6F5vYWOFYC8CaHa2Ry2qUOj.YzLEHYzABj
6COzxAlfMkoPC0FnwBEPuIh0Mn4Ehk.Z3CG4KLmFjG0nKR2xmxTCzrw0jRXZ
RfZR4zWRp5eXMURtvx4BytLW4a7eMrZNRNLYwzbVYRcroZBxnRpoBoytXqYs
B0LVE6c9RkmT8HDq9AOKXmmTLOuNMSD7E2X4FwTlHGMg0bIwVrioOQJS4K5e
Ew176rTValRCPo6+RdBIsV6WmmDmwjJQqoAI4Jw8nGPuK6IMMFUKXjs8zYQX
gvmXgYgvHKKVRxkyRKSoMhUDQ2YYosYU2uT5SbC6sILVGuHOaqcl4IqedO8c
Ylf4l8M1JNEKJYZtKDAD7ExExa2NRZpIYs8v+Jgkrgvo7D8T.LnlIkQDF5yE
qxyRSaYuZNuzCmXQ.9J5mSh06rHnYvfn4IaqBh7qmkiSVSK3sowIqKZSof+E
sSuAoxklD3Eb5lsoBqncCDoFhs7U7b1mKLMrJPqoCX2Ea0LgtIxWK56CAzB5
uBGTra7Rl9+Z159QE6e8.a3j50.QS0YBgft3jVWVnKdIbpe6dz.yDUwPsDgA
E5DcZY2SecatXe7wzFnUs2KOINNuv6m8VS4x+kVTPKt8tls0Bryg15z3871v
7zlca.lob3ntd59f6rsZU2YfqzDvdiZKYxbzA5MGnGaRjdKoGNzzhiAY2w.t
tQlhb3amy77RIaVFSt8QxGGKe0yK4oa8VJNsX7sdy8ePB0L226G8Hd2YZfmm
DQZMSwWCEnZwKjzR5ss5yciMTI20e2qvRzMuYq0MV8iXTz4QyYxAYNKVbhXN
8VMwVISsNpKH36hzLyohCP5PHrCyy.Wm7Lkdre39g4Kz6YCU+zd9SfEn8v8j
.0fyprManr1KGqFJQryqtNa6vtmiHnQeiJmuiZlibTPWBKozA+AEoLY5P8.1
1EPjcOPv6Unxf7.5EjOeO.JvQdf9hA1cLEIlqkMepLNI+9cMl60UmiTsyMOP
KCUrgadBq9TaOtyz7LewlCN0bRZQv.zBYH1kSKlMPs.o8YWFkHbfJwzKnm.L
zoiKoRfFnR.tf5vziHhnecvPr5lWLWUt91DVP377jkhy5Uz8pjNpS8tNMaII
syQU66Pw2rS4b+EU9mxcR5hqpzb8cvH823.d7WDMzgWUYu6ru4GcVcEsu4.m
puxrwoHXp2lsow206WRB57JM4H2U89lKPgpezeBOb3Y98lfn9mePWfHyevkg
jhCvOYr2auojCFQBht3WdtJPMUDl5nuCDHDepF603KjTHNR5J9A+T0G+jL.h
O0OMDXhKwcNTct.rUIb.qUBGvVkvA9tqR3f.rF4wkUBW3+GJDNbz6cgvUoAu
mEB2Nc3cpP31o.uOEB2gqhG0VAOyEClhmpgAgmJnH9pTBOMfBmqeatuDeqIR
nfg7UMiF.gB5x2l6u2J7wInZF2I.CbY86.+OPI9cTnUUoKf5zk8V7e8VRgGG
1T+RzdA.1uHGNTjM4YqB.aiQnhVZeOP57mtGv0jE8lC1hacDeamrdheWAO9n
kDJZ.RRVjpUWoxoKooCPRcTmr7Xccb.tBhdVy6ZamnCNOQOjYRzTWLSFd0jD
dHRJzARRdSAMlSrHIrCjzfLIfCRCfCVRmsyCM.IAcgyCLDPDHxERZHA4fHWH
oICQRtHHO7Zg0CGBTue+Kl0oH4jhnSww0ov3daQwYuf35VLbpqi0VQvcy+by
+BbgqLTN
-----------end_max5_patcher-----------
equilet commented 3 years ago

Good point on using routing to one's advantage - agreed! :) Here's the last step of the logical progression, for anyone interested (again the call from delete would be simplified):


----------begin_max5_patcher----------
1184.3ocyXszjahCD9r8uBUrWr2AiQ71aU9PRpZOu2G6xkLnwgYAgWPLwylJ
42dZIA9QLNFFy3cmZ.rZZ0e5qU2MM70gCzVmsiVng9CzinAC95vACjhDBFTM
dfVJYWXBoPplFi9kr0OqoqtEmtiKEyQqQI0RyJ4ITN+0sTkk0VSXazzQZZnk
UpDGImFXpIVV0yiUlFyfYJQBWIbKgG94X1lU4zPtxd1NyL7c0QVXWCS3xLCw
.KCy8lGrjZQHMkkP32FNTbRuk7LkVTP1POinVWjjMSNbijy5xjywLPPJOyVQ
MbORMbGolYWolsmy+QTyraTCOqyTy58lZfEVSyuLOzqRyZjONZ6W54jTJmlu
hxHqSjy1rqoetRVhUYetXIk+EYeURAiGmVlJQ7sv+lK7jYrkD92no4SI7K5b
9yxjj+BTixa18z8JPUt.0k.yq3Bv8IeKYwYr2LU85bjcEUC7EWbBteTMIiDo
dxwu5wJMwxYcc+zwQl9hEDCBoeOHYlQXV51rhyKNMkAojEh0wBsGV.IxKzlq
t78EZK6VkqfZ0eJiwKh+WoxXAq53SgpbHpMeKea4EmK6QNB1mHgmTWof7BMZ
05RVTBcUBksg+YwscBZ59QDNoNvSGMKPTmwWbRrZLkmDxLw5f8u9+VfxN0ye
l3GlyplNT+pVKGmpgGNcrQbrOZf2wHis71OBs7+MY49cMIelLt2Jv8cKGOyf
taaNjCDQEJdVN.IJ50BzbzFJG9YN7bbZwnwswAneU2gWiIElFc8AeJuD1y+n
K1NW8AemjS7lbcQwEaSHudtW6go+9zO7AgcMzWvlNGF9wOte32gge5SBNYTO
0jXFMLqjImucmJs31kRKW0K5ZqJvnF4g6Vkk9O.LkrczBFBkPRWGQF8HQGEu
DpAChD+MMDhMgMgX9nEZSEUmIi0k242PhPWTFih3eIau9LPeUg8GeLd4R85a
Tii5uZzBkncPNBE+znXz74pFazA7klQZzwGzar3NvZof9Oi.2np35HEtiQSP
385Ndu0AGR7FlhFnGPOmEyp4zzPvfuPRJoiHikSU.fL07bPjhGOQ.wXgiRvr
HJrsQqmCHVIXjzv0+lKUudjZsd3t+7LE7+ngrwMFJicpC3fRGTFmvgxmqZVk
aqXhcuVLw11SVx0S1EM12+NTM4h8gLYxjSqmnDbTEEkf9qlhUO0tRUkYSSwK
dgssqewjqTSYMrMuIGV5QqByRxxUFyzHvw2zMHvx10ZlC1RukhNFvNzHjnsl
6PmPNpNgbbO5PL1Rc0yUcXdRSQllsy5sA.O0w6G.UGWB.OnMN3EfN2zmz4lb
GTFS+SeWLYXmP9oIWEYk4g0A40eOKzg.gHZAOlIqGcrRZWtiw1Bj3c4tNP8A
RRifuBR9JctMfvsfRhulwsSIy6ERhOlzcBIm1fTuD50lX753yaBof1BzsF50
lcofdfP9s.G6d.m1TbvuORjZAN8QffcKvwUq4p4jsaeglWTorDBnonmUOvW9
YHDecR0PYuAZ4zWhq02UJgjCMcvgNNJykKKscdpuppVJ7JE4rx3pWMFHG.or
gKYusaq5BP1W1vuM7GbC8WGF
-----------end_max5_patcher-----------
superbigio commented 3 years ago

Hi guys, thanks for your replies. My comments to follow...

As far as Jeff's approach goes, it doesn't really work for me. Here is what I get:

Screen Shot 2020-09-13 at 12 57 26

The single quotes around every character are not compatible with the messages expected by the software.

I like Rama's approach because of its modularity, however if a bundle includes sources with different indexes it all breaks. Would it be possible to modify the patch to work with different indexes inside the same bundle?

ramagottfried commented 3 years ago

hi luigi, right -- sure, here you go:


----------begin_max5_patcher----------
2050.3oc6as0aaaCE9YmeEB5oDL2DQRIY6ArGFvv.1a6ogATWXPaw3nNYJCI
pzzVz+6i2jrjinMkMsS2EfB6XdH44BOeGxC4oe8lQ9KyegT568idu2aznudy
nQxlDMLR+6Q9avurJCWJ6lOk7o7kezerhDi7BS1b98qxyxHqX0TxqXYDF6ya
IpY2226CZRawrUOkRWunPzeIUDJ39fwdwAxuhPhOgv6CZFCsZSJkOgRg.naL
MQw6ke7cQ965nh0pdJZ7a2bi3iwmmFx7V5kYT6Vhoq8GamVB4ZYD+qYxOGhV
h5WKgmfVJVv1rMuj7JE8gx7phUjG.Of+R5lpMrmjBybZMA3CjLxyXVZNUv7V
TPOjjVxvzUDNATKBgO7Xd9RbgXlBBpYYVJkrJuhJ4aXscqfTRnL4zun2d7XN
kUl9EooGvMemjGWzDwRA.p9ZlziKNp0ZgfKOhWImrf9Vefud8AXvKT2ZI9YR
xhkUzjLxhLBcM6II4vv95PBlg09Mb+jYS4hIXh3Cg.GH+PzV.XLW9N9+f7NG
JGej3CPyzExm7Y5IRzgvYpumInBgBJhQDLqdDp+JV7Wg0yNWET8aOtBNEIHJ
P2QQC6zR.XpVpTLe2rbXY.dRx.nVFBZ3Ujl0ypWFZFwgE.zII.vZA.1zQfxO
XV8.ZyDiq.Abe5KR.B3vCP.MEf.Ze.Bm.+CQSU.eWB+C+WA9uF88eb7evaM9
O36c7u5.B8h868bABHeuHajKQ1HwIp3f4YAsf1QfyEZGbZP6ffqAzN772Ze.
v3PG.iG.hMzA6XeD74IAPLlID+DraIzDOs2uwbF90prreGu5uHLqxMJL5dkh
M3jiPybW1QGHrvqQ4tYq5Y.QhRw.TK.ML7LAznomDfFEeEvyBOVK7nuttyms
abnLq2nPk27vSwGM4hmieMxsjbh2iQX3TgRFNMVgUCFtVFew0x76K3SLgGep
X0u8K+oYMcr0Kt05cnJc5.3v06P2c2FlVc8n3Mj2sAucKo3fZsMNxgPoK7ri
3H2WnGCoI.ayStDpTPsFxixkxOXEonjmUUKa3Het5zp4QsFhvr7wb4DMcbSS
oTUSfllJHOmVO93lVwEbMmwU6pBosw+k350HwzjmPJnUoM9lxEHsHIWJDF6x
s5vxxUrZx6rkR7gd6M4WgSC1YI4qyqyx4NeIshryWx3XzTZ66IpC4Dxi3pL1
h927oK8810nKQgBHk8etHEm0H8qKRSxoBgnyxfn4Z18dOfZy5n1JirGT71dF
L2sfaSLPjmvLqpjmbrXUZYFokuB26NOOqKolwkQdjoIuMkR2yJxx2ZlXQ55m
NvXWlyIt4PysjR4hJph5BtCAagXOyt8CmkoAqcm9WvzzMXFgkpVBfAMDITLW
QepbUQdVVG8UQ44dnjvcvWQ9TZhZS7f1NC7tmts1IxuYUNIcMoj0sMFdcY2V
JYeVYza0T0RM.dAirYaFWK51ANzfeLoxmx+Toti0NZsM.6tU91.51Q95z9gh
.ZH5uLNH+TpUT0e0t28GUr+8CLdCqR.MZhBIDC1ONowsE1OdIbhe2QzJlIpl
fbKBcTnSznkeO4ksE7y2lPZEsp6YbwIIEkd+j2ZBS7mjxRR4s20tuFB6briN
M9.+xNKs9zFfoRCNZeKceg6Lsa09q.WoEfC50VQEXTKslVZwhjW+WTvwcMMX
XPlMLfqqmIGCe6bpmWFdyxD7suG+gwhe54k93sdKy44obq2b+GDgZl668CdX
u6zcvySDQZMURWEJP1imwYUja6Ll6FqaEeW+CuNVhp6s6spyxu3yhBGMmJlj
4zDB2nQtU0XGvTmqIBD7cALSeiRApzQiBcHNCbcvYR43vg6syVnNyFp4Sy3m
.Cg1iO..pEkU4a1Pnc2NVNUbemWbMZ63lmA3zLE3FC0TGYnftLrjTF7sxSQ8
dq1XALcJfYls.AuUtJVYATaHe9V.Tfir.84CrKMEQLWCG9TpbB58aZz22oBi
nO2fWW8jedaVJsIos22rMpm9UJN5ByPkAjkx.3BJC.KkA3jKnPHh0ZkTbQEh
oCvk.boDBa8KEwbtblhIJU73lh.iRgtw5adQeqzpaSXAlwJRWxy0qb+qRZPY
8tNKeINauTU6Ko3a1Ibt+hJ+CwIIcwUUpu9NDRc9M3vuHZXnKKCqdNYe6mZU
dEsuJgS4aqpMJbhpiYq67c89FqvA9jLC7LyGvRCmntMX0CWEFelObCzPQvgb
oe2FtcFuljxHEh6uwMO8ADEeu74VAC1kCL6J7p.bOwLteniduRPTj5Y6Ftxd
MeBjC+DsCwaWq1hWl7zd5GPz2Ek2IvX0aALU8Vfqb0aAARiLD4xp2J9+KdSW
T7V0RvaYwasSFdiJdqcBvaSwac7ZSQdPtyLR+D0y8BUUb0oDxK7pTXJsBzMW
8q49hnWsiywIH9ohPqvb71E+Zt+kux0zlSPHvkUtF7e.Et1fhVUCW.MvkCVR
a8VnbCK1T+bzbYs0OKsOTjI9Ypt15FiP5sz8VbT3m8SPUih58FSZxK0zskzJ
y3WATskQ0SxA4DD4.NEBrfShyec95TjMbJ1AbJ9poRWKFgrfQNgOSrmQ0QxK
RTUjC3r3rMNGHm.srw6vEHKnE7IzE7wFmCnS3TnMlNfKhJYKi.tPkNVHcjKL
dHqzIWD9CYkG9DWvIvUiS1DXRT4xsVLahLEbdr1l8hE+ufXOmQ0oM1qFDELY
uZObu5N700bn45Mb+ZMTda2lpwva91M+MfmpVG.
-----------end_max5_patcher-----------

I'm also seeing the character splitting as you posted, but I'm on a different branch so not sure if I'm in 100% sync.

ramagottfried commented 3 years ago

p.s. here's another version, using split/join with less patching, note that it only looks at the last element of the addresses:


----------begin_max5_patcher----------
1124.3ocwXszbhiCD9L7qPkOQ13Ard3WaUy047deHUJgsRhyZjc4GrjYp4+9
1srLPBNLl.aVWTNzsZ0esZ0uH+b5DmUEaU0Nj+j7cxjI+b5jIFVHiIV5INqk
aSxk0Fwbzp+oX0yNtcK0n11XXWLupnsQQV.u6WD9Ztpo4kRUG.NNtDmu0lm+
Wxj+VA66NqfkxljmxzOdekJooSVF0etmKQHDy8fGJmwYLNkJbITOObIFat2N
MnaWmoAvL1H0xLKsyzV87Whc1KXmYYjjgL+0zo3K2Q5.JlmTrtrnVcjOXg7G
YqaadB99RjXoi6R8BUtZirIqP2wFH63mlU2H0IpN1H0RmdUlmoUIEsZid48d
oJUsR2Xz08CJwCE5l5reXb2Tv87t2CmxyKBDy4vivKLP3I7Co9tjX1be7df6
wii3AQQv8.yih2C9zCtGPK3AYhAHugtaXGe2DM7cS+sXsbiJ89Us5zb084J8
iMOgKGGLz5oxFY2wfiVcDDsPCwWdl3F7Exyi5Bl2u+CCCAg8Gi5fwvc5iuh2
o2.jT75cIvfTzqYIOTAuR6htEMlydCiRiranS6HhTp8P7tH7FkL7wYGfd6Tr
uEm3d2Tb7aUwfncrFrxSt6CkTo1VVAYVoJTviyrRSeol7UxipF3qPhPspd1M
NmYb+A0dbOA0HpKQEQyCfmPHVHjEF4GidgXSBAmcgIDgCmPv+.902sZcqFph
3LBG0uyYfkJ3wg9P0hfPeSYgfNWCKh4GAEti4inl8.tgf2otv0zM.0TKU5Tx
h0xRsbs5R8HCV7j5OTvBie1cwDWOORwbniSYt7kiy0pKZqRTK9CnCFFzNGaV
siGz95XlXyKzNLbKZdRUgTC1LSbMaU0OjPL2LjfmGiGInQ9gPILHzCWKz+bR
FGvm6eM84mrHGDBNaolPxkqWkJm8c4ctDjlPJqJdTOq66DxhDnPHb2k0LCFb
.FlfHuoWRXU.tFP.7OyVjbi6tEfX8Gx1BKY1E4VxyEY5dUrBNZ1cPLZqeaYO
LirBt8RQIsYIKct0rsaMfsGBBANpYfohP.NKCJ83dKYiLuUcB0XEPhVvIUo7
PQ6k7lda1vAzVWSik5aFLPDRLGHRz6yn4ASD1EuREbOeXl1PndfHvDuRihtv
tG7qW2iSLp6AEI5m483JE6l6cf5E1Qe++plATRN17HB39PsBb7G6.sA9W3M.
6CMPKUH9DlnkyrCvQ2OVogTbvjen.B1YO5qPXMIu+irkybP4OA6Y7yQ+FiI.
FJ5KGL07Pevk6rG5g9a6YW7ZM6e71e0j3lHZSd0a949lbDj+qKDzkrZynr+D
Zx97hTUcSl1jeefL9Nu+O.Xr3vGANwWAbDi.GXDz23FOebhFANhqv4IbjmmK
EG1HvI7JfSvHvgeDNcg4xxxMppZqvFHfNaOWTgjQtFxLcGoorrSkZSVu7l+y
BNxJn0QCz2nsxXVNaC5l+1YML.WktMyNGHb3.HMcMwoZpKssKLMWm9qo+KD9
Z0EK
-----------end_max5_patcher-----------
equilet commented 3 years ago

it doesn't really work for me.

@superbigio did you try the last patch I posted (rather than the one you quoted)? The /r/at address should take care of the modularity. I hoped to use any address space so omitted hard-coding. Pick the slot in the address (/r/at) to send in a replacement with the /names list. Regardless, I think any of these would work based on your initial inquiry.

Depending on what else you're sending around in the bundle, you'll need a check like the one Rama posted to see if you're about to modify the correct addresses.

Closing, but feel free to ping me over email for the current (upcoming) externals.