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

Blog

new post

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.

  reset tags

addon-release core-release date devvvv gallery news screenshot stuff
delicious flickr vimeo
Order by post date popularity

previously on VL: VL Progress Report /2

here we go,

FEATURE FREEZE!

just like that. with the previously mentioned unification of Record, Class and Process into one more easy to understand Patch we have now added the last big feature to alpha-builds that we were working towards. so finally the question "how to create a new patch in vl" can (again) be answered by: CTRL+P to create a patch and open it or CTRL+SHIFT+P to create a node of a new patch at the cursor. easy.

also the explorer (the listings in the topleft of the patch) are now hidden by default because our theory is that it will ony be useful for more advanced usecases and shall not distract the casual user. you can open the explorer by clicking the little quad in the corner and from there change from Patch to Record or Class to make the patch available as a datatype. so much just as a quick info. more explanations to come in tutorials and documentation updates.

Easy switching between Patch, Record and Class

here is a rough log of other recent changes that you can now test in latest alphas:

  • to create a patch for grouping some utility operations together now create a Group
  • Cons: the Cons node now finally has a dynamic pin count. use CTRL +/- on the selected node to increase/decrease the number of inputs
  • Concat: similar to Cons, but for concatenating multiple spreads to one spread
Ctrl + and Ctrl -
  • adding/removing pins now also works on multiple selected nodes
  • Evenly distribute a selection of nodes using two different approaches
Ctrl+Shift+L
Ctrl+Alt+L
  • IOBoxes created via middleclick and pins created via doubleclick now can instantly have their label edited
  • there is now a simple IOBox for colors
Color IOBox via middleclick with instant label editing
  • the inspektor of an input or IOBox now updates when changing a type annotation
  • changes in inspektor are now part of undo history
  • rightclick on link: if already selected then delete else open context menu
  • usability of the NodeBrowser is improved
  • preliminary support for tags in nodebrowser: they are not visible but they already influence the search results. e.g. type / to find both / and DIV (the integer division)
  • links now only show tooltips if there is an error or warning. force tooltip by pressing CTRL when hovering link
  • clicking a .vl file anywhere in the menu now opens its document patch
  • finish a link on an input pin with middleclick to start another link from the same output
  • improved pin picking sensitivity
  • changing pin-order in signature now applies to pins on respective nodes
  • splicer and accumulator bars are now reversed in loops
  • accumulators in loops are now rendered as diamonds
  • patches with the same name and category in a document will now be recognized as duplicates and report an error. same for pins in operations.
  • middleclick alternative (ALT + LeftClick) now works on patch labels to open the patch

Documentation

  • the following pages where updated in the gray book
  • regarding the gray book please also notice three new features gitbook implemented:
    • in the top-left corner of the book there is now a search-field that seems to work pretty good
    • there is a discussion board for the book
    • you can comment on any paragraph in the book using the little + button that appears on the right when hovering a line. lets see how that goes..

Next Steps

Bughunt and preparing for the beta35 release in parallel to continued library development for VL. Means, now is a good time to report bugs!

If you want to get started with VL right now, here is what you do:

Diving into VL

If you want to let us know that you like anything you just read...we're always up for a comment or even a flattr:
/downloads|vvvv?

joreg, Thursday, Nov 17th 2016 Digg | Tweet | Delicious 10 comments  

previously on VL: VL Progress Report /1

and indeed,

just as planned, we're now making quicker progress as we have the previously mentioned big stones out of the way. Always still some to come, but things start to feel more and more solid and intuitive. We're also happy about the now frequent VL related bug-reports and questions in the forum. Keep them coming, very helpful!

Here is a rough log of recent changes that you can now test in latest alphas. Ordered by nerdness, simple ones first:

  • IOBoxes can now be reset to their default using ALT+Rightclick
  • more sensitive picking area for pins
  • problems with the mouse sometimes hitting an element that is visually below the one you targeted are now fixed
  • when creating any new element (property, operation, patch,..) the elements name is now in editmode, allowing you to choose a proper name without an extra
  • moving pins in the signature no longer throws random exceptions (don't forget to uncheck the default-on autosort checkbox before you do so)
  • the coloring of member operations was broken in recent alphas and is back working
  • IOBoxes no longer show "null" while being moved
  • annotating pins/pads with a type that had no registered editor used to crash
  • improved mergability of patches (when using versioncontrol like git) by introducing guids as identifiers for elements in the patch
  • adaptive nodes now show the type they use in the context in their tooltip and if they have a patch you can now jump to that specific implementation directly via contextmenu->open
  • you can now return a Spread<Spread<>> (and even more) to vvvv and get according multiple BinSize bins (omg!)
  • delegates now survive a hot-swap

Next Steps

With strong support by owner of the golden quad woei we're working on library basics, like File and Network IO. The goal is to have them as simple to use for standard use-cases as in vvvv, yet more flexible for more complex scenarios. In the process we're still learning about library design and taking notes for a guide to help future devlopers to make good nodes quickly.

Progress is being made on the EditingFramework which will next see an update with a proper gizmo handling..

Work has begun on the previously mentioned unification of Record, Class and Process into one more easy to understand Patch and it is looking good already.. Otherwise bugs and fixes as per usual..

If you want to get started right now, here is what you do:

Diving into VL

If you want to let us know that you like anything you just read...we're always up for a comment or even a flattr:
/downloads|vvvv?

joreg, Thursday, Nov 3rd 2016 Digg | Tweet | Delicious 0 comments  

previously on VL: VL Midsummer Night's Dream

helo evvvveryone,

here is to inform you of recent updates in VL land. We're still in feature-mode as we have a few things that we need in the first release even though they are quite advanced and a typical VL user will hardly come across them. Still, we figure, a few of you will be interested in:

The Process Explorer

The avid reader of this blog and tester already knows that a stateful patch (aka data type) in VL can be used in two different ways:

  • as a single node: we call that Process Node for now
  • as a series of nodes represending the types individual member operations

The process explorer is supporting the first of those cases in that it allows you to define the order in which operations will be called for a Process node. The simplest example of where this is interesting is when you patch a node like the FlipFlop which has a Set and a Reset operation. For the case where in one frame both of them are called it is important to specify which of them takes precedence. This is what you can now do in the process explorer by simply specifying the order of the individual operations. In addition it allows you to specify for some operations to not take part in the process at all by unchecking their indicator and to show (or not) a State output pin on the node...


Prioritizing the operations of a FlipFlop

Again: this is a rather advanced topic which the casual vl user will hardly ever come across. Still having this feature improves the pro-users lives and specifically the vl core library of nodes makes of course heavy use of that feature.

More changes since last report

  • a series of fixes are in place for connection handling
  • pin order of operations is now x-based by default but can be changed manually via the signature
  • context menu is now only on rightclick (was on marquee selection)
  • the IOBox Inspektor is drawing a bit nicer
  • middleclick "jump to" now focuses the targeted operation after the patch was opened
  • you can now use the mouse thumbs-buttons navigate back and forth
  • there's a new girlpower: girlpower\Curves\SplineTree

All this and more availble now in latest alphas.

Next Steps

Same as in the previous blog-post apply + we're hoping to reach a feature-freeze soon. We basically have one bigger rework to go that is supposed to make everyones lifes easier. In short: right now in VL when you create a new patch you need to decide beforehand between making an Operation, a Class or a Record. Those are all new concepts that are not so simple to explain to someone without any programming background. That is why we're now working on a workflow where this is not the first thing someone has to understand...nuff words, you'll see when it is done..

If you want to get started right now, here is what you do:

Diving into VL

If you want to let us know that you like anything you just read...we're always up for a comment or even a flattr:
/downloads|vvvv?

joreg, Tuesday, Oct 18th 2016 Digg | Tweet | Delicious 3 comments  

previously on VL: VL Spring Update

Here we are now,

right when you wouldn't believe it could happen anymore: the cumulative changes on VL, which we've been talking about for months in previous updates (about an 80% rewrite of what we demoed at node15 - shall we even say something like this out loud?), have just landed in your belovvvved daily alpha builds.
In other words: No big deal.

What does that mean for you?

Get it, use it and please help us by reporting problems in our alpha forum. But always remember this is still alpha-grade code, we're still aware of quite some buggers. If you try it and still think it is too annoying to work with, fair enough, it is definitely not for everyone yet. But we are confident enough with the current state that we thought some of you will be able to handle it.

One important thing: As mentioned in the previous update, the file-format of .vl documents has changed, meaning: It can still open all old files but once you save them, your files are in the new format and will no longer load in older versions. Just so you know..

More new things

Apart from the changes mentioned previously here are some more things you should know:

  • Reach the Document Patch via ALT+P
  • Create new patches in the Document Patch via NodeBrowser: type Patch (for utility operations), Record (immutable datatype) or Class (mutable datatype)
  • Add Inputs/Outputs for operations via NodeBrowser typing Input or Output or by doubleclicking while making a connection
  • What was Reader/Writer is now Pad via NodeBrowser or: add a property via the explorer and give it a name, then find it as a pad in the NodeBrowser under its own name
  • Also create IOBox, Loop, ForEach, Operation, Delegate via NodeBrowser
  • Make comments in a patch by typing anything in the NodeBrowser that is not a node (just like in vvvv)
  • Add/Remove pins to/from nodes like + by pressing CTRL+/-
  • Nudge selected nodes using the cursor-keys and nudge them more by holding down CTRL while you do

Regarding Pins, we already mentioned the separation into "implementation" and "signature" for utility-operations in the last update. Here is how this is looking now:

Ordering pins in the signature of a utility operation

The signature (which defines the order of input- and output pins) is now hidden by default. You can bring it up with a click on the little triangle to change the order of pins as they will show up on the respective node.

What we forgot to mention last time, is that we got completely rid of the pin-bars for member-operations. In order to manipulate the signature of a member-operation just head over to the explorer and interact with the signature there.

Ordering an operations pins in the explorer

Next Steps

By having those major changes back in the alpha-builds we're finally in a position again to have quicker release-cycles for bug-fixes and features which we'll happily provide on our road to beta35, which will be the first vvvversion that includes VL as a first-class patching language.

We'll need to put out a preliminary video-tutorial and update all documentation to show you how to work with those latest changes.

And of course we don't forget about that library-thing where at some point we'll have to tell you how you can import/create your own nodes for VL. Pending... Just in case you missed it, the Arduino Second Service was our latest big addition to the VL library.

If you want to get started right now, here is what you do:

Diving into VL

If you want to let us know that you like anything you just read...we're always up for a comment or even a flattr:
/downloads|vvvv?

joreg, Tuesday, Sep 6th 2016 Digg | Tweet | Delicious 2 comments  

Obsolete!

From now on: Firmata Second Service.

Good news everyone, from now on you're getting a brand new set of nodes able to talk to your loaded-with-firmata Arduino Boards:

  • ArduinoUno (Devices)
  • ArduinoLeonardo (Devices)
  • ArduinoMega (Devices)
  • ArduinoLilyPad (Devices)
  • ArduinoDue (Devices)
  • ArduinoYun (Devices)

Together with jens.a.e (author of the original Arduino (Devices StandardFirmata 2.x) ) we've looked for a more convenient, easier and faster way to patch Arduino related ahhmm... patches.

With this implementation:
  • Just plug a DigitalWrite (Firmata), AnalogWrite (Firmata) or ServoWrite (Firmata) node to the Arduino node (or concatenate them together) to set the pins of the Board.
  • Connect DigitalRead (Firmata) and AnalogRead (Firmata) nodes to get the values from the Board's pins.
  • Use the Sysex Messages output to receive different 'Sysex Messages' sent back by the Arduino Board. Some Sysex decoders are already there (see StringDecoder (Firmata), CapabilityDecoder (Firmata)). Sending custom 'Sysex Messages' is easy as well.
  • Your board is not listed in the NodeBrowser? The Arduino nodes are easily adaptable for other controllers running Firmata. Hello teensy...
Easier than ever before:
  • no need to supply a spread for all 20 pins and then SetSlice some of them to particular values.
  • no need to define the 'PinMode' for each pin.
  • no need to define which pins should report their values back.
Thanks:

Hardware for the development was kindly provided by QUADRATURE.

p.s.
Oh, by the way, these new Arduino nodes are fully implemented in VL.

p.p.s.
And of course there are some caveats.

  • The Cons (Firmata) has only 5 input pins which are interleaved with 'BinSize' pins. But note that you can cons multiple cons nodes... (for now)
  • The VL nodes eat more processor ticks as their C# counterparts. Working on it...

The nodes are now available in Alpha Builds.

robotanton, Friday, Aug 19th 2016 Digg | Tweet | Delicious 21 comments  

previously on VL: VL Winter Update

Still? Yep, spring has passed, summer is in full bloom and we're still finishing up that branch... To learn more about what we're working on at the moment and what you can expect with the next alpha-release, please read on, below the 'what the vl' intro.


What the VL?

VL is a general purpose visual programming language that combines dataflow with features known from object-oriented programming. It comes with a compiler that builds to the .net intermediate language and as such produces executables and libraries compatible to .net/mono.

Language features include but are not limited to:

  • datatypes and operations
  • loops
  • delegates
  • generics
  • observables
  • interfaces

As a proof of concept VL is now embedded into vvvv before it will later be available in a standalone development environment. Also we're planning for VL to be embeddable in other software products allowing it to become a dynamic plugin provider for various applications...

Where its at

The main reason for the internal rework we started a few month ago (as mentioned in the previous update) was to get the underlying model that describes a VL program immutable. Immuhat? and why? I'm afraid the answer to that is gonna be a bit technical but since you asked I'd like to quote wikipedia on Immutable Object:

read more...
joreg, Friday, Aug 5th 2016 Digg | Tweet | Delicious 0 comments  

Short Version

vvvv now has native support for both sending and receiving TUIO messages!
The following nodes are available in latest alphas:

  • TUIOCursor (Network Join/Split)
  • TUIOObject (Network Join/Split)
  • TUIOBlob (Network Join/Split)
  • TUIOBundler (Network)

For receiving TUIO messages the individual split nodes can be used directly. The TUIOBundler is used for combining different types of TUIO messages in order to send them in one bundle.

Some Background

vvvv has long had support for TUIO, a protocol for receiving data from multitouch surfaces. The TUIODecoder (Network) was contributed to the addonpack by Abomb years ago.

It did what it was supposed to with only two caveats:

  • since it used an input of type String it had troubles on windows systems with non-standard string encodings
  • it was only a decoder, lacking an encoder to also be able to send TUIO messages

Enter VL: While preparing the standard library for VL it was a good exercise to create probably the worlds-first implementation of the TUIO protocol in a visual programming language. And since we can make nodes we have in VL available as nodes in vvvv it was a just a few more clicks to make the new implementation even useable for non-vl patchers. You're welcome!

There is more to the nerds pleasing: TUIO is based on the OSC protocol which meant that before being able to implement TUIO, we needed an implementation of the OSC protocol. As we've pointed out before, in VL we have the possibility to import .net libraries. So one way to support OSC in VL would have certainly been to import one of the many existing OSC libraries for .net. In fact we did that and it was good to see that it just worked. Still the real challenge of course was to also create possibly the worlds-first implementation of OSC in a visual programming language. So here we are..

Snippet of the TUIO implmentation in VL

If you're interested in the implementations have a look at the VL files in:

 \packs\VL.IO.OSC
 \packs\VL.IO.TUIO

Otherwise just go ahead, use the nodes in vvvv and please report your findings in the comments or in the alpha forum.

joreg, Wednesday, Jul 27th 2016 Digg | Tweet | Delicious 0 comments  
A classic: Pitch On Pole

Evvvveryone,

how about a random little feature? Hope you don't mind that it is about 15 years late...

Introducing: Rekorder (Windows)

Simply place the node in a patch (even save it in your _root.v4p), then press CTRL+4 to start recording on any(!) window and press it again to stop and save the recorded sequence to an animated GIF.

Available in latest alphas now!

This is not meant to replace other options for capturing output but more to easily create quick sketches. By default the recordings are saved to your desktop with an auto-generated filename. If you enable Auto Open they'll also automatically be displayed using the application you've registered to open .gif files once saving is complete. Note that saving a file may take a while, but since it happens in the background it won't block your workflow. Also beware that if you run a 32bit vvvversion you may run out of memory within a few seconds (in which case the recording will stop automatically).

Animated GIF

For now recording is limited to animated GIFs which is nice but also has quite some limitations: They can only deal with a limited number of different framerates (default for your recordings is 25fps) and can only have 256 different colors! In exchange you get nice ditherings..

Thank Code the whole thing is opensource which means anyone can add an ffmpeg-backend that could offer different compression options and write a video-file to disk continually...we do accept pullrequests..

1 minute action

Instead of starting/stopping a recording with the CTRL+4 shortcut you can also trigger a recording using the nodes Record input. If you want to create perfectly looping gifs simply set the Frames To Capture input to the number of frames you want to record. Now a single bang (or press of CTRL+4) starts the recording and the Progress output has a value going from 0..1 which you can make your loop to depend on..

Sharing your recordings

Unfortunately, due to the size of recordings, we cannot offer an automatic upload to vvvv.org for sharing your animations. What's new though is that you can now embed animated gifs in blogs, wiki-pages and the forum.

Also it seems to me thathttp://giphy.com is a nice service to manage your (now quickly growing) library of gifs. Best feature: they allow anonymous uploads! One problem I found is that even if you tag an upload with 'vvvv' it won't show up in the respective search. When asked about the reason for this giphy answered thats for some privacy reason but they want to change that in the future. So still don't forget to tag your uploads already!

And then share your account in the comments (for now). I found at least one celebrity user already:

 https://giphy.com/channel/evvvvil 

and mine are here:

 https://giphy.com/channel/joreg 

Looking forward to your creations (and animated bug-reports..)!

joreg, Tuesday, Jul 19th 2016 Digg | Tweet | Delicious 16 comments  

This is to announce proper Spout support for vvvv (finally).

What the Spout?

Spout is a realtime video sharing framework for windows. Basically what Syphon is for OSX. It allows different applications that handle video (or textures) to share them. That includes TouchDesigner, Resolume, AfterEffects,... to name only a few. For a full list see the Spout website.

How to Spout?

While you've already been able to use Spout so far, it was a bit of a hassle to set it up. Now vvvv ships with two simple nodes which should be all you ever need:

  • Spout (EX9.Texture Sender)
  • Spout (EX9.Texture Receiver)

Both modules are also available as DX11 versions.

Internally the sender module uses the new SpoutSender (System) node to register a sender name with Spout. If you're interested in a list of all available senders on your system, use SpoutSenderNames (System).

Can I has Network?

Indeed! Check the brilliant TCPSpout and share your textures via network and even to applications on OSX by using TCPSyphon on the other end. Watch this video to see TCPSpout/Syphon in action:

Available in latest alphas now. Many thanks to the creators of Spout and TCPSpout! Please test and report your findings.

joreg, Friday, May 20th 2016 Digg | Tweet | Delicious 20 comments  

Good news for those of you who often work with nodes in the RAW category. The general performance overhead has been reduced by quite a bit in the latest alpha version of vvvv. The respective commit can be found here.

This was achieved by an internal change to work with the IStream interface directly, instead of wrapping it in adapter classes, exposing it either as System.IO.Stream to .NET or TStream to Delphi. So a downstream plugin node will now have direct access to the upstream stream output, instead of going through an internal adapter class.

In case you write your own plugins and you want to keep the overhead as small as possible create your own custom Stream class, which implements the before mentioned IStream interface - for example have a look at the ComStream.*.cs files here and nodes making use of it here.

Thanks to woei and jens.a.e for reporting the performance issues and keeping on nagging me about it ;)

Elias, Tuesday, May 10th 2016 Digg | Tweet | Delicious 9 comments  

anonymous user login

Shoutbox

~4d ago

microdee: 2 seconds later: I asked before googling, but why do you need OS support for texture compression?

~4d ago

microdee: what's BC7?

~4d ago

antokhio: https://aka.ms/AA65g28 upvote pls for bc7 support in windows

~6d ago

joreg: PSA: forum is back up and running!

~6d ago

manuel: that shaderFX looks great

~6d ago

joreg: PSA: the forum is currently down for maintainance. if all goes well it will be back up shortly..