msp automatically ramping signals? explain the neccessity of this nonsense
ok. ive spent 2 days trying to figure out how to read back wavetables with another waveform.
i used a buffer to hold 1 second at 1hz sine wave. then i used a saw~ wave to read through it and play it back. but there was clicking. after finding out that the saw wave obviously wasnt true. i used phasor, phasor worked. i then want to use a user-definable wave (one that i draw) to read back the wave. i use phasor -> wave -> lookup -> dac, but when i read it back, it clicks aaaagain at the end of each cycle.
if i send the phasor -> wave, directly out to dac, then there is no clicking, but if i send it like phasor -> wave -> lookup -> dac, it clicks because it does some stupid ramping to smooth transitions.
this seems totally needless and has wasted 2 of my days. so anyone with some knowledge on the issue could youplease explain to me why this is like this and if there is a way to change it in some settings somewhere.
"phasor -> wave -> lookup -> dac"
i don’t know, i think it shouldn’t click. have you got a linear function in your lookup-Buffer?
Best is to post your patch(and sample youre using for distortion in lookup if neccessary)
(btw. max msp is working fine for a lot of people, so erm writing "nonsense wasting days of my life" isn’t the best way to get help i guess..)
there is an alternative way which goes by samples: index~and play~
p.s. are you sure the click isnt eventually occuring because of the audio content you are using?
first off, my apologies to woyteg and others. i was just extremely frustrated.
anyway. i spent a solid few hours of my day sending it back and forth to an e-friend who has done a bunch of schooling in max/msp and we both came to the same conclusion.
here is the patch.
you will have to turn on the dac and then record the 1 second of the sine wave in to the buffer because its not doing it with loadbang anymore.
then draw a ramp wave or whatever on the waveform~ and watch the clicks.
if you use the little phasor i labelled above it to readback the waveform instead. you get no clicking.
i have a feeling this has to do with some kind of automatic smoothing that max does on certain objects.
Why so much effort to play back a sine wave? Also, saw~ is anti-aliased. It’s good as a synthesis waveform, but no really intended for use as a control signal.
Try sending the message "fill sin 1" to your buffer, if your using Max 6.
I think you’re hearing a lack of smoothing. In one case, you’re drawing a ramp into a 360 pixel waveform and playing it back at 12 Hertz. In the other case, you’re playing back with a phasor at 113 Hertz. I don’t think you’re going to be able to draw a click-free ramp in a small waveform object.
the ramp doesnt click. look at the oscilloscope hooked up to it.
the ramp is being played back at 12 hz in order for you to see the clicks visually on the one oscilloscope. if you use the phasor to control it, turn it down to 12 hz too and notice there is no clicking.
it is only clicking when i use the generated waveform to control the lookup~, and it clicks at the end of every cycle, making me believe there is some kind of smoothing happening like with the saw~ wave.
with saw~, it doesnt go from +1, to -1 immediately at the next sample, it ramps downward very quickly over a few samples. if i am using this to read back a waveform, its going to play it from sample 0 to sample 44100, then right at the end its going to play it from sample 44100 to sample 0 very quickly.
and the reason i want to read back a sine wave is because if it doesnt click, i can use the user-defined waveform to read the sine wave back in fucked up ways.
and i can also use not just a sine wave to read back in odd ways also.
refer to page 42.
this is what i am trying to do.
I think you might be running into trouble because of your
< vzoom 1000 > you are sending to
lookup~. If you use values between -1 and 1 you might have better luck (I’m really not sure what the behavior of
lookup~ is supposed to be if you go beyond -1 or 1).
In Miller’s book, he would just use
tabread4~ which is like
index~ (which Roman suggested) in that it takes input as a sample index. The difference is
tabread4~ has 4-point interpolation and
index~ does not if I remember correctly (so you guessed right for that reason you may be better off with
lookup~ which does do some sort of interpolation—I think). Vinilla Pd doesn’t have all the buffer playback objects that Max has, so you just use
tabread4~ and scale as you need or
tabosc4~ if you want a basic wavetable oscillator.
Personally, I recommend downloading Pd if you are learning with Miller’s book. There is a lot of info in there and no need to confuse yourself translating it to Max as you are learning (I started my journy to Max with Miller’s build of Pd and his book). This examples certainly can be adapted to Max and I have done so for some of the classes I’ve taught, but why not Pd for learning with that book, it is nice too.
it doesnt go from +1, to -1 immediately at the next sample, it ramps downward very quickly over a few samples
Are you determining it is ramping down from looking at it in
scope~? This could be misleading. Attach
scope~ to see what I mean. If you want to know exactly what is happening on a per sample basis, I I usually record into a buffer and use
peek~ to investigate sample values. Or you could save a sound file and look at it in some editor like Peak or Audacity. Maybe zooming in with
waveform~ but I’ve never tried zooming in that far so I can’t say that works from experience—seems like it should work though.
did you try sending "interp 1" or "interp 2" to [wave~]?
you might find it easier, when going through that book, just to directly port the pd patches to max. in this instance you just need examples B01 – B06 from the pd browser. then just start developing those.
i am finding it hard to understand what you are up to, sorry.
sadly, there are big problems in MSP with [wave~] and [lookup~] – they do low quality linear interpolation on output only, whereas in pd those examples use [tabosc4~] which is 4-point interp. although example B04 demonstrates problems with that, too, at the wraparound point, which i think is your problem here?
are you on max 6? if so, use the advice of mzed. also, let me know, as i can post a gen~ patch which in 5 objects (4 of them inlets and outlet) gets an interpolated wave of any type which is better sounding by far.
however, it won’t fix discontinuities caused by wraparound points in hand drawn buffers.
maybe i misunderstand you, sorry. good luck.
>as i can post a gen~ patch which in 5 objects (4 of them inlets and outlet) gets an interpolated wave of any type which is better sounding by far.
yes please, pid :)
These two days have not been wasted; they can be considered an investment in mastering max. Many here will recognize this frustration.
First of all, reading out a sine wave can be simplified using the phase input of a cycle~ object. You need to map the -1 to 1 range to 0-1.
The clicking has to do with the way wave~ interpolates. When it wraps from end to begin, it will interpolate the jump from 1 to -1 by smearing it out over a few samples. This translates reading from end to begin of the lookup table on a very high rate. Rather then clicking, it is a short burst of high frequency content.
It is not a bad idea to record certain parts of your patch to a sound file so that you can better see what happens from sample to sample. An application like audacity shows quite clearly the values when you zoom in fare enough.
It was already proposed a number of times as a feature request to make the interpolation upon wrap an attribute. It has so far not been implemented. That doesn’t mean you’re stuck. Groove~ does wrap without interpolation, so that is a good replacement. The only thing you need to do is to convert frequency to speed given a certain buffer length.
----------begin_max5_patcher---------- 2674.3oc4b07bihiE+ryeETt1Sy5IKhuYq4xdZ1p1K6ocOz0TojAYaMAPt.4 jtSuS+29JgDXgsQH6PHjLG5XPfDu2u2m5Io962sX4ZxWQUKs96VewZwhue2h E0MwaXg79EKygeMICVU+ZKSH44nB5xUhmQQekV2dE9EDtnBluuxBWYkSJQV6 KQI3JjEcGpvJux5IX1ATSOyvEnDxgh5t6HabOjlrCWr8AVOoBxBD6bu8JKWP 8O.e656bu2152jcBmVSAj0+9OGa2L7aHEzBXNp9Q+GTYJr.17rhC43hLDsli .Gajbf1zpsxvvYs52DbuMu0+3t63+Y0qDwXsuGVViNVzmIWKt34GTCH1Q7eB zBKQQebfEJphZAsnkGPVkL0ok8CAtd07tajmhpgicOXPv7CCnjsayPZ3v.gV uiSTCq0OC5ANNPLfCQQkOfJfqyPpTsALXSqhlneaORPLKwbkxe6F3ybTUEbK 5LYMYOpPG26JTwkd.pw.Pzk4d23qV75nk6OU71GnbaHRA5YFUetWzMLtmTl9 CKmgwEoVQnuNsB2v2IboBus.lcany5CTJQmlgqimhkud6B2fkift+ZXw1QUT e3ErkOvYXlzS3g2GnkI8FIwr6UJlqwkUG+8l8QzCL8RNbukMi6AV+LvBnCtD JCdthDErc0hWtWMd4O+bWrGgd7GVOCeBMbTRY9BgQZgEmqFVbGEXYSFAdiJN UIrvH+PC.3GFHRNRDMw0t8mKBA.sVKIvrj1zybi0lg.K+2JVJNPJlTzgdDlx A0zis7O2ldwg70nRM7dnz2n.BzmgjqQIO+JStv4JUL39SV8Zb+Nn5gDhLT8v I50qdLdN.RgI5XMuHUVyMVmz2YrRTXDyOtGt9m9AyfQWn.OQFiRsdOst7bB9 .lfTO.Sx2Rxzpq2.Ld05EdgZAF+OO.SsFiutXD.QJ01dFnw38ADXXAXYebcH fuXVVFDnvwcFFnPjAwp2fL0+arjIssue3PHhDP0mnti86jxyqHCq9lrJuXeT RdkNONAhJSI9aj1bxAwiTEZbtM6pUuJPpuZbneNdR3QFf14d+9qvAH5yPEN9 IKv8CiGBKIAdzq5RvmGKI7VCrgjk50Ua8d.9ijQzLHpMCmSE0UneOuRLo19I PqmWf26Dxb6Aj5ymRFgrmQFV1CiLRkF+XcEOE39Yv0x1RB4Izf0CowZRTmnX sY5..iT8Pt8PRuF6pAWeAYZuRkD80QEXOaWegdTH9qZqWXCuKzCzGq48Jz6X iHUnLF+SJ+gkiQXin9AQZi3D9NUxv2f.NbOGC5+PNQIodSjValfOOXy9cvJl hiA.iLhi1hK7Ip1BFjkhbYphhFNKkOOIontiPzOIHY19xc3gsi1048yPlJqO rYCpbPOMRbQjbqdmvf2ooNOBUcYvJSADAibACWYpfKGn9eTh4ISI+33BbN6C xSZokwdaJVkerOHJT9rcbweBIiTJXK66iBs8ihVcwq.JLHsDWk.kD08wlJKz uJTp0kQETGQO.O8Bgja8W.Zks0V69tCOIkf3gks2tgeGQ0HY8yMu2PJy0EzT ZbKrzkyLwWU3WU.2SIp7iv6QK.n5DQMPRaHVQReLoeGku5UczMzw2KtVaieq +QUNbxi4vxG6zE2XGfe3pKdUG8UVmO0XYn0QOnY6uAWixVusqchSnmOX0EuR 861uEglKxvU0+dzf4juNHLvKr9ad9Upe8FocWT1iYOGy6RLfC1pW0QJin4jz Z51aDyYy54MOh9VktUDxFnrvGBGAf3dRZ6xoy9qnBzSu1bSh0F5Uk9QkRfPh DrwAmgdBUVwTwUF9EKg62qz7BktvgueWHkjJdh.ChlraapD8Dto+thFYBk6Z d3QPrF7DQnE6SMW91xpgv45TYjjGQopCe81eCWn5etyiSQafGxnOzwSky8W7 4afInd6bqj5ehKgaYbo0+B93AqekP2gSr92kDq+aSZUKVtsDmRJp2YdpiGu4 Fhf411W3nRkEqeClypKz4JF2cnZMrjilxnqNMOjRHYceTq.jozCYAqgTDEKX AG61AEmuuDKVn811DAu2UkTRxx5LThm7zEdRJSFmfdFmR20Im.9SXuNdeifY YKFkh2hpncaiB2V0skN6sZUkOUq4NsqyptqkMtcmy1mgcrbAMkqD9o108k.4 .l28Fksey79M0GplGKZbDJs6FeXLgqLnGGAh7NcDV2hDUzAjN2JPB5EH8tMf rNpVy+5Ptb19gTHEpfdJvG+EjagEkOMSsW1iuz1mN8h8FrfMcbfJZUru+EDU cTtUMUhRQP2QD26HCFdj4EG+pGWmgG2bBKOqqcbcGdbSKgOe53pbaa7lZGor bLRefolwvtGfT1DCVefJbxbIwHJesHjCPY3FQKqN6S2dWHBQrBPXSHiSBbzy D7uFCDfNy.kYlNRrcMIMDWKNSBAdlw0d8x012FWK7h1wlWbdK5LwDKtRnkb9 aUKmFmt+xuX0IZykNwK8OewZGvhJo4zVWf9fU++bFUaGSkGYT9A.4NAydnvZ AieXM2aOrlbWgNkfpHfU6RtN.rJr687GBVCGeETmaCVa1.+SFf9+LCIEwMFN A1nOul5hufg4oFYXDm3avh0tm3ISTfCVvJ7FLaF87Mj2.vgvzKv43YdP6rer Ge2a92t1yJM+bQMqiyBmGLsmIcViR7meYoPE4PYRCUHmRnUWDiMgXJtnsREe ocFOm7d6voocKAfXVyU74fm1tG3GTi4poXlXzxy.R1edQxtFPxQyFR1wP8h3 YCE6ZHEOevXOCoXvrgh8Mjhc+vQwbsBvrfhCLjhCmMXb3GN83vyj1y8ndQFh wAiDEeLYiTzdTAaDR91CIvjcRhRlgRSgqFpnUe+0thECsNI2v.1Sc+OuF+ay HqgYx0kp8irT8Se1RybaqmixRNb2QAxUtNg6wIzpLb5wyLJkrusnj1CtLgxI WTuN87CW2wUIr.lPwOgv47MBfxXoVLlPS1.oOVPVyISQgp1vu898ITsqv+5G 2VjpzIdUspT6Eu1s6Hk3WXPKL6jM2wE1GGqITJIuEXZ1Tdk3s6nmAW5Rg+H. wAlbX0iskicr1lUH5fm.bwY5R4nswmT8EWg2nqcEdcFoU3UAQpIrtSjQ.Pm5 XTBSmm7TmnI8kGRmPSm6J7b2fmIvLkdbimWzSv7hb.FKt.Si3xH7wa5Te3eJ mgnG2oidbMAeblN4kQ3iyjgON9lfOfoSdYa.83DMYzS37hbbLwb2Y5b+XN8L iTmOgneSoGOSnG+ISdYj57zEs.XB7.lPyKShV3OuHGvDpMaaJ8LMZy7Cguxm pG0Y6oScNxD7IddkrZXmDRNmbxwo6IroGV0bhTiqO3+AghcAOn8tiemwiALI 7BX5LHAlDdA.lY9OmtrsAtyL7wDGVSW3kHCMGmOyrd5xjzDKqoKRmI1US3jX MwpZxnFeSTb7Fxo7IgU7.10mocOwNAWr8PTuIBH2jR9hqeCh13GZP5D9AWKi I9OJGwt6Pxl028VvAQignYDcwXB8DLcIDED+Fn5BbpyAJL7nBZnIoCIJc7Im 6GNkex484jy5yomyG1n8G28+A8l9Ag. -----------end_max5_patcher-----------
jvkr saves the day as usual…
@wetterberg, this is so simple it is slightly embarrassing for us all i guess:
----------begin_max5_patcher---------- 3715.3oc6cs0iiZjE94t+UTx6J0S10gPUEETrJJYVEk2hztRadXk5zYDFJ2l zXvxfmo6jMyu8st.XvFvkswL1c6dlwtGtd3qN04dc3Ot8lQSRdlkNB7O.2Ct 4l+31atQtIwFtI++eyn4dO6G4kJOrQSVkkkDOZrZWIqxhXYYurfotFil3E+3 HvC46dgWl+rv3G+vRlel5Hv1lFThooo8X.BgLL4eYV7Y4IFFHuYIS9suF4Tb yhWMOLle6jDBb8FUDgZqhM9m2dq3iwZ9DwuBSXKa8IJLNazXcdvTOEpGILtq GIBs3tMMINK1at7dM5etLzKZT4cXIe6YrkefE6MIRdDlcAD7MENe07pGm3pm F96xyEJnqlfLz3RLo37QG.JNmkl58Hqf7yXOKwEA7wVt.7WgsBv5fpVR7jPM fXW9OiAPZUn8w3D9oDE5+TUDoJh6taDuFph1GHD1i3k2TVb7KSRRl5MC7WL+ 5nDeunIqlN8vvOGrsgskoIjvYJMkfIjXZ3R3nHbSXrBdgO2vqX1m3D1Vvk.Y XK+bMjB3OisL4IFyvKbJncFuoQId5M211EZ3XyQQNqniiDDcIFTAuncGSyM2 SPDtWya6OPbwLuzDNHZZzJVkxmiwo5NAISnDYTR.scM3h5UPVK3i0Y2jR+j4 yYB48a.PeKfEG.VjvElAd27zuZTGS33O9HwyMpTY.DZaPQcfC1mR9DyC.G3y L3Wj9XhCwxfR4vAoDMrcLvcAFNmVciPCyuTyxVxVHXi9w3.NH8SboUYgcXIk 93pkhKiqijB4Rj5BbomRNMX+iU+mLukY8JZAo4nkiAUXJgUGnE4bCsZW9Tp. nzWBkfOgHz+aqmDJ3aBIT4nwtjPgNwVuO.Rn5GWdx03iQ161mGKyyaedr5Qa 3SYQbL5f84o.VIDI2noAjt2N7foWHFv+HK9yZa0oeRTxR09jtxr9CXEzoCHk JOXWSCGgCPj1YWwmTaxfUoT1xbTKG13WivH1GYKSEJ7Vez2LxawhJa9lJmh. q+MEzXOtbSgwpMYVtokrOFVb9VpMxGAusXmEvUtIE1Rzhxc6l+kEAsFp3C1O VavvcbkOf0OPtiYOwBpRHiR3Z2Ci4Z4S4pyTZ1qt6.1TuUQYenYvr99m54yZ 8jabf6lQOtLLHIVPD0NSwlKtc2y8SV4sb0GF4QD6sngSlqANaU5DukBDNW3E pXmYIIQ02U4fJeViGWJlWFKKTQrb2GJ1Y37EKERiqdiTxFmk5uLIJp1kRsmO 1vdB3i69rOEFjMqlJFwd3Gd3hhgfQkXTP3irzr5aKy6wz5aoV7CqxPVUbPss 2kXg5hF9j2GYf.17jzYIepzO9VDnNthP0VkBPcMrrsscD55cvJKeTFC45TWV vlxCftUu8syZskbAqMNsFXmaQm9MExXymk1+.b5hHurVP3c.e4QjCB2J1sag b1GHxg13zJlniNDD0bXPTU3nJgzimkkqlxvhZaK7SABckXtokgo01gVYKfmb f.u4YLK6hjmXGHGqIUwwB2IGq0aHN1EL1S8pPVKWqJRIrJjR.IaGrzs.dTOA 7mSbrQIIOsZwoChKXqcMvXMfX3qPHN0a9hH1IChKLU.gMrD1JP6FhceEhvRO yA490ZBdOmrke48LvpavdW.sfwU.z1bCvrURKnDC67z70ENiFR0avAhSVhvI KAV.yiEWok3JxUZ3fEGMsxS7WW.K9.AVxYLvxui.H384APE7KidmJ1BeE3es JawpreYzH8wSradN.sMn161PrC0bB3YrYC74+UfyfUym+xwwuhky8QJKbwtF N3cJ..doJ.ndX721bA.2k+DP1LtJsD+TvTt7.unH0FBENXHvburrkgSVkwRA ujrB36EykOmYXXT8xFEFy7SVohf.ReUdJIwHSohOwPSqiAl8Dycgsx3uzL8c M379v3.1yiAueBGSClmDv3+tpBWFC9we9GD+6HFAp5rGxEUTrF6ZHfdoJeoK n9WAKYbl9W.OljDHmBbmxR56.YdoOktCw0DSQZ3wXSgwZHUj7nNFDjsiIdG1 U.+Rimqi2nf6okvqIenE6uYfNMY0R+Bou4lkBp+LGvRyBiKi958kZ+4h1qdb yBCBpGrSU7ASEQaLPelh8khwZRwVacbeonXzdfwmGTLbeXKrNOH48AkwmGjL bOHYTOPxqkfDHKjBVr+Kev2yeFqYgIkR3Jb.wX9yIqEzMpvRtQg+j2+cTGHS 4ER5w3QeUTd1ezWFklii+Yhwd53uHIOc7OPp3Le7vqHA.G8UQjmF8tHfGtcM i5EX9iyK9ScxeL4Z9iyyerMRk6cH7Z9iul+3AL+wySyRDJPR6uHTRk9E6fMr DIfC0siDCpeYCTbz5ILEYZY3h4+Xoh1i9fJ4UHnphtd85BNOF6F8HNmm9XJx fP2MP67JL754omu5Zr43SUDjRMLgttTQ3JQ6U13reMlgdIy7lEtMmSte3naH eQttFtZjWtWi4KRVhT0VxXpPTBj6HOzj.+jTgup6GmtV1J2Uz7E+HD63nhkr Cw.2PA22WIe5btNqN5jOUANQ13q4dpEz7mEluB92btcoHm2McYxbfIHKA.+p 5X7wkeJjK0fxc.jRdClfpeEH9yQllpCMCIhZeCKb8FKlBbMIUMM.8s.Ah5sD vGOTR9k+1pIg9.kBgjHkN4I7o.bygDCboIyYpDq78aL1xdVFCtTv2AdjEq97 yF0tPFbZiOXMVwBnxXC64EQdwUWzVaOXi2wTNS2RUFEZQnx.vXQOAU3zYc5v DycRmkrJJnHuX9IwogA7gu6UiEO.96f6mEx8Oa4KO.3it7SQv.Dmw8lmObx0 yjNF3EG.9FA+v8odydPHZzCbe.KJy6gulk4CRlpNO0RB9fml5hLbM41nU5xL Fwm3xsayxcGSUsdUl7M5EWx2bzjhImMoxhLv4X4ZBNamhomOI3bfSI6Am4M8 yhxIOqa8T1kJiU3oO4PssRLWx3Vg3yNr0gokisgMLOOONx.6PTs3hV5ZJXzq vFZgvJLSJ2QSm0Kd9crbwwlmaKW7dYgyibvx0Jl3QGZpERfbe0tv4g1tFBiy kNAqy5lGYcBVA3CdS7vy+IQrLKcobOkoTE0rzB0HWHKjagNYcZgP6KukpmLP fc1i3rOkfTOx9HTx+4ioIKk2OzT0gfkciA9twhCUWjAepYeX+dfm+m6PLKj3 To8GXU9YiOdkcKHY2+ZiFC31i2Gu7yVFX+aBV+0yUOjgVnipTegRGls3y.5Z b8rSrPuoXAYRLnNpt7moNhHgVW7Mjk9C7rJ6Tc4FqsKvC+Zseawwr.Id0O8p zbs0vFaW.MF.xy8lrUX7zjOC3tMIxdnzkucy.FElJ+tbC57KZCx4x9fPBmId Gn7I0GC54iEiUlQizRbH8Rxfw9vZwpHTd6201vA0cymz8Bwhwil8oh1TsbSy 4Mn+FUAIKM723RwcixHvoy7Lk3ZcmnofIpYi0RVSEr24dSvsuwpJrT15hUVu oZXvU8xmpaSC9RqwTW07JvukD+XzK8VaoNeMhVzRpoVqCWcaAJ4BgAaXVUG4 dbq+p5.dRClxkzh5fXq54mnqKpiqKpigbQcDFCvMV7epxmOuF.KK6X9gqVCg oGaA.JpyLhCFKZFqp9oBFaYPH6tvieMWI8aG7fioR5c4BI31LQcV2Uyg1FHm c2LfdMVI8bdWTir5EEW+oiYWzsabn11D2hprGioxtxD05sZU1W0Ptlpx9zEQ eApx9wp0exXY1owZTTxWKv91qtamq80oq0V+a8ZqmttqRds152p15uSIl+tM Jkd1y9rnHwfhbnZUPXBP3w11Mqn8YHAa5TNj.opZOSELoNGRPuNaHTWV0.OB hklPIVnh4K8123EAuy0Bz9rpCTAuVf1CdAZuOkV8wTPzsUvquiat.3SgYyxc WotZrxpesIAcM9tjRYlPq8pvF6qdGRvm2nUpO7UJbT3SLv8x526Av20Q4qQw Uckvt62ssl8.j7Eq3o+e+Rbs+9APHHJjELFXC3OcbDIEDmjAHMxUY2QdMP4r UvJrUtsgg3KkhMOcAiEzIuCTzglqUS06r.yoWJO8aa8VPB39xrt9.WRjvVNv 8hb+TYJlthhrPkISDZo5zINntjGgstTfNtopy8dYBCbmZ87dmv306jqn2M8C ILs5p5M+cOv2.ReIlKx+a.QSENUxAtzuecepUaHNuKn4HyABBqZ6IDZ6PLgb o.wkdcClw8sliMfvLAXllH+anrMDtFwZGbrTujkQPmNeCf6bIqKbKA+odA74 yEZGSh4+GtuSf6TKDcE6ZbxVdM2H+GcmE+dtZAjRCq.narFcfWN7dorL4xpG TuLLa784siALOI+XHsh9wVqUI7kyhwh68cWyvbLku.Nn3xZYi.49XaZh5p.m Oo07PwVql05pjrs6520pJRtHB+Jq66InaYXPn+pnjUo7odJoUxWGJhXYjmxh EQbUHhhITDhCtbtpkXwtVraTCN6FA4JKfIwBAD0xjNXurd23r0XaAK9oliiK QWDQU4TuYrnExH14Ewk3KDe4UMrdU5mEBPUDLV9WbcoocqVHe0rHd2aHJdB6 79HZKlj.O8vW2LrPBsbXWnJizBCqj5qGbH0.wlt+mObrcfJpEMnV74udeSda G921Y+sXLzkdb0fbHCF0P0fZbGLpQmgJ6AiZr0fZrFLpgnCiCjNbziNrNjgi 2gf0fdvC2LKhNCWUC.8IkZrbOuPGK5YF8ninGqga1kE4LCeP5fOCH8XpC9Lf iWZNaGNHTCVqYWCmlTrNbOngibzbvZXnFjN1YfGNxQGIOngi2AoyTKzvI4AU aVbKLOlCF4.0xNCmyP5YXDEB0g8Y.gGcj8Lbps1vu2u7byhak8tnmcILbdXf rOKkGw.KB1.4RbfhPYpdcxSvTCjiCUr9TaXS4k.Eh.MPE83fpKwmd7AVG7+P EtohcxFqaGAkrw50Yi0pylqSG9U6Ou8+C3NKCLA -----------end_max5_patcher-----------
… i have Gen, so it is there, so i use it. i cannot imagine why i will ever use the [wave~] object ever again in my Max-life. it is a huge huge shame that cycling have not updated the MSP play~ and wave~ and lookup~ objects for use in normal MSP, but seeing as they have not, i just will not use them. the changes in Max6 to [groove~] however are awesome and appreciated.