String handling inside of framelib networks

This is a lot of fun. Granulating around whole polybuffers~ is so powerful!

Patch

----------begin_max5_patcher----------
1653.3oc0ZkzaiaCE9ryuBBgdziCW0Ru0dYN0Ks.EnXPQ.sEsilJQInkjLYv
3e6kKx1xINVLwzBsCvDIRS5266s+H82uYVvxxmDMAfeF7EvrYe+lYyLSomXV
+3YAE7mVkyaLKKPJdrb4WCla+nVwSsloWmuHS1JpefmuEffPPQyt0TwaWcel
byc0hUsVREEt.NGfBiMOflQX7BH3u62irqnrqMWzZHJpeV6TseqRX+ZBB1ug
rTCanXsOEACN7sjI2+knm6G2bi9OyuLv9rnt7osmAegjDMjnzHyC1H3C+V3q
IaijmGLe+amBugQWa7VykoFs53PljXdDR9npzyAz3qMPUVw7tzrx15rMaD0m
UEGZzpzDn9QbrWMgCS7FRKDMM7MhWAUdUkPldF.RgTi2IN1hS+BvvSBPrGA3
pbAu9L3ifsAgPFeTByu3i5M78Flp4k7TMzAnyfQFCafk02LB5WLht5FoEc4s
Ys2WK3ofexEfZSrD6WkIK9ZqLUwcVUJ0C0OpKy2NNVIHrM64XZU3IPT3DDIs
MSoVOGPHvnELUnkHjFAIX+pzXSfRKSttzADRhI1xAFAgj2Dgy6++IQJcBPpt
DfxBWzl17Eg9slNFdBvXUdWyV.Dbae5+6xjMfbw51QqjkQLIQPD+lkjAu5YI
2HTgb5jmChDjw+LxnWY9MzJM7ZqWqULh.LFFQwIC5HIL4iVv9a5jRoWcUoNK
45x7TQ8bfCp0dHaUqHje0qjoHk455xB0R2NNHwHS.3H+lhgvlfrnOloB793V
PaMuR7bYVJ31JdMuPnZ1tAv.IrQiNEhrcmf7L7i7lNV7bJe01QARDlbneZ8e
cuhGbxDXP1jI+mwQQXnQOPCuBsHiilhZATAZ1BtsSl01.JZ.2JR2HZ.OprPG
OSYjsqxP+loDiljZfJpNB2Mq34Bya4B4l16A3ydDIVIPewfXre6FCCm.IPA+
eDMppija1BV1sdsnFvW.xjHcPozT07.GD.DKxg90DXRr7U4TSG2CGa6kg42Z
fmtd1T773Xz1EpmOSA1+IZkoGg1hF7bmLW8l0pJy+l02bKf6PIuX1gx.+nk7
tjK2b5nRm1lsexF9Chz6TqSwT2waUAVVpJVuoGy8fdVfnXov7UBMSXDS6DVF
hFjmIe4sXXPrd9ikfMkc0q1w56ts.vAPmphukI4sYkxAKRWo2fEUVqJxdOC8
J0lWIM8zTFcQTVekA.zHTVeHzZReYTJ1ALZXmKlRgNPIrOHDchHDyEBoOmqA
pxhrzpxLYaytd2s2.EL1d4Lv8i7swr9zfGmYi8gXwESJVnOnDyEJAcPAvv1d
ufL8YjwrwYuLdC6pwAbLiCFwddxGFMIFtXW3sdC2Ai7crvHW3U54zwwFkJw1
RCgZOcd8HumvvUVE5Fq1e0WmlUuLoJ1kvAjnw4Ul8BkGL3BMNcQHZ3d2z21a
59nA6b1ICc1eo3EeYdXPWQwXh2Pz.wqdvTHdgNXixnGXLyfWKCIWlIJz0n6i
vp8AoFL3BkgzopTFJ8cT76kIrcoTWpGHDwob1V26KiPwSjRh3jKkCgRCoC70
MCtTkpSbVxQwR8TpP2Is+adxAJ6f1fXuxkACtzptboSKeDzvQGrioisQcdU0
Ch5l9EaHQPA+qkF0R7byvLocn4DGBpEOjsa8ly0OfWu59rVwp1tZCaE7T+u1
lfhRkBV1k0qiUfSQxl1uk+xCGPxKra8Wz+Zu9iVdaWyc+lP1YOtBEnVy6xaO
VPrby5r77Uk4V1a3ITr63PBre579o2u1u.fKvITDJVIVVPPjHbn4M0KL1.2i
98f1sIJil.w5kRCwQTl4sXUkED8avWrM7AZAQIVJ.ShgT6apoPJZMbab4lbC
miMGjW+rU0kUk06Topslre8cskap4oYBY6qOQl481Q0pO0H1MxjdYp42xyt8
LztauxvdfV+Zdm3SnyoH3qVoHvQBWUorgzHMLC2KwRzSsCv9jAqKeT9t4vC7
ESoyoIFUxUhC+bsP794Png4H5+oeCEFqL47Oy86hz2MqEESIHiULhxTVzFie
kW.Nw+72eIxyKe7cyhwXFxX.FEihQFFjkvzdrCb3BVWp3rrm6CmpuPVVBDF6
K.zUrTT+4x7OfDVYIBMQLXIXDyfDzvHFdgAq3RQ9elUlKZuhQZI6cvT7OLJ1
FzTYLaBeh+HwZQ+uNVqM2q4lCzphlJtMgt4BFt4G27ufELv95
-----------end_max5_patcher-----------
2 Likes

Thank you, Alex!

I’ve been thinking of making a YouTube episode about my idea of a “perfect” granular synth. And I think that the framelib was the missing link.

Now I’m super excited to do it!

And yes, dancing around polybuffers is SO powerful!!! Thank you!

1 Like

WOOOOOOOW! Super niiice! Also with the existence of fl.lookupstring~ it makes much more sense to me to have fl.makestring~ too (in terms of naming).

If it’s not much work, I would love the option. But it leads to the question of how many elements you can define as arguments, probably something in the 10s? I guess the normalized lookup will be more useful when you’ll implement the large lookup table/dataset for strings.

A (possibly dumb) question: where can I get the fl.makestring~ and fl.lookupstring~ externals for Windows? I see @james.bradbury is already using it, and I am drooling… :)))

Someone will have to go to the bad place and compile them :zipper_mouth_face:

I would happily try my luck with that, but I don’t even see the code on github, it’s probably in a private branch?

Update: found it! It’s the develop branch. Well, I’ll try my best, then. :))

There aren’t VS projects for the new objects yet. I’ll try to get that done soon.

Currently you can do up to 32 strings for lookupstring~ because each string is a parameter. That to me would cover all the cases where you’d be mapping enums in a specific way. For super long sample lists etc. there will be another object that works differently. I’m imagining though that often you’ll want to randomise the strings, so normalised lookup might be neat - it’s maybe 3-5 lines of code, so easy to do.

1 Like

I don’t ever use private branches, so unless it’s in my working copy only it should be on GitHub.

1 Like

Yes, sorry, it was just my GitHub-rookiness, then I found the dev branch, which I have cloned now. Not pretending that I know what I’m doing, but I’ll google and try.

Oh that would be super helpful, thanks a lot! <3

OK - the VS projects now exist. You need to put GitHub - Cycling74/max-sdk-base: Headers, libs, and scripts for Max external development parallel at the same level as the main repo.

1 Like

Thank you, Alex! I’ll try and let you know. <3

Finally had the time to build, all seems to work well, thanks so much! :heart:
fl_polybuffer_fun

1 Like

Thats a lot of grains!

1 Like

Great!

1 Like

I’ve now added a normalised mode to fl.lookupstring~ which is good for randomising parameters easily (fl.random~ into fl.lookupstring~) - set by the scale parameter.

If anyone here had (or wanted to make) some examples of the two string objects for use in help files that would speed up release. Also let me know if you want to get builds with the new feature (all work is on a branch called “develop”)

This is a tasty feature. Will give it a whirl sometime soon