# String handling inside of framelib networks

**URL:** <https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62>\
**Category:** Feature Requests\
**Created:** [25 May 2020 10:32 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62 "2020-05-25T10:32:13Z")\
**Posts on this page:** 15\
**Page:** 3

<div class="post-metadata">

**Author:** ![james.bradbury](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/james.bradbury/32/15_2.png) [@james.bradbury](https://framelib.discourse.group/u/james.bradbury)\
**Post date:** [29 October 2021 20:38 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/41 "2021-10-29T20:38:58Z")

</div>

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-----------
> 
> ```

---

<div class="post-metadata">

**Author:** ![koka](https://avatars.discourse-cdn.com/v4/letter/k/50afbb/32.png) [@koka](https://framelib.discourse.group/u/koka)\
**Post date:** [30 October 2021 09:36 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/42 "2021-10-30T09:36:48Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@balintlaczko](https://framelib.discourse.group/u/balintlaczko)\
**Post date:** [30 October 2021 12:25 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/43 "2021-10-30T12:25:25Z")

</div>

> [@a.harker](#):
>
> This also allows you to map string parameters (enums) to numbers as you wish, which is useful (e.g. filter modes etc.)

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).

> [@a.harker](#):
>
> I was considering adding a scale parameter to the lookup so you can lookup with indices, or 0-1 (normalised) - thoughts?

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… :)))

---

<div class="post-metadata">

**Author:** ![james.bradbury](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/james.bradbury/32/15_2.png) [@james.bradbury](https://framelib.discourse.group/u/james.bradbury)\
**Post date:** [30 October 2021 12:34 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/44 "2021-10-30T12:34:04Z")

</div>

Someone will have to go to the bad place and compile them 🤐

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@balintlaczko](https://framelib.discourse.group/u/balintlaczko)\
**Post date:** [30 October 2021 12:41 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/45 "2021-10-30T12:41:30Z")

</div>

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. :))

---

<div class="post-metadata">

**Author:** ![a.harker](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/a.harker/32/21_2.png) [@a.harker](https://framelib.discourse.group/u/a.harker)\
**Post date:** [30 October 2021 13:45 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/46 "2021-10-30T13:45:01Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![a.harker](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/a.harker/32/21_2.png) [@a.harker](https://framelib.discourse.group/u/a.harker)\
**Post date:** [30 October 2021 13:45 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/47 "2021-10-30T13:45:58Z")

</div>

> [@balintlaczko](#):
>
> it’s probably in a private branch?

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

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@balintlaczko](https://framelib.discourse.group/u/balintlaczko)\
**Post date:** [30 October 2021 14:12 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/48 "2021-10-30T14:12:51Z")

</div>

> [@a.harker](#):
>
> I don’t ever use private branches,

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.

> [@a.harker](#):
>
> There aren’t VS projects for the new objects yet. I’ll try to get that done soon.

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

---

<div class="post-metadata">

**Author:** ![a.harker](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/a.harker/32/21_2.png) [@a.harker](https://framelib.discourse.group/u/a.harker)\
**Post date:** [5 November 2021 17:30 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/49 "2021-11-05T17:30:22Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@balintlaczko](https://framelib.discourse.group/u/balintlaczko)\
**Post date:** [5 November 2021 19:25 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/50 "2021-11-05T19:25:52Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![balintlaczko](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@balintlaczko](https://framelib.discourse.group/u/balintlaczko)\
**Post date:** [7 November 2021 15:36 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/51 "2021-11-07T15:36:07Z")

</div>

Finally had the time to build, all seems to work well, thanks so much! ❤  
 ![fl_polybuffer_fun](https://global.discourse-cdn.com/free1/uploads/framelib/original/1X/ac4753d184891b3dd9b4e9d7a9291b263c2fc612.gif)

---

<div class="post-metadata">

**Author:** ![james.bradbury](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/james.bradbury/32/15_2.png) [@james.bradbury](https://framelib.discourse.group/u/james.bradbury)\
**Post date:** [7 November 2021 17:30 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/52 "2021-11-07T17:30:40Z")

</div>

Thats a lot of grains!

---

<div class="post-metadata">

**Author:** ![a.harker](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/a.harker/32/21_2.png) [@a.harker](https://framelib.discourse.group/u/a.harker)\
**Post date:** [7 November 2021 18:54 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/53 "2021-11-07T18:54:18Z")

</div>

> [@balintlaczko](#):
>
> Finally had the time to build, all seems to work well, thanks so much!

Great!

---

<div class="post-metadata">

**Author:** ![a.harker](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/a.harker/32/21_2.png) [@a.harker](https://framelib.discourse.group/u/a.harker)\
**Post date:** [17 March 2022 10:29 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/54 "2022-03-17T10:29:50Z")

</div>

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”)

---

<div class="post-metadata">

**Author:** ![james.bradbury](https://yyz2.discourse-cdn.com/free1/user_avatar/framelib.discourse.group/james.bradbury/32/15_2.png) [@james.bradbury](https://framelib.discourse.group/u/james.bradbury)\
**Post date:** [17 March 2022 10:42 UTC](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62/55 "2022-03-17T10:42:07Z")

</div>

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

[Previous page](https://framelib.discourse.group/t/string-handling-inside-of-framelib-networks/62.md?page=2)
