It might be worth considering bringing back Spreads behavior from Beta

Most of us remember well that Beta was created as a functional visual language. One of the outstanding inventions was the ability to add and subtract arrays in a very clear way. I probably don’t need to remind you how much this speeded up development at times, allowing patches to be created in a second with just a few clicks. Also, this feature produced a huge cascade of other nodes. For all the power of Gamma, this behaviour is probably the most important loss.

But it got me thinking recently. What’s preventing this behaviour from being implemented in Gamma today? Can we essentially assign spectral types of operations that do this as well as it was in Beta? Maybe call this group something else, like Functionals or something.

I bet it could be done better, but it is an illustration:

Functionals.vl (16.2 KB)

2 Likes

Another one for vl.addons @bjoern ?

@catweasel Maybe a deeper implementation is needed. Like what was done with optionals. I don’t think it will be easy to add this to addons. For example, there could be a Spectral type. This could take single values as well as ranges.

I am not a big fan of this idea, it might sound convenient, but it can also lead to very unexpected bugs that are very hard to find. especially for beginners, because the system won’t tell you where the conceptual error is.

but having convenient spreading operations is also not easy. in vvvv beta each node was optimized to re-use the same memory section. in vl each spread would be created as a new object which is very expensive and has bad performance. in this case, a switch from Spread to IReadOnlyList would be necessary to implement the nodes efficiently, and the nodes would all be stateful.

3 Likes

Vl misses the quick sketch capabilities of vvvv, I’d often sketch an idea in a couple of minutes to see if the concept worked, before remaking it in a more thoughtful way. vl requires you to think before you act, I like to jump in headfirst before I think. Sure vl might be the ‘correct’ way of doing things, but wheres the fun in that!

2 Likes

@tonfilm You’re absolutely right. We have to accept that this approach has always created a large loss and overhead.

I feel like if Beta wasn’t technically obsolete, it would be a super powerful synegy. Maybe it’s about creating some sort of “context”? A new functional context a la Beta? It makes sense to me in general to think in that direction. As if there are ways to make VL programming in different “dialects”

vl requires you to think before you act, I like to jump in headfirst before I think.

I think this sums it up. vl/gamma was the solution to that dead end when bigger, more complex projects appeared. You could live patch on beta with ok lags and sutters. On gamma you need to restart all the time, that makes it impossible for a live setup.

1 Like