converting shapes between multisliders with different resolutions…possible?
my question: is it possible to convert a shape drawn with a multislider to another multislider with a different resolution (=different amount of sliders)?
I’m using multisliders with very high resolutions to draw waves, and morph between waves. Multislider is a great tool as all settings can be stored using preset~ but I can’t morph if the resolution is different. My waves are too difficult to draw myself, they are derived automatically from a recording using a max patch, which is why I did end up with different resolutions..
All help is more than welcome!
if you have a list, "1 3 7", and you want to copy that to a list of 5 digits, you have to interpolate between the members according to their difference in length.
for example, from 3 to 5 it is easy, you´ll end up with linear interpolation, a simple averaging between member is enough to build the new list: "1 3 7" -> "1 2 3 5 7"
i would recommend to not start using multislider but a messagebox with the list in it, then use the [zl] objects to work on the list.
I would convert the list to a jitter matrix and easily change the dimensions of the matrix with interpolation on.
thanks a lot guys for these solutions, I will check them out today!
Ok, so I first tried to solve my problem using a jitter matrix. I have discovered that when I send a multislider with resolution 256 to a jit.matrix with a higher resolution (400 for example), the first 256 values of the jit.matrix get the entire shape of the multislider (or so shows the jit.pwindow), and the extra values, (144 in this case) are not affected. So I did send my multislider to a jit.matrix of the same resolution.
However, I found myself able to interpolate the connected jit.pwindow so the resolution IN THIS WINDOW (= the vizualisation) was higher. My only problem is that I don’t see how I should output the new (interpolated) values…(do they even exist?) ..it doesn’t seem to be possible. It doesn’t seem to matter if you connect the jit.pwindow (with interpolation) or the jit.matrix itself to a jit.spill => prepend set => list-message, the output values are just the same (same amount = same resolution) as those coming directly from the multislider.
Pedro, is it possible to send me a small patch of how you see this working? Would be greatly appreciated!! :)
(I used jitter tutorial 11, which includes all objects, an easy way to start)
Hi. You should receive the list in a matrix with the same length as the list.
Then you upscale it to another matrix with interpolation on. You’ll find it pretty easy once you see the patch. Good luck.
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1274.3oc6X0raiaCD9r8SAgPOzB3Fv+EUO09NzKEEEKjsXRXprjpDU9oK128 RNTRQNqkirSVGu.0Gjonlgb3GmY3GmOubQz5xG0MQneA8mnEK97xEKft7crn 68EQaSebSdZCHVTQ61055nUgOccYgsw7uZ+mHzqvccu9lMk4k0gwEeEeEh39 lqkBZg9qN4pRsat0Tbymp0arAooLrWTRB7m.dRwizwjA1Q4569YFOZXfpS2p s55OoKRWmC1Suw3rXSQt1B1OoqyxVqqK6SU5vzFYJrQqPQqSKtIZXt7KuB2. Cy3uUaRyiddPCCALpTemeY4R+iUyDH2paZRuQ2OfV8i.BDkY1h9Axq.vSCbT B7GOFPQ0D.mHZefCcJv43QDxIfHaJ2tU62FdAh762pQdL.UdMx5ZmaZrnlaK ayyPq0H8+zllirkv2bnmtnwTVzzK81Tas4wA7r9l0fyw.TNeDlvCPK7jIoGz 0jEcH2u4Bi3S.F+lGgFBPmS7I4+iOGfM0HmmCGcRStDiNmBOfHySJg0X.I4f .h76ozU5600OYc4gPOU1hZzEYCYsVAckl2ThZqxRsZzO5cn+o24DUxPDZH3j wTGJFk9wknZJOJ7ULtacyXr3DluAMVnjPChqKeCohF66gyvLtv2HgxIdsDXI EG66Q0ILWHEBJHra7HPCRL0KLmJDDPXZhSHu5jNgktAlq7MR5lBAUkHAyf0I CgyILuLjXBNXy3NSk2+ImVASUvkpD+b4MGXREfF9uQ7R1iC4lB8lx1B.LXmX XEKvFPhCgWh8u4ShuDCrJzO3Ltuxs3Ni8plJSd9olpg0AFrCEOPDQG04R9Ck NOGHMU9l+vkRYSZAZystTIZHUxX1RtYsp09NlcglLlgNUPNHbx+vRu38Wpdv TjU9PzqtZnpwgMStZHuEmi2tKvwsjDyZIg+XWRGHXO3xhbL+z0UcuPPWmWlZ YTGATL5WCeCcxrO5vHZf+wTXTxwAQNa+S8gamqjCS.iVzZzImujD7bXzqDSi MpiCa.96eznxHmq83Vcx9RjNZWwGxWR7cqujG0t1c76KOJY1vTfpOIjoM9fY k3WpGB+ZbVo.kOf.HPqz8vS0Cq56WLlp2QSoODQJ5dapp6bQd8w1bqoI2j8b oI13lN2kfRGu05HxjYbOzr9RS3NMijH8klfSHwRguUriZOUtakJFzT0qIlFy EDPSdLVjrBtdfavHSnonWSgxcEANTNjmGClaRYSnIsWSBWfSTd4oXVBk5awD RkbJMi60TE6mTPSXpVMZzlUEYBQTjPcoDzQpL3hg2y8+FRfWoS+6cKJThxsF Vs2V6csvGzzszIvdlzA2X.Ovts.0WsVdqkEZ2H+Fs0ojyuavEXBKU1KPLy+C rOlfl.64wJEkI1Uyoyb.h.WZ6E0QG1n78uaTQSYa8ldyuuXrnmmoLci0TjZM kEiDJYGYt0jkoKFiVYlFO.lMMY4YaN7YXNuvl+VZOzjYXOul4r0jUU5HK1sE oR7TZjhmKj431zv8DoIAdOiOh5cbYImwxxGbdt11IywdRtvrG4YydHyIJ0WO EGWxyg8LmnBx4KJ8xJG1r.GxYybT63UreygeVsl2Z9zyqii+NYmqSalC5ntr LG1IlzIvbIsp5dccS2PBVhi49cAZfxUvqlhvq.MrnZ88ld4g5SGkV6njZc7Q aqCWd3QkLZoed9xx+C.2MjYH -----------end_max5_patcher-----------
…this is unbelievable, so simple, yet perfect.. I can’t thank you enough Pedro, this really makes my day! Thank you for your help!
ok, I spent some time with the patch…1 question! the maximum resolution of the resulting list seems to be 256 values. Is it possible to have more values? I was hoping to work with a resolution of at least 1024..
EDIT: I didn’t see that the maximum can be changed in the jit.spill object, thanks again!
Pedro, one very last, however (probably) insanely difficult question :) but..
..is it possible to interpolate the beginning of the jitter pwindow with the end? just like a loop..
in other words: if the beginning is black and the end is white in the jit.pwindow, is it possible to make the beginning and end both in the same grey after interpolation?
(really enjoying the patch you made for me)
Yes, the easiest way would be to just end the list with an extra value, similar to the first one. Of course it depends on the "size" of this interpolation…
<code>-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 1568.3oc6Z01ahaDD9ybR2+AKT+Von88W5mZ+YTUUcx.NINmwFYLWRuS8+dm c1cACAHFvwIUpDE7306NyrO6ytdlI4Ge9SiFOq54r0iS90j+LYzne.sLBay0 xnXCiFuL844EoqwNNtL6opYONdR3YMYO2fs+yIzsMVtYY0llhrFbHzXy2UU1 TltLC6+uWmmVrcD4KvFAM+Krc5wqjl+dUl2GGmWBF6uhOdUZy7GxKu+K0Yya 78vHlpkSR3joD3a1TPlAx6FiyGVm+cTgTFzqctbdYziYXi+ym+j6JbYxMiNe uX5iU4km.gXWHBQNMBMdB76YgHFhMLAdQPwaFRH5thJPS8CRnOMP.lIswgFy RKu+7Hhfgf.EQDI4kHxpzZvUZxp+RVY5rBzDjKBtnuELpxlGN4ltKkRcKLJO 9QMdFkcvYTfZlkU2O.AWb9Se5DghEN+QzuLpY2Oupnp1aCxTAf4NMSlZPocZ umndKyVuN89rWx8VjuL4m5oi64xyP85DJq77NsmD9eUdGsO3cHRP+eV2qedm 8ZYcgHLjuWjtSBONa1e3i5p2U5AlVuK3iA7PlpX.oUQjFoEDjVplpcBZsTqb BJtfKbBBKyxcBbIURcBPvA3UhxnbiF5gl4FsParXCJiwfBRi1XbBBixfcgaj FmADLivHcBTC23rjfXXFmk3VC037OtwPLNSwitEWIER2n3RN7wIHnLJ1YlkX wNSUVmo3DAXBPfE8OlgnHN0vTAiyj99xDg4BiqzJbPLkRgOhpjJbPDkP4FD0 p3JmGSMJlx4DTshhHJUAFfhBBB1EsfJvFLBl.6hE.VNpOA7Asf.lUnMEfIPu PnEd+JNGf0AA5fQKvzATBl2bBBEDvBBDABJjGmDbdXgfKI.LgHYXPZXYEwOa .QEToThKQ.rqwUO7NCC9fq6A+VF0tTDVukZJ7AITAkohJSEUFhkpnxzQkoiJ SGUlNpLcTYlnxLbJ7iSPD3C.OVZwGo4vONAXFqc5wRXDmorzvhjkG.LqHXbq LvJsQRjwFVALJhekzvB.uNtYA3jbs2285Cn8dVNvR8qwpcwRVjWlMuZSItCj R5kSln5a7jIeXpJh+cktXWe2yN7w7loqWkWTzOwRPk2d9ghvK33WYz7W+6+m WsbYlKhmCQo+nZSx7zxj4O.ABkkz7PVB9Nup6PYXptZSSxxzl57mOAPRtPfb Wx.GCnrsixmIOVpz02OCs6zgJcQGUZ0S4kKpd50HSsmnzahwXCbEOdvORjmu uyNReL6Hu4ytyc7fmVm.oBjUuJbCMAKxAmAmsRR9M+y5qJBbl.jA+4KwsYcM bvPQmrC9wImBTaRlkzSm2ZNMTg4r00RxYtspV9lR7NBkqe.OYexyB0BfJ0eX 3YNL7N3U6m+ESWHnItox009fLMYvQpWKEML3eNlAfBSqHJgsgA7hgzp1OXya qJTWaPkp1ackA52flv6lhl70E4KZUIJHJoE4vWYpXUaztzI3tp1P3RlU3jfr iXb4KKhywnkygIwhzlz8f1syJxKLLOZX3smPtiSvbrfTFkngobH0mCL71gZh CkvzBIEGpPSj1IXhXf1nGLz10sv7RPPFUnzHfzDwRWsS0PRUZ9AJbcVCr1.v 7VW4fNb0gUSCocnvRlKYGEAXQyB4zRrlIXhybKiMAylERa+PG9rE1aqd0Q8B oIByaTu37eRKasudyR+59U+yZ.OYxQkN9xoX6PgY.EYBJXMjfSKBrtZtn5H5 6FlY4g+gKQP28fC1trtZS873BUrjyIsL3hr0M4koM4Uks5kc+N8P9hEYk6Ar KxW6.aj8QN8F3t6Wht3WG58Cfi4pF3q6Xt8dCMhQ6jioFbGi1IJlqVFPHUCo iY6jeM7TrOnaI6FbQGb+xrOw439k3cwsdU35CJ4xkPyPetZW7K8v6VcZYjM3 9ktStEYvOSkQ5hiY9ntN9Nv66DfwG7ExNFNwvebOqaN1v+9QlseNweY9hUU4 kMgX5shoLHUQid2+OCsk4g5HZcUJCuokGblYXH4gzUq9VV85fO5mbPR0O5Sy QMweedo+de5tiqy9VdbHBeSo0PRdMPFdap8kW3YiZL7DzfvW+KHMC0WH -----------end_max5_patcher-----------
perhaps I’m arriving a bit late to this thread to suggest a new solution, but you could also give a try to [sadam.interpol] from The sadam Library (see http://www.sadam.hu/software ). By ‘feeding’ the object with the initial multislider values, you could easily obtain the interpolated values for the new multislider. Moreover, you can choose from a set of different interpolation methods (currently: piecewise linear, Bézier, polinomial or spline), which, depending on your needs, can make the final dataset quite smooth.
Hi, Adam. I didn’t know about [sadam.interpol] when I suggested the Jitter/matrix solution. It’s a very useful object! Thanks.
Thanks for the ideas Ádám and Pedro! More recently I have been struggling with a new problem, which can be found here: http://cycling74.com/forums/topic/huge-problem-when-interpolating-between-waveshapes-multisliders/#post-269365
Ádám, thank you for your ideas, I still have to do some research before I can send you a decent reply. Max is still very new to me.
But,..I was wondering..I used the jitter matrix before to make a multislider-resolution conversion (see above), wouldn’t it be possible to save all my waveforms (=notes: C, C#, D,…) as 3D drawings (jitter-matrix-presets) instead of 2D multislider-presets.
If I could morph from drawing to drawing (from note to note), using a 3d-matrix, the morphing of the waveform could go in both vertical and horizontal directions. If I would manage to get the changing drawings inside of a buffer, like I managed to do with the multislider, the wave-object could play them back.
Am I missing something, or is this possible?
Forums > MaxMSP