Wanted: Generic versions of most common spreading operations

using VVVV.Nodes.Generic;

- region PluginInfo
[PluginInfo(Name = "Cons", Category = "MyCoolStuff", Help = "Cons", Tags = "")](PluginInfo(Name = "Cons", Category = "MyCoolStuff", Help = "Cons", Tags = ""))
- endregion PluginInfo
public class CMyCoolStuffConsNode : Cons<MyCoolStuff> {};

- region PluginInfo
[PluginInfo(Name = "CAR", Category = "MyCoolStuff", Help = "CAR", Tags = "")](PluginInfo(Name = "CAR", Category = "MyCoolStuff", Help = "CAR", Tags = ""))
- endregion PluginInfo
public class CMyCoolStuffCARNode : CAR<MyCoolStuff> {};

....

It would be a real time saver for anyone coding nodes using custom pin/link data types to have all the classics (Cons, CAR, CDR, GetSlice, GetSpread and so on) available as generic versions to subclass easily.

Some are already available (https://github.com/vvvv/vvvv-sdk/tree/3829721bf10b657f4cda6eaa4ad173909a8ca897/vvvv45/src/nodes/plugins/_SpreadOperations) but others I haven’t found.

While I can just go and write simple implementations of the ones I need I suspect most are already written in some form or other by devvvvs and contributors so it would be cool if we could work together on making it easier for everyone in the future!

If we(devvvvs) can decide on a place in the source tree and a namespace I think we could populate it quite quickly.

Have you seen
Generics and VectorSized?

Yes, I guess it’s more a question about organisation/structure.

I think it would be useful to have generic versions available in a new namespace that you can include when writing your plug-ins and I guess this is debatable but maybe the most useful/common ones shouldn’t be situated in the addonpack.

Right now to be able to subclass the ones available (if I’m writing a dynamic plugin with the Code Editor) I need to add “using VVVV.Nodes;” and add a reference to VVVV.Nodes.dll in lib\nodes\plugins plus references to a bunch of .dll:s from the addonpack.

Think this could be handled better even if it might not be high priority.

ok, let’s first gather all resources of generic node templates which could be useful. i know that @velcrome also made some and even recoded some which already exist because there was no good documentation.

anyone knows some more?

probably got some more lying around, will check

nice one, i really like the way it is possible to write generic nodes.

while we are at it, maybe this is a good moment to ask to add the dll with all the generic nodes into nuget

yes, we are thinking about a separate project with namespace VVVV.Nodes.Generic which can be linked by everyone in an easy way. nuget is a very good idea.

but first i want to collect all sources to decide how to proceed.

for now we have:

bjoern:

  • Permutations
  • Combinations
  • Variations

woei:

  • GetSpread, bin sized
  • Select, bin sized
  • SetSpread, bin sized
  • CAR, bin sized
  • CDR, bin sized
  • Reverse, bin sized
  • Shift, bin sized
  • Store
  • Occurence

vux:

  • Stack
  • NearestNeighbour, needs to implement Distance method
  • Sort, advanced, needs implementation of comparer

velcrome:

  • GetSlice
  • S+H
  • Select
  • Serialize

vvvv:

  • Buffer
  • Cons
  • DeleteSlice
  • Pairwise
  • Queue
  • RingBuffer
  • SetSlice
  • Zip
  • Unzip

correct me if i am wrong.

the goal would be to have one file which links to this project and has a dummy class which implements all basic spread nodes. as a developer you can then copy the file and do a ‘replace all’ or syntax aware renaming to get all nodes with little effort.

  • FrameDelay
  • AvoidNil
  • Change

vux:

  • s/r advanced

we are on: generic-nodes-project