Clock Patterns

VVVV.js v0.3.0 Micropage

You know what time it is? Exactly: subpatch time. The introduction of subpatches in this new version of VVVV.js is only one in a row of improvements under VVVV.js' hood. — improvements in performance, stability and functionality which bring VVVV.js a step closer to becoming a ready-for-production development tool. Here's what's new:


The biggest addition in this version is the support for subpatches. If you are into VVVV or similar software, you already know how valuable these are. For those who are not familiar with the subpatch concept: you can now group together a patch and form a 'subpatch', which you can nest as a node into another patch. You can think of it as functions or classes/modules, if you like. This is great for modularizing your patches, hiding complexity (aka mess) and increasing reusability of your code. Read more about subpatches in the VVVV Documentation.

The Clock Pattern Example

If your browser is supported, you should see a pattern consisting of repeating clock designs at the top of this page (inspired by all the great projects, where clocks are mounted next to each other, like here and everything from here) Click the patch on the right to activate the VVVViewer and observe the running patch. It uses subpatches to modularize the five different clock designs, and leaves only switching between them to the main patch. This is great for various reasons:

Pin Types and "Node" pins

Until now, VVVV.js was fine without distinguishing different types of pins. The introduction of subpatches raised the need for generic "Node" IOBoxes, which led to the decision, that now is the right time to add Pin Types.

This allows us to port all the "Node"-nodes (!), like Switch (Node), GetSlice (Node), etc. Also, it's the foundation for type checking, which again is crucial for a future in-browser patch editor.

Performance Boost

VVVV.js uses underscore.js mainly for iterating through hashes. This is really great because it overcomes Javascript's lack of ordered hashes, and creates more verbous code.

However, if used at a high frequency (as in every frame) it turns out to significantly throttle overall shmoofness. Replacing underscore.js calls with native loops at performance critical code locations brought a noticable performance boost and should drastically increase the average frame rate in most cases.

Editor Interface

VVVV.js now provides an interface for "Editors" — this can be any kind of program which manipulates the VVVV patches in the browser.

In this version, the VVVVJsConnector (which connects classic VVVV and VVVV.js in the browser) has been decoupled from the core, and turned into such an "Editor". This paves the way for creating in-browser editors and plug them into VVVV.js effortlessly. In the near future there might be a tabular editor which lets you tweak pins during runtime, to begin with. And eventually, this should lead to a full-fledged patch editor running inside the browser.