How do you guys manage complex patch organization in vvvv gamma?

Hey everyone,

I have been diving pretty deep into vvvv gamma & loving the flexibility it is wild what you can build with it But now that my patches are getting a bit more complex I am starting to feel such as I am losing track of things. šŸ˜…

Also I am trying to keep everything tidy using regions and subpatches but sometimes it still ends up looking such as a spaghetti monster. How you folks handle this—any tips or tricks you use to keep things clean and understandable?

Do you follow any naming conventions, color-coding or maybe even some kind of visual ā€œfolder structureā€ logic? Also do you rely on any external tools or documentation systems to map out bigger projects?

Also i have check this resorse Firmata-Arduino example patch from beta to gamma blue-prism-training Want to hear how more experienced patchers approach this— when working on long-term or collaborative stuff.

Thank you.:)

I’m not sure what to suggest, since every project kind’a brings it’s own logic, mostly you want main class - process node, that handles logic, and and a process node that get’s main class as input and access some properties of main patch as methods…

VL.Composition.Example.vl (23.9 KB)

1 Like

I would say from experience:

  • use the Model, Runtime, Editor principle - ie. have a (data) model with all your parameters, variables, whatever you want to call them. Create a record and then have records inside it for all the things you will need. Try to keep the records small and modular.
  • if you want to make your life easier and/or want to use ImGui, use GlobalChannels with the SubChannels module. You can just hook up your record to it and you instantly have your data model as Channels
  • For organising it sort of depends on how large things will get, but I tend to start just putting all the records, processes and operations in the definitions and place them in areas. Once that gets too much I will create either a new category in the definitions or a new file and reference it as a dependency, if it is something I might want to use elsewhere or just keep separate so someone else can work on it more easily.
  • Use GitHub!. It works surprisingly well with .vl files, especially if you use MergeVL. In the last few years of working on large projects collaboratively, I can’t really remember it ever failing to merge.
  • I leave a lot of comments around, create groups around things and generally try to keep things tidy
  • But of course also just embrace the ā€œmessā€. That’s what I love about vvvv and visual programming in general - even when things look messy, you can still follow the logic.

So these are just some general tipps that come to mind. Happy patching!

1 Like

Very interesting! Would it be possible for you to share a simple example patch regarding this workflow?

Edit:
GammaLauncher follows this pattern if you want to check out a ā€œreal live exampleā€.

2 Likes

I think there was some Node session about it - I’ll try and find it. But yeah, I’d be happy to share my workflow for this in a longer session, because I feel like by now I have a pretty good understanding how to start a fairly complex project from scratch.

You can check the help patch: Global Channel of own Datatype to get the basic idea.

I tried basically building my own version of that patch, but somehow the SubChannelsModule doesnt do anything in the latest preview.

Probably best to wait for stable 7.0 for this stuff. I know there are some significant changes planned when it comes to Channels.

Yes, I know the series from Natan, it would be nice to have a little collection of different approaches. @seltzdesign, if you could maybe just provide a very reduced demo as a patch, how you start to structure, that would be a great resource!

1 Like

off topic:

I tried basically building my own version of that patch, but somehow the SubChannelsModule doesnt do anything in the latest preview.

We actually tried to keep the upcoming changes isolated in a branch. But that said: Did you try to use the SubChannels node instead of the SubChannelsModule node?
If the problem persists please open a new thread for the bug report. Thanks!

1 Like

@david and @seltzdesign, how about developing a vvvv workshop for this topic?

10 Likes

I’d be totally up for it! But I’ll wait for 7.0 stable first.