This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

# Blog

Blog-posts are sorted by the tags you see below. You can filter the listing by checking/unchecking individual tags. Doubleclick or Shift-click a tag to see only its entries. For more informations see: About the Blog.

## vvvvhat happened in December 2019

Previously on vvvv: vvvvhat happened in November 2019

okok,

still no bigfat vvvv gamma release but we're now really getting close. See what we've just released last month:

This means we're now basically feature complete and are planning for an initial release in Q1.2020! More tweaks and fixes will happen for the export and we'll do some more work on the help browser to make it even more useful. Meanwhile please keep reporting your buggers and help us make this a solid first release.

Documentation-wise there've been three updates: A new Section on IOBoxes in the gray book and two new how to videos:

And the biggest news of all: NODE20 is happening! Just in time so that we'll have 3d-support in vvvv gamma and hopefully finally match most features of vvvv beta. Ideally we'll have at least a first version of VL.Xenko out before, so that some of you can even already prepare workshops with it... Curious about our progress there? Expect a separate blogpost with a wrap-up of latest developments shortly.

### Contributions

woei opensourced two of his contributions:

And there's been some action in the work-in-progress section on the forum:

### Gallery

And some more fresh from the vimeo group:

### Jobs

joreg, Saturday, Jan 4th 2020

## vvvv gamma licensing /2

This is an updated revision of the blog post we've previously published, incorporating some more user feedback. Many thanks to those who listened and engaged in a discussion with us!

A summary of the main changes in respect to the previous blog post:
1) Indie is now up to 50k€ revenue
2) We removed the idea of a product license, meaning you don't need to license devices that run an executable exported from vvvv!
3) There are now only 2 types of licenses that are needed to run vvvv itself: Developer and Device (See below for details)
4) We simplified monthly payment

Helo everyone,

We recently released a new preview of vvvv gamma, including executable export. This makes it feature-complete for our first official release in early 2020. We're now only ironing out bugs and tweaking the help/onboarding experience a bit further. So what you see now is what you'll get, when you buy a license to use it commercially. Therefore now is the time to inform you about the licensing options we have planned for it. Note: This does not mention any discounts that we're still planning to apply for early adopters.

Trust me, when I tell you that this is the most rewritten blog-post we ever published. Creating a suitable licensing model seems far more complex than creating the software itself.

### Continuing the T.R.U.S.T model

Foremost it is important for us to keep our (pattern pending) T.R.U.S.T model, which means:

• No copy-protection
• No feature limitations
• No mandatory registration
• We trust you to declare your commercial use of vvvv correctly.

That's the world we want to live in and we hope you too! We don't believe in any form of copy-protection or artificial feature limitations that usually only restrict honest users. Others will always find a way around such restrictions and thus not be bothered anyway. We're all grown-ups here. If vvvv helps you make a living, then help us make a living by providing vvvv for you. How simple is that?!

### Education must be free

Same as above, this is what we believe in. In the end, everything always comes down to education and equal access to it. We don't want to be responsible for anyone to not have the pleasure of learning vvvv.

There are commercial educational institutions that could make us a lot of money indeed. But also we're smart businessmen and know how to cash in on the free drugs we hand out now, later.

Further, it is in the interest of any professional user of vvvv to quasi support the free educational use as this keeps the flow of new talents steady. WinWinWin.

### Gamma over beta

So why not simply keep the existing licensing model? Indeed, to make this clear: The licensing for vvvv beta will not change! As long as you're not interested in vvvv gamma, everything stays exactly the same for you (except you're missing out quite a bit! Just sayin...).

But then, regarding vvvv gamma, there are a couple of reasons to adapt the licensing model:

• The vvvv beta licensing model is simple to explain, but just does not fit well to different use-cases. We've heard of people not using vvvv for certain smaller tasks because they didn't justify a whole license
• With its possibility to export executables, vvvv gamma becomes a different type of product. It allows you to distribute and run your projects as self-contained programs without the need to install and run vvvv on every machine. Like this, vvvv becomes closer to more traditional development environments where it makes sense to charge per developer seat rather than per executable that was created with it
• By still offering the edit-while-running workflow, vvvv gamma at the same time stays the same product and needs to keep existing licensing options
• Too often we heard the phrase "I told the client to buy the license" as an excuse and even partly as a complaint that it would be our fault that we don't have means (dongle, ...) for the client to understand they need a license. But this was never our intention. We're doing business with you, not your clients!

So bottom line up front: vvvv gamma is more and therefore requires a more defined licensing model.

### Types of vvvv gamma licenses

We'll want you to declare your use of vvvv gamma using the following options:

#### Free Use

• Non-commercial use
• Evaluation purposes
• FOSS development
• Contribution development
• Student projects
• Hobby projects
• Educational Institutions when teaching with vvvv

• Per developer seat when working on commercial projects
• Export and sell executables without extra charge
• To be used by a single developer on 2 devices in parallel during development
• If more devices are required during development, extra Device Licenses are needed

• Development: Needed per device or virtual machine running the development environment vvvv that is not covered by a Developer License
• Deployment: Needed per device or virtual machine running the development environment vvvv

### Pricing per size of wallet

Another thing we wanted to improve over the beta licensing model is the fact that we understand that vvvv is used in quite diverse scenarios regarding the financing that is behind them. To accommodate all of those on an individual basis is not really feasible. But at least we thought we can add an option on either end of the default "professional" user. So depending on who pays for a license, there will be different prices:

### Subscriptions

Subscriptions are optional and will be available for both yearly and monthly options. If you sign up for a yearly subscription, we thank you for that with a 30% discount from the second year on. Otherwise, subscriptions simply offer the convenience that you don't have to think about the validity of your license all the time.

Of course you can cancel a subscription at any time and if you had a yearly subscription (or a monthly subscription for more than 12 months) you then own the last version of vvvv that was available within your subscription period and you can keep using that version commercially indefinitely. A subscription that was canceled cannot be continued/updated at a later point. This means if you need an update to your license after you cancel the subscription you need to buy a full new license or start a new subscription.

### Conclusion

Accommodating the various requirements of all types of users and use-cases is a tricky task. This paired with trying not to completely disregard the pricing politics of "the competition" but also adding our own ideas and still balancing an economically viable solution didn't make it any easier. We still hope that we found a way that can be sustainable for all of us.

We are aware that the above may leave some questions open and we are ready to further refine the fine print and add examples to make it easier for everyone to declare their licenses. Please help us do so by asking your questions in the comments below, so we can understand where we need to get more specific.

### FAQ

If my installation/show is running from an executable, do I need a Device License in addition to my Developer License?
No.

Can I use my Developer license to run vvvv on a device in a museum?
No, the two Device licenses your Developer license covers can only be used during development. Device licenses for deployment need to be acquired separately.

My project (a server and 5 clients) is running at a trade show for one week. I don't want to run them as executables because I need to be able to change things on the fly during the week. I am one developer and it takes me 2 months to develop the project. What licensing applies?
For deployment you'll need 6 monthly device licenses to cover the 6 devices running vvvv for one week. For the 2 month development time you have 2 PCs covered by your developer license. Assuming you're only using exactly the 6 PCs during development that means you'll need 4 additional device licenses for the 2 months of development.

We're two developers working on an installation distributed over 10 machines that will eventually only run an executable. But for development, we have vvvv running on our laptops and all 10 machines for convenient debugging.
You need two developer licenses, which cover 4 running instances of vvvv. You therefore need 6 additional device licenses for the time of development.

My commercial installation is running with a Device License. Does the maintainer of the installation need a Developer License?
Yes, to keep things unambiguous, every developer needs to be covered by a development license when working on or maintaining a commercial vvvv project.

Can a single Developer License be shared by multiple developers?
Yes, but only as long as they are not working at the same time. Even though a single developer license covers two Device licenses it only covers one developer at a time!

I am a freelancer with less than 50k € gross annual revenue. Do I still have to buy a Professional license?
The key to your decision here is whether you consider yourself a professional freelancer. If you are working mostly for professional companies who clearly have to buy professional licenses, then you also buy a professional license or make sure the company covers you. You don't want to be just a cheaper option for those companies by buying an indy license and then working professionally for them.

Aren't software subscriptions a bad thing?
Not if done right, meaning that you can keep the last version once you stop paying if paid for some time (see above). And remember: they are optional.

joreg, Thursday, Dec 19th 2019

## VL: Getting you started

Alles neu!

With vvvv beta we clearly missed quite some opportunities by not providing a clear getting started path for newcomers. Only 15(!) years after launch we added a Getting Started page. Around the same time we added some built-in tutorials you'd see on startup plus some links to documentation, forum and chat. But those would be gone forever once you decided to hide the welcome-patch on startup.

So this time around, we wanna try something different...

The HelpBrowser: In your face as you open vvvv gamma for the first time.

The screenshot shows the current status of the helpbrowser as it comes with the latest previews of vvvv gamma 2019.2. It will open by default for every new user and offer a series of tutorials and example patches and encourage to explore the documentation. Obviously we now need to provide many more tutorials, examples and add more documentation, but this provides a structure to fill.

For now, the most useful pages of the documentation are HowTo and Shortcuts which are both searchable. And note that the content of the HowTo tab is dynamically sourced from all packages you have installed! Most other links in the browser go to external sources (youtube, graybook) but we're planning to someday include more content in the browser directly.

### Connect

The second tab is still rather dry for now but at least is supposed to give new users an overview of the most important entrypoints that are available to our univvvverse. Later we'll want to make this tab a bit more lively by e.g. showing some of the latest live content of those entrypoints. Think latest forum topics, news, screenshots of the day...

Connect and never miss a thing
joreg, Monday, Dec 16th 2019

## vvvv_50beta39

Patcher People!

Once again later than we hoped for, but here it is: vvvv beta 39 in all its glory! Many thanks go to everyone who reported issues with the release-candidates! Here are the highlights:

What's new in vvvv beta 39

### General

• Finally we ship an installer! Just a few clicks and you should have vvvv beta running. Note how this also optionally installs the addonpack
• NOTE: By default it installs to C:\vvvv, because it won't work in C:\Program Files...
• The default patch-window size is increased
• By default new patches now save to %User%\Documents\vvvv\beta\Sketches. Like this you can quickly find your recently created patches via a new main menu entry: Recent Patches
• Show Installed Packs: opens explorer pointing to the \packs directory

### Features

• Control IOBoxes from any webbrowser (desktop of mobile) using RCP. See the helppatch of Rabbit (RCP) for details.
• Easy to use WebSocket (Network Client) node
• New fancy shader nodes: PBR (DX11.Effects), PBRInstanced (DX11.Effects), PBRTextured (DX11.Effects), PBRTexturedInstanced (DX11.Effects)

### New in VL

If you're also using VL already, good for you, because here you'll find even more goodies you will benefit from:

Besides those, it is important to understand that with VL you also have access to numerous more libraries that have been released recently. A lot of new packs these days come as nugets. For an overview, see VL packs on nuget.org and you can use them all in vvvv beta, via VL...

### Learn VL

This is a good moment to get started with VL. Note that everything you learn and do with VL can later be applied to the upcoming vvvv gamma since VL is what both vvvv beta and gamma share. If you haven't already, check out these Tutorials and HowTos!

Have a good patch,
Yours, vvvv

PS: People who liked this release also liked The vvvv Show-Off-Reel

We regret to inform you that we no longer offer an installer for this release! Please simply unzip this into a good place on your disk. Then run config.exe to install additional requirements, before running vvvv.exe
joreg, Saturday, Dec 7th 2019

## vvvvhat happened in November 2019

Previously on vvvv: vvvvhat happened in October 2019

Finally,

as promised for some years now, we have shipped Executable Export with vvvv gamma 2019.2. Try it, it is just a click and you get a standalone program out of your patch, which you can run on any Windows 10 PC.

Wanna know how we do it? Read all about it in the article with the poetic title: New Roslyn based backend. And while we're techical, if you're so inclined you may also be interested in our talk at DotNextConf in which we presented vvvv to an audience of .NET developers who had never heard of us before.

To give them an easy way to explore vvvv we also created this preliminary new website with a focus on vvvv gamma: visualprogramming.net

But just before that we've also released the latest and greatest of the beta series: vvvv beta 39 which now comes with goodies like a WebSocket client node and PBR (physically based rendering) shaders and of course an up-to-date version of VL.

Aaaand if you're interested in our progress with Xenko (3d rendering for vvvv gamma), make sure to watch the live-stream of our last berlin meetup where tonfilm and everyoneishappy demonstrate the status of VL.Xenko ShaderFX.

### Upcoming dates

We're closing 2019 with the following events:

Two new things:

### Gallery

The vvvv Show-Off-Reel: A staff pick of projects realized by you

In addition there've been a few new projects reported:

joreg, Thursday, Dec 5th 2019

## VL: Exporting an Application

With the release of vvvv gamma 2019.2 preview it's now finally possible to create standalone applications out of any vvvv patch.

The steps to create an application are as simple as this:

2. Open the patch you wanna have as an executable
3. Open the application exporter by pressing F9
4. Press export and voila you have an executable which runs on any Windows 10 machine

To learn how to deal with referenced assets, read Exporting Applications in the gray book.

So please try it out with your projects and report any findings in the forums or the chat.

Elias, Wednesday, Dec 4th 2019

## VL: New Roslyn based backend

With the release of vvvv gamma 2019.2 we introduced a new backend compiling patches in real time using Roslyn. This blog post is primarily intended for a technical audience, if you're solely interested what new features it brings to the table have a look at the before mentioned blog post.

### Background

In the past VL (the language behind vvvv gamma) compiled in-memory directly to CIL using CCI. With the recent changes in the .NET ecosystem and CCI being superseded by Roslyn it became more and more apparent that at some point we'd also have to make the switch to keep up with the latest developments happening at Microsoft.

What finally pushed us into making the switch was two-folded:

1. An executable written by CCI wouldn't work at all the moment it referenced a library based on .NET standard. This was a major set back as nearly all future libraries would be targeting .NET standard and days of trying to find a workaround brought us nowhere. Making modifications to the already abandoned project CCI seemed like a very bad idea.
2. For a long time, we didn't know how to directly translate VL's adaptive nodes feature to CIL (or C# for that matter). For those who're not familiar with adaptive nodes, it allows one to build functions solely on their intent. For example, a LERP function can be expressed with a PLUS a MINUS a ONE and a SCALE node without having to specify what data will be provided in the end. The exact implementations will be looked up by the compiler when applying the function let's say on a float or a vector. This lookup is done from an entry point (like an executable) and while traversing from such an entry point all adaptive nodes will be replaced with their respective implementation. The emitted CIL code will then end up with two LERP functions, one for float and one for vector. This approach was working fine but it had a major drawback as it prevented us from pre-compiling our libraries and also it prevented any user to build a proper .NET library with VL.

Until this year in march @sebl came to the rescue by randomly dropping us a link in the chat pointing to a neat little "trick" which suddenly made it possible to translate our adaptive nodes feature directly.

After initial tests in March and April and having the patched tooltip feature still pending for the final release, we decided to let myself jump into the rabbit hole which I've finally crawled out of after more than half a year ;)

### The neat little "trick"

Let's go back to the example of the LERP node and let's further try to write it down in C#:

T LERP<T>(T a, T b, float s) => a * (1 - s) + b * s;

Looks neat but sadly won't work, C# will tell us that the operators +, - and * and the constant 1 are not available on T.
The trick to make it work is to outsource those operators to a so-called "witness" which in turn will provide the implementation when the LERP gets instantiated with say a vector. So let's see how the actual needed C# code is gonna look like:

T LERP<TWitness, T>(T a, T b, float s) where TWitness : struct, IPlus<T>, IScale<T>
{
var w = default(TWitness);
return w.Add(w.Scale(a, 1 - s), w.Scale(b, s));
}

with

interface IPlus<T> { T Add(T a, T b); }
interface IScale<T> { T Scale(T a, float s); }

and when applying it with say float we need to define a witness implementing the needed interfaces

struct MyWitness : IPlus<float>, IScale<float>
{
public float Add(float a, float b) => a + b;
public float Scale(float a, float s) => a * s;
}

which finally allows us to call

LERP<MyWitness, float>(5f, 10f, 0.5f)

Fancy, no? The beauty is that when the JIT compiler hits such a code path it will be smart enough to inline all calls so in the end for the CPU the code to execute is the same as the initial naive attempt. But don't worry, this is all happening behind the scenes. In the patching world, it is as simple as it was before to patch generic numeric algorithms.

### The implications

So now that we're able to translate patches directly to C# what are the implications apart from being able to export an application?

#### Easier to maintain

Well for us as developers it will be much easier to bring in new language features, because the code we generate will be be checked by the C# compiler and more important, we can fully debug the generated code with Visual Studio. That by the way is not only restricted to us, anyone can now attach a debugger to vvvv (or the exported app) and debug the patches.

The generated C# code will make full use of .NET generics. So when building a generic patch the generated class will also be generic in the pure .NET world. As an example let's consider the Changed node, while in the CCI based backend a Changed class was emitted for each instantiation (Changed_Float, Changed_Vector, etc.), the new Roslyn based backend will only emit one Changed<T> class and it is left to the JIT compiler of .NET to create the different versions of the needed target code. This should lead to much less code the CPU needs to execute as the JIT compiler is much smarter on when to generate new code and when not.

But what's even more important is the fact that it opens up the world of compiling VL patches as pure .NET libraries. So we can finally pre-compile our libraries (like VL.CoreLib, VL.Skia, etc.) which in turn reduces the general overhead and leads to much quicker loading times and less memory usage. As an example loading the Elementa "All At Once" help patch takes ~15 seconds the first time (compared to ~33 seconds in the old backend) and thanks to caching to disk only ~8 seconds when opening at a later time.

#### Instantiate patches at runtime

Apart from better loading times, it also gives the patcher the ability to instantiate any VL patch during runtime. In the previous backend, one had to use a hack and put all possible instantiations into a non-executing if-region. This is not necessary anymore as all the patches get compiled. However, I should mention here that this is only true for non-generic patches. Generic patches usually require a witness which is not so straight forward to provide.

### The drawbacks

Sadly the new backend also required some major internal changes in the frontend so it wasn't possible to guarantee existing patches would work the same way as they did before. Here follows a list of potential breaking changes:

• The type unification algorithm had some flaws and therefore needed modifications. In general, it is "smarter" than before, so when starting a patch from scratch fewer annotations should be necessary. But for existing patches, it sometimes finds a different solution than the previous algorithm leading to red links on the application side of a patch. In those cases, one needs to set a type annotation in the patch definition.
• When pause on error is enabled the old backend was able to show computed values up to the point where a node was crashing, this feature is sadly not available anymore due to local variable scoping rules of C#. Whether we'll bring this feature back or not is not yet decided.
• Naming rules are more strict, so it's not allowed anymore to have for example an "Update" and and "Update (Internal)" operation as both are considered to have the same name. In general instance-operation overloading is not possible.
• Static operation overloading - having operations with the same name but different pins - is still allowed as long as the types of the pins differ. So different pin names alone are not ok.
• When defining a generic interface all type parameters of its operations get assigned to the interface itself. This is necessary due to how internals of the emitted C# code work.
• The cyclic graph detection wasn't correct. This can also lead to red links now but should be considered a good breaking change as it makes the patcher aware of undefined execution order.
• Patches, where the execution order wasn't defined, might behave differently now.
Elias, Wednesday, Dec 4th 2019

## vvvv at DotNextConf Moscow - Video

привет,

as mentioned previously, elias and me were at DotNextConf in early November where we talked vvvv to a whole different audience than you are. We titled our presentation "vvvv - Visualprogramming for .NET" hoping to get the benefits of what you all take for granted (that is "live, visual programming") across to people who are still stuck with an EDIT/COMPILE/RUN mode of development. And to hear if they could see some application of it in their fields.

The general feedback can be summed up as "Huh, this looks interesting, but I don't know what to do with it". Clearly our demonstrated use-cases didn't resonate with them. A few people came up to us after the talk and were interested in details about the state hot-reload and one guy told us he is working in aero-space engineering and he believes they could very well use it: When working together with physicists they often need to exchange code with them but they always deliver very bad code, he claimed. He saw vvvv as a perfect fit of a tool they could prepare some high-level nodes in, so that the physicists have a tool to experiment with, where they cannot make too many mistakes... Interesting take and in a sense exactly what we were hoping for. So let's see where this goes...

Now grab a drink and some snacks, this goes for 50 minutes:Watch on Youtube

joreg, Monday, Dec 2nd 2019

## visualprogramming.net

Meanwhile...

...since we're terribly behind schedule regarding the release of a new website for vvvv.org (and we know that it will still take a while), we've created a preliminary site at:

This is mostly so that we can provide people who are new to the world of vvvv with a simpler entry point to our universe. You'll see that the site focuses mostly on vvvv gamma, which makes most sense for new people to explore. Obviously the existing vvvv.org remains our main portal to share news and updates with everyone. We consider visualprogramming.net a temporary landing page for vvvv gamma.

### Nevvvvsletter

If you're old enough to remember, there is this thing called electronic mail (short: e-mail). In a classic retro-move we've also recently started an e-mail newsletter which you can sign up to from that page. Scroll to the bottom and find it in the left corner. Signing up will give you peace of mind to not miss any happenings around vvvv. Typically one mail per month.

joreg, Thursday, Nov 28th 2019

## vvvv gamma 2019.1 - preview

Update: The latest preview version is here: http://visualprogramming.net

Just in time!

Only a whopping 6 years and one and an half months after its first mention during Keynode 13 and to the day exactly 5 years after the release of the The Humble Quad Bundle, you can finally hold it in your own hands. Not exactly as the full release we had planned but as a preview:

To our own surpise we couldn't finish all the things we had planned to release today. Most notably the "windows executable export" didn't make it. We know this is a bummer, but we want to get this right and it just needs some more time.

Apart from that we figured there is no more need at this point, to keep it to ourselves. It is definitely good enough for a preview, definitely good enough to gather some feedback to incorporate into the final 1.0 release for which we take some more time to finish our plans. So let's have a look at what we got:

### What's new compared to the vvvv beta series

#### General

• Trivial installation via an installer
• The overall performance is much improved
• All your work is automatically backuped
• A help browser: press F1! (and wait for it...)
• By default projects are now handled in one file
• There are central settings per user, overridable per project
• You can pause and step your patches frame by frame
• Extensibility: Write plain C# to extend vvvv with custom nodes
• Simply use almost any .NET library available e.g. on nuget.org
• Proper scope and dependency handling
• Structured documentation for your patches. Add summary, remarks, help to elements
• close to .NET use msdn, stackoverflow help

#### Patching

• Patches are now zoomable
• You can use frames to structure your patches visually
• UI runs in its own thread
• Tooltips show help and errors
• IOBoxes allow for much faster configuration
• You can doubleclick a link to insert a node or finish a link with a doubleclick to create a node
• The color theme is now customizable and defaults to dark

#### Language

Besides staying true to its nature of being a an easy to use and quick prototyping environment, vvvv is also a proper programming language with modern features, combining concepts of dataflow and object oriented programming:

• Define your own datatypes (Classes and Records)
• No more binsizes needed!1!!
• Loops to iterate within one frame
• Generics
• Delegates
• Reactive programming
• Easy caching of expensive operations

#### Node Library

While for now the number of libraries we ship is limited, the fact that you can essentially use any .NET libary directly mitigates this problem at least a bit. Besides there is already quite some user contributions available in the wip forum and here is what we ship:

• A thorough core library for all your basic needs
• State of the art 2d drawing with VL.Skia
• Effortless computervision via VL.OpenCV
• Support for Midi, OSC, ArtNet, Serial,...

### Forum

To accommodate for the fact that from now on we essentially have 2 products, we added two main categories to the forum:

Living together in harmony: beta and gamma

The existing question, feature, bug, general sections were moved into vvvv beta, and the vvvv gamma section got its own question, feature, bug and general sub-sections. Note that by default the search is constrained to the category you're currently viewing. When you're using vl in beta, still feel free to ask questions in the beta forum. We'll handle that.

### Tutorials

Head over to this forum section to watch some video tutorials:https://discourse.vvvv.org/c/tutorials

### Pricing

We've previously announced the upcoming pricing model for vvvv gamma, which we're currently refining and we'll update you on changes to it soon.

Until further notice, the previews of vvvv gamma are free of charge but due to its preview-nature we don't recommend using it in commercial scenarios yet.

Here you go: vvvv gamma 2019.1 preview 975

#### Changelog:

975 26 11 19

• works with VL.Audio
• Fixed race condition between state disposal and OnNext calls in reactive ForEach regions. Was responsible for an access violation in OpenCV tooltips.

959 19 11 19

• equals version included with beta39
• can now create a node while linking by simply starting to type (double-click not required anymore)
• fixed SVGWriter
• fixes on bumpy Damper
• removed a few unnecessary Damper versions
• fixed time step calculation of Damper (Fast)
• Dampers can now be used in loops
• fixed image tooltip
• fix on tooltip layout
• some color operation improvements

930 02 11 19

• fixed annoyance with nodes being selected instead of dragged
• fixed problem with red nodes not updating after installing VL. nugets
• fixed time step calculation of Damper (Fast)

923: 31 10 19

• fixed Tokenizer (Frame)
• fixed register services method called too early
• fixed regression that timings wouldn't show up on regions
• fixed timings not working on Cache region
• fixed serializer not dealing with fields of type object correctly
• fixed serializer crashing with a stack overflow when data like vectors or colors stored in an object field were re-interpreted as arrays
• fixed IL emitter not picking up type dependencies on fields if the type was a generic type instance (https://discourse.vvvv.org/t/weird-reference-documents-behavior/17949)
• added Random implementation for RGBA
• fixed hue calculation and minor improvements in color space conversions
• added String <-> Array<Char> conversions
• shutdown dialog now lists unsaved documents
• installer adds windows defender exceptions

827: 09 10 19

• setup.exe is now signed and shouldn't trigger "windows protected your PC popup anymore"
• fixed GrayScale Skia ColorFilter
• Packages are now in AppData\Local\vvvv\nugets

703: 16 09 19

• tooltip performance improved
• ImageReader now returns correct format of images
• LinearSpread now has Phase input

667: 03 09 19

• added Resample nodes (Point, Linear, Repeat, Hermite, BSpline)
• Switch node can now have more than 2 inputs
• Filter node now has TweenerMode exposed
• Nodebrowser now also looks for tags in nugets
• FromImage (Skia) now has options for the case of R16->R8
• FromImage (Skia) now handles 24->32bit conversions
• ADSRSettings has optional inputs for Attack, Decay and Release curve settings
• ADSR has an input to set a new clock at any moment
• updated VL.OpenCV to 0.2.129-alpha

618: 22 08 19

• SVG/PDFWriter now deal with background correctly
• improved some warnings
• increased max tooltip height

615: 21 08 19

• more tweaks for tooltips
• Ctrl+F now also considers nodes category
• updated to VL.OpenCV 0.2.122

573: 08 08 19

• pin tooltips now show their infos again when available
• copying messages from tooltips is now via ctrl+shift+c
• added simpler Mouse and Keyboard (Skia.IO) nodes
• skia primitives (rect, circle,...) now come in two versions, instead of as overloads
• updated to VL.OpenCV 0.2.121

552: 01 08 19

• reworked tooltips
• new settings: MouseMiddleButtonOpens to activate middleclick to open patches of nodes
• added skia ColorFilter nodes: Transform, Brightness, Contrast, Grayscale, LUT

411: 12 06 19

• Value to bytes nodes now have defaults
• Fixed somehow newly introduced crash in patches making use of serialization (like Tilda) or reflection API (like the runtime-model-editor demos)
• Fixed accumulators on loops being auto-disposed causing object disposed exceptions in more complex patches (ike Tilda)
• Fixed Sampler (Reactive) getting stuck in an endless loop if upstream observable crashed (also seen in Tilda)

406: 10 06 19

• Fixed crash when creating IOBoxes in regions while linking
• Fixed pin highlights when linking via region border point

398: 05 06 19

• fixed couple of regressions in compiler introduced between 369 and 380
• fixed splash screen flicker
• fixed a null exception on startup

380: 01 06 19

• fix for Tokenizer (Frame/Postfix) with empty separators

369: 27 05 19

• Skia PerfMeter (F2) now measures full paint time
• fixed "Countdown" output of Trigger node
• fixes in compiler
• performance improvements in compiler
• added pixel format R32G32F to imaging
• fixed a freeze in Tokenizer
• added Tab, CR, LF, CRLF nodes
• theme and interaction improvements
• added Skia checkerboard style that can be used as a paint
• fixed removing .vl doc references

344: 14 05 19

• PerfMeter in Skia renderer (F2) now shows UpdateTime and RenderTime
• added checkerboard style that can be used as a paint for any layer
• improved scrolling behaviour for sliders
• CoreLib improvements
• sped up RepellingCircles demo patch
• several compiler fixes
• compiler performance improvements

318: 09 05 19

• frames now let you choose colors from a palette instead of the color chooser
• frames now move their content along as you drag on their titlebar
• frames now only move elements that are fully contained
• frame is now included in the "surround with" context menu
• press SPACE to force-include frames in selections
• in inspektor changing precision for floateditor now also sets precision for min, max and stepsize.
• can now grab border control points on regions properly without interfering with region resize
• default culture setting is now invariant

303: 08 05 19

• fixed missing dependency for VL.OpenCV

301: 07 05 19

• windows timer is set to 1ms on start
• mainloop uses less performance and doesn't block windows messages
• Skia Renderer has PerfMeter build in, toggle with F2 when selected
• fixed dpi problem with text in SymbolFinder
• ctrl+T/ctrl+shift+T to bake/clear type annotations on datahubs
• fixed "invalid cast in typeunification" error

287: 06 05 19

• shortcuts now work with all tabs closed
• Renamed action "Assign->Pop" to "Assign->Clear assignment" to make it easier to understand what the action does
• Firmata: Tokenizer was stuck in an endless loop
• fixed null exception in ResizeSelectedMouseHandler
• Typewriter: Shift+PageUp/PageDown - select to the beginning/end of the document, cursor stays at the same column.
• OverlayEditor now has minimumsize (again)
• ImageEncoder doesn't have the bmp option anymore as skiasharp can't encode into bmp

273: 02 05 19

• fixed another problem with editors/tooltips and high dpi settings
• fixed "ReguarExpression" typo
• AllAtOnceEditor for vectors now sticks to value of first component
• fixed problem with enum-editors on pins getting stuck
• no more duplicate "Horizontal" entry in IOBox inspektor
• inspektor now also shows elementtype properties for Spread<Vector>
• serialization for custom types doesn't throw errors for inspektor/defaults
• upstream dis/connected iobox no longer looses its settings
• added Clean node: removes slices with empty strings

252: 27 04 19

• fixed dpi handling for fonts in editors
• can now set ApartmentState of BusyWaitTimer to make UI threads
• mainloop now has high precision
• editing comment/string now keeps size of editor
• comments now have correct initial size
• StringEditor on pin now has wider fixed width
• fixed problem with paddings differing between single and multiline textbox
• fixed setting bool pin value via dragging
• fixed interaction in signature view of patch explorer
• fixed deadlock when implementing interfaces

230: 24 04 19

• fix for regions inside operation definitions disappearing
• fix for patches with more than 10 operations showing later operations as black
• quad icon now works for all themes
• previous/next icons now colored correctly in all themes
• string editors/comments now have a configurable "Max Visible Characters" to prevent low performance with too long lines

222: 18 04 19

• VL.Skia Camera 2d is not experimental anymore
• fixed pin interaction in signature view
• fixed an edge case when then node browser wouldn't show up
• fixed IOBox rendering freezes
• added many tags to VL.CoreLib to find nodes faster
• VL.Skia is referenced by default for new documents
• toggle toggles on every mouse click
• IOBox values are not applied while typing anymore

200: 15 04 19

• inputs/outputs of definitions/regions and groups can be moved (again)
• fixed problem with documents not opening anymore
• fixed file path serialization of dependencies when the path couldn't be made relative to the document itself
• fixed coloring of pads and region bordercontrol points

191: 13 04 19

• a comment that only holds a link can be right-clicked to open in the browser
• recent sketches now show in reverse order: most recent is topmost
• fix: improved recizing of nodes, regions and ioboxes
• fix: input/output indicators on pins and pads are now in sync with tooltip (again)
• fix: selected spread ioboxes can now be deleted with backspace when hovered with the mouse

180: 11 04 19

• fixed background for definition patches
• Skia ButtonBehaviour now lets you specify which buttons to listen to

177: 10 04 19

• new setting DocumentAskOnFirstSave sets whether to ask for save location on first document save
• added "Show Intro Patch" to quad menu, to recall intro patch even if it's not shown on startup
• reactivated play/pause mode visualization
• various coloring/theme fixes
• active tab is underlined (again)
• definition patches now have a hatched background
• removed RestructureDocument from patch context menu
• default count of a collection pin group can now be configured
• Skia Group defaults to 2 inputs (again)

150:

• VL.OpenCV now comes with demo patches in Help Browser!
• fixes for Skia ImageReader and ImageWriter
• added '-m' or '--allowmultiple' command line arg to allow running multiple instances side-by-side
• shortcuts are deactivated for patch when Finder box is open
• several fixes for IOBox drawing and interaction

139:

• fixes various assembly not found exceptions when using nodes of the Midi category, the Script region or binary serialization: a, b, c

137:

• fixes problems with pin-editors: a, b, c
• enables spread-editors directly on pins

134:

• Info.vl in now called Intro.vl
• double-clicking .vl files will open with the already running instance
• Skia renderer goes fullscreen via F11 or Alt+Enter
• many fixes and tweaks

Apart from the promised and still missing parts, we're aware of quite some little glitches still and will update the download link above periodically. So please check back often and report your findings!

Yours truely,
devvvvs.

joreg, Tuesday, Nov 26th 2019

# Shoutbox

~3h ago

joreg: reminder: 12th #vvvv online meetup tonight, 8pm CET: 12.-worldwide-vvvv-meetup

~7d ago

~19d ago

domj: https://youtu.be/omqlZepW69g sonic pi live @ tami

~25d ago

benju: Job: Lehrkraft mit Kentnissen in Python, Machine Learning und Grundlagen der Informationstechnologie gesucht: https://bit.ly/2TtgOoJ

~25d ago

david: reminder: starting at 2pm CET today: online-workshop-shiny-generative-graphics-with-vvvv

~27d ago

readme: Let's appreciate the most important feature being the flat UI redesign. Even though blueprints still remain ugly ...

~29d ago