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.
woohoow, how quad is that?
the HOPE Lab came up with this thing called NODESurfing: frankfurt locals are asked to share their couch with a node-visitor in exchange for an event-ticket.
what a fine idea... so here is what you can do:
because good ideas need spreading!
previously on vvvv: vvvvhat happened in March 2017
helo everyone and welcome to this past months recap.
we're planning one more release early june that we'll want everyone to use at node. not sure yet, if it will include the promised vl-node-importing features but we'll definitely have those available at least in alpha-builds.
and two updates:
and here is some work in progress:
if you've also got some hidden vvvv-projects on github please tag them with "vvvv" so we can all get a good view on them, like so: vvvv related repositories on github
april saw three gallery entries:
Paul Prudence got a feature on midi.org.
we are looking for a Photographer (m/f) who loves to push creative boundaries and that together with a highly creative editorial & marketing team wants to contribute to inspiring & engaging stories.
You're fascinated by expressing your ideas in a huge imaginative power?
You have an eye and feel for aesthetics?
Do you have basic or advanced experienced with photography
and post production and you're a team player?
Perfect! Get involved!
Be part of our team and please send us an email with your previous work experience or portfolio to firstname.lastname@example.org.
your NODE team
Get your week pass for the full festival programm from 26 June - 02 July 2017
with artists talks, a full-day symposium, an international exhibition, performances, party nights,
the vvvv Keynode - with or without vvvv coding workshop program included!
You would rather get a day pass?
They are coming soon, so stay tuned!
Looking forward to see you this summer in Frankfurt (Main),
your NODE team
Basically a maintenance and bugfix vvvv release, wouldn't there be so much new VL stuff in it.
As mentioned previously the main topic we are working on at the moment is importing .NET DLLs into VL. Think drag'n'drop and easy wrapper patches all in visual programming style. This needs some deeper changes in the code base and was deliberately not included in this release but will find it's way into alpha builds soon for everyone to try it out. After that we'll polish the VL workflow and libraries a bit more to have a shiny version for NODE17.
And of course more bits and pieces are waiting in line, keep your eyes on the devvvv blog.
right now, we're looking for volunteers to help in this process, to run this year's festival edition and make NODE17 awesome!
Volunteers are an integral part of NODE. What about you, your friends, colleagues, digital enthusiasts and others? Want to get involved? Be part of our team, get a look behind the scenes, discover your skills, contribute your energy and enjoy the festival!
Click here for more information: https://nodeforum.org/journal/node17-call-for-volunteers/
Please send us an email with your area of interest or the duties that you would like to get involved with to
We are really excited to hear from you!
your NODE team <3
As you may have noticed, we are back in our every 2 month release cycle and a new beta is up on the horizon.
As we have noticed, not many of you use alpha builds to test it against your latest an greatest projects. So here is a particular fine alpha version that is our release candidate for beta35.5 scheduled for Monday.
Please give it a test run with a few patches and send us reports on any bug or problem you encounter. Testing is also the perfect excuse to miss any Easter obligation.
Some have reported that they are seeing ~temp files being written on save. We could not reproduce the error here, but we have now an error pop-up to inform you when something goes wrong and the exception that caused the problem will be copied into the clipboard. Open the projects that have that issue and paste the exception message into a new forum thread to help us tracking it down.
Here is something really great. The new Reactive category gives you tools to handle asynchronous events, background calculations and even enables you to build your own mainloop that runs on a different CPU core. But let's start with a pragmatic explanation of what it is:
In a way, this isn't anything new. Event buses or your typical click events are really an asynchronous event stream on which you can observe and do some side effects. Reactive is that idea on steroids. You are able to create data streams of anything, not just from click and hover events. Streams are cheap and ubiquitous, anything can be a stream: variables, user inputs, properties, caches, data structures, etc. For example, imagine your Twitter feed would be a data stream in the same fashion that click events are. You can listen to that stream and react accordingly.
On top of that, you are given an amazing toolbox of functions to combine, create and filter any of those streams.
Since a while VVVV and VL use these so called Observables to handle external events (i.e. mouse, keyboard etc.) and asynchronous data. This was mostly under the hood and the actual operations for observables are hidden in the VL.DevLib. The reason is that out of the box the operations do not go well together with the frame based Update concept of VL because they are intended to be called only once or when something has changed. But as of now we have wrapper nodes for the most common observable operations that do exactly that, listen for change and only rebuild the observables when necessary.
The go to node for handling events is definitely ForEach Region (was Region (Stateful) in earlier versions) in the category Reactive. This region allows you to place any node inside and can also remember any data between two events. There is also one with version Keep that can filter out events using a boolean output. This region is very similar to the ForEach region for spreads, only that its input and output is event values in time instead of slices of a spread.
You can switch or merge event sources:
There are also filtering options with OfType or Where:
Other nodes include Skip, Delay, Delay (Selector), Scan, Switch, ...
If you want to leave the observable world and pass event values to the mainloop use one of the 3 nodes HoldLatest, Sampler or S+H which all behave a little bit different. Depends on what you need:
It's also pretty easy to generate event sources of your own:
As a general advice, only send values of type Record as event data because they are thread safe. If you send values of any Class type be sure that you know exactly what you are doing.
Yep, totally possible and has useful applications. But i am just gonna let this idea sink in for now...
The above just scratches the surface of whats possible with the reactive framework. If you want to know more browse some of the following links:
The pragmatic Rx expert from the quote above:
2 minute introduction to Rx
Visual explanation of the observable operations:
Operator Reference with marble diagrams
Videos from the creator team. Note that IEnumerable is called Sequence in VL and Spread is also a Sequence:
Erik Meijer: Rx in 15 Minutes
Erik Meijer and Wes Dyer - Reactive Framework (Rx) Under the Hood 1
Erik Meijer and Wes Dyer - Reactive Framework (Rx) Under the Hood 2
Introduction to Rx
Midi was released in 1982 and is one of the most successful hardware communication protocols in the world. The simple nature of the protocol makes it easy to implement and even more important, easy to understand for humans.
This makes it a perfect example for the first event based library in VL using the MIDI-Toolkit developed by Leslie Sanford.
Instead of having all settings on one node, functionality is now separate to allow arbitrary combinations.
Device nodes have an enum input for the input/output device driver you want to use. You can have many of them, even for the same driver. Under the hood they will share the actual device driver resource. The driver is opened only if it is necessary, for example if there is an event sink listening to it.
The dynamic device enum will update as soon as a midi device is connected or disconnected to the machine. So no restart required on configuration change:
MidiIn has one observable output for all midi messages received on the given device. MidiOut has one input that accepts an observable to send midi messages to the given device.
Following the midi message structure, there are filters that allow you to select only the messages you are interested in. For example only midi clock messages, or messages on a specific midi channel:
For all midi message types there are specific nodes to read the message content or construct new messages. These are mostly the native methods of the MidiToolkit library.
You can process a midi message (in fact any event) directly as it occurs. The new ForEach region in the Reactive category executes it's patch for each event that is passed in and can transform the event into a different message type and decide whether to pass the current event on via the Keep output.
This is part of a bigger programming paradigm that was also polished for the new midi nodes. Definitely check out for the blog post on Reactive Programming.
At some point all async input event handling in the background will be over and you want to leave the observable world and have the processed values in the main loop. For that there are several options:
For supereasy controller value input there is ControllerState or NoteState:
For more advanced scenarios refer to the Reactive nodes HoldLatest, S+H or Sampler which provide ways to pass event values safely to the mainloop.
If you want to generate midi messages in the mainloop you also have a simple node that generates controller message events:
For other messages use the Reactive nodes ToObservable which create an event source that you can use to send events from the mainloop.
Since VL makes a difference between a single value and a spread of values, some nodes come in 'plural' version to allow listening for example for multiple channels at one.
anonymous user login