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

vvvv sdk

There are 3 reasons that would make you want to follow the instructions below:

  • you want to improve help patches/modules/effects/freeframes/plugins
  • you want to contribute your addons to the addonpack
  • you're a h4kc0r
Note that for simple dynamic plugins, effects or modules development you don't need the following.

getting the sources

The following works only on NTFS formatted disks.

vvvvs public sources are hosted on github and you can easily get a local copy of them using either of two possibilities. Both require some knowledge of GIT, which you should gain before reading on. Among endless resources for learning about git here are three:

after having installed plain git and an (optional) git gui you are ready to continue.

if you want to contribute to the addonpack

 git clone git@github.com:YOUR_GITHUB_USERNAME/vvvv-sdk.git

if you don't want to contribute back

you don't need a github account. simply clone the main vvvv-sdk repository

 git clone git@github.com:/vvvv/vvvv-sdk.git

understanding the sources

by cloning the vvvv sources you got a local copy that should look like this:

 \common
 \scripts
 \vvvv45
 .gitignore
 init
 README.md

The first thing you need to do is call the init script. This needs to be done only once, but without it none of the solution and project files will work. So here is what you do:

  • run Git Bash (which comes with the git installation)
  • navigate to the directory you cloned vvvv to, like e.g. cd dev/vvvv
    • note that when opening the bash the initial directory is your windows user home directory
  • run the script by typing:
 ./init

This will set some directory junctions, will try to fetch the latest alpha-build of vvvv.exe and should produce the following output:

 Running post-checkout hook ...
 Processing public/vvvv45/addonpack/src/.symlinks
 Junction created for core <<===>> ..\..\src\core
 Junction created for thirdparty <<===>> ..\..\src\thirdparty
 ...
 Fetching daily/binaries/binaries-*.tar.bz2
 ...
 Extracting binaries-*.tar.bz2
 tar: Record size = 2 blocks
 vvvv45/vvvv.exe
The init script will try to install Windows Server 2003 Resource Kit Tools for WinXP users. This is necessary to be able to create junction points on WinXP.

Thats that. Now don't worry about \common and \scripts and navigate to the \vvvv45 directory. What you see here is essentially the same directory layout you get when downloading vvvv as an enduser (except the \src directory which is not in the enduser download).

 \addonpack
 \girlpower
 \lib
 \licenses
 \src

Navigate to the \addonpack directory which is where you will work. It contains 3 directories as follows:

 \girlpower
 \lib
 \src

The \src directory contains addons that need to be compiled before being useful (ie. plugins) while the \lib directory contains addons that will be shippped in the pack as they are (ie. modules, effects).

So depending on what kind of addon you're working on you put your nodes in the respective subdirectories:

 \src\nodes\plugins 
 \lib\nodes\effects
 \lib\nodes\modules

building core and addons

in \vvvv45\addonpack\src you see 2 solutions

  • Addonpack.sln
  • MyPlugins.sln

Before running vvvv.exe from your \vvvv45 directory you need to build the core and while at it the whole addonpack so you have all the plugins from the pack available while working from this setup.
Open Addonpack.sln with SharpDevelop 4 or Visual Studio 2010 and build it (F8 in SharpDevelop). This may take a while and is supposed to return with "Build Successfull. 0 Errors" in which case you're done and can close the solution. If the build fails, you best contact us on irc.

The addonpack contains plugins written in C++ which will fail to compile if Windows SDK 7.1 is not fully installed. If you can live without those (like the assimp nodes for example) in your development environment you can safely ignore those build errors.

exporting your work

In case you want to export your work as a nice small zip file as it is provided as a download on our website, you can use the "Zip" task.

Make sure you have "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319" in your PATH environment variable, installed the 32-bit version of 7-zip and then start the command line (Start -> Run -> cmd.exe), navigate to your vvvv-sdk directory and call

 msbuild vvvv45\src\vvvv45.csproj /p:Configuration=Release /t:Build;Zip

to build and zip the core to vvvv_VERSION.zip or

 msbuild vvvv45\addonpack\src\Addonpack.csproj /p:Configuration=Release /t:Build;Zip

to build the addonpack to addons_VERSION.zip

work on your plugins

Now you're ready to work on your own code. For this open the MyPlugins.sln. There you add your projects and then in order to get them built to the right output directory simply add a reference to your projects to the MyPlugins project that is already in that solution. Note that you don't have to change the build-output path of your project which should still point to its default (bin\Debug).

dependencies

If your project has thirdparty .dll dependencies put them in a directory called

 \dependencies

in your project directory and reference them from there. If you project references unmanaged .dlls you also put them there but instead of adding them as reference to your project (which is not possible) you add them as Existing Item and then choose Link when asked to link or copy. Then in the files properties set Copy to ouptut directory to Always. This only needs to be done for such linked native .dlls since for ordinary references Local copy = true is the default anyway.

license

Place a file called

 license-MYPLUG.txt 

directly in the directory of your plugin. From there it will be automatically collected and put in the common \addonpack\licenses directory after the build.

helppatches

Don't forget to provide helppatches for your plugins. You put them all in the

 \addonpack\lib\nodes\plugins

directory. This is a bit of a mess, we know. Please come complain on irc.

updating the vvvv-sdk code

In order to get the freshest bits from the sdk you need to pull from the original repository. If you have your own fork this means you will have to add the original repo as an extra "remote" to your local repository. Section 2 "Configure remotes" in the github reference on forking explains how to do that. As the "upstream" url you'll have to use

 git@github.com:vvvv/vvvv-sdk.git

So if you have a remote in your repository called "upstream" that points to this url you can always simply call:

 git pull upstream develop

to get the latest sources. With this call you'll also always get the latest vvvv.exe that fits the sources you just got.

Whenever you pulled fresh code from the repository repeat the steps mentioned above under "build core and addons".

pull request

vvvv is following this branching model.
If you want your stuff to be included in the addonpack send us a request to include your changes.

Please make sure to follow Conventions.CodingStyle and Conventions.NodeAndPinNaming.

useful git bash commands

git pull upstream develop
when working from a fork this is how you pull latest changes from the original (ie. upstream) repository
git status -uno
show status without untracked files
git log --oneline
show log with only one line per commit
git checkout <file>
discard local changes of file
git reset --hard HEAD
discard all local changes
git clean -f -d
force clean untracked files (use -x to also clean ignored files)

anonymous user login

Shoutbox

~1h ago

joreg: @tobi: OSCDecoder helppatch has a section: OSC_Advanced (bottomright) that demoes decoding of multiple messages

~2h ago

TobiTobsen123: I'm using an OSCDecoder, it receives two arguments...works but how can I seperate the arguments into two seperate values

~4h ago

u7angel: @mediadog, make it a forum question.

~4h ago

u7angel: @mediadog, tty renderer ?

~7h ago

microdee: however non-conductive objects are invisible for this so the pencil and the sticks in the video are still a mysteries

~7h ago

microdee: hey i just found a possible solution behind leap's black magic http://www.quora.com/Leap-Motion/What-is-the-technology-behind-Leap-Motion

~7h ago

mediadog: @u7agel: red node, no connections; can' drag&drop into patch either - 27.2

~11h ago

christosk: Thanx Elliot! UnixPath worked fine :-)