VPT tutorials

VPT is a realtime video projection tool that gives you 16/32 individual planes that can be positioned,scaled, distorted and masked to create complex projections. It can also be used for less ambitious projections where you just need to do a little bit of keystoning to fit your projection onto a surface.

As in previous versions there is built in help in the interface: click on the ? mark in the different sections to learn more.

The principle of VPT remains the same: You map layers in the projected output, assign sources to the layers, save the state of setup (layer and source info ++), and you build sequences to create transitions between presets or you use controllers (lfo/midi/osc,arduino ++) to control various parameters of VPT.

As in the previous version projects are contained inside a specified project folder with a default video and mask folder, but you can also choose to dragndrop your own video folders onto the moviesources for more flexibility.

The new features of VPT 6

First a few things about the new features in VPT 6, then more general info which is more or less the same in VPT 6 and 5.1.

The interface has changed quite a lot since VPT 5.1 and focuses on making it even easier to work with the layers by adding a more intuitive graphical approach through the preview window while also adding more precision. The preview window and the navigator will be the two windows you will spend the most time with when you are setting up your projections and mapping the different layers.

The main VPT console has become more compact, and consists of a tab (1) which lets you switch between the different sections, the main area(2) where the different sections appear, the preset section (3) which is always visible and the VPT bar (4) which controls output, preview and navigator settings.

two views of the preview window, one with frames and one showing the sources (currently mac only).

Working with the preview and navigator windows.

In the preview window, as well as on the projector output (mofo) you can position, scale and change the cornerpin points of the active layer using your mouse. (In the preview window you can also control the transparency of the layer by alt+vertical dragging the mouse)

You switch between position, scale and cornerpin keystone with the p, s and k key. You can constrain the mouse to only work in the x or y axis by holding down shift while dragging.

When adjusting cornerpin points you can choose if you want VPT to guess which corner you want to change (the Automatic (A) mode) or you can manually (M) decide which corner you want to work on. If you choose manual, you need to select the corner either by clicking in the four numbered circles, or toggle through the corners using the j-key.

Only used layers are shown in the preview window. The active layer has a yellow frame as well as the layer number, the other enabled layers have a gray frame. The bottom section of the preview window contains information about the active layer: Fade level, a M is displayed if a mask is active, a T is displayed if texture scaling/cropping is enabled. If the layer uses a mesh instead of cornerpins it displays “mesh”. It also shows the current source for the layer. In the bottom right corner a letter indicates which parameters the mouse will affect, either P (position), S (scale) or K (cornerpin keystone).

If VPT is set up for multiple projectors using triple or dualhead2go lines will indicate the border between the projectors.

The navigator lets you both monitor and access the parameters of the active layer. You can jump directly to a layer by clicking on one of the numbered circles on the side. You can copy and paste between layers, as well as choose source, blendmode and transparency. For details check out the ? inside VPT.

In the mapping section of the navigator you can finetune the position, scale and cornerpin settings either by dragging in the number boxes or by clicking on the arrows associated with the numberboxes. If you click and hold, the numbers will gradually change faster.

The mesh editor is accessed in the mapping section. Currently VPT does either cornerpin keystoning or mesh distortion for a layer, you can´t do both on the same layer. For information on how to use the mesh editor look at the ? helpfile.


The second tab in the navigator, texture, covers colour and texture information. You can crop and scale a source so you only use part of the source in the layer, which can be useful, for instance with tiled syphon sources.

The third tab contains the masking possibilities of the layer, including the mask editor.


The cuelist is completely rebuilt and lets you create transitions between presets very easily, as well as more complex features like sending osc formatted commands directly to a vpt parameter.
Basically it is based on the saved presets, then choosing different types of transitions between the preset. A transition in the cuelist is an interpolation only between the from and to presets, so a transition from 1 to 5 would not interpolate through intermediate presets.
There is a choice of fade, cut, delay and loop, and to connect several cues add a + at the end of the cue.
Fade fades between two presets and then stops.  A delay sets a delaytime before continueing to the next item in the cuelist. Loop lets you create a loop inside the cuelist. The number in the loop cue refers to the cuelist number, not a preset.

See the ? helpfile for use and syntax.

General functionality of VPT


The layers are stacked on top of each other, with layer 1 at the top, layer 16/32 at the bottom. If layer1 is set to cover the whole projection output with 100% opacity you will not see any of the other layers underneath.
HINT: If you want to see what a specific layer contains you can press the “solo” button, which can be found in both the layer overview (as “s”) or in the layer control view. The solo button turns off all the other layers.

Active Layer
Each layer can be manipulated individually using the navigator (and partly in the layers tab). A lot of VPT operations are based on working with an active layer, which means the currently selected layer. You select a layer either by clicking on the layer number in the layer tab or the navigator, or using keyboard shortcuts: layer 1 to 8 can be accessed with the corresponding number keys, you can also move up and down a layer using the up and down arrows.

In the layers tab it is very easy to see which layer is the active one: The background colour turns dark bluegreen (the same colour as the layer control) and the layer number is white instead of black.

In the navigator the active layer is the one with the yellow circle, and in the preview window you will see the layer number of the active layer.

A note about adjusting numbers in VPT:

If you click on a number it gets a red triangle which means it is the active parameter. You can now use the keyboard to enter a value. To change values using your mouse, you click and drag on the number. Click and drag up to increase the value, down to decrease the value. Where you click on the number determines the precision/resolution of the value: The further behind the decimal point you click the more numbers behind the decimal point.

Transparency and blendmode
How a layer combines with the underlying layers depends on transparency, blendmode and mask settings as well as of course the size of the layer.
You control the transparency of each layer either from the layer overview or from layer control.
Blendmode can be selected from a dropmenu where you can choose between normal, additive or multiply, which works similarly to blendmodes in image-apps like photoshop or gimp.

An important part of VPT is the ability to apply a mask to a layer. There are many ways of doing this, lets first look at the in-layer options:

Using pre-existing masks
Your projectfolder contains a folder called mask, which contains your masks. These are black and white png or jpg files usually. White is opaque, Black is transparent. You can easily make your own masks in another application and add them to the mask folder.
To apply a mask, you first need to activate the mask by clicking on the mask button  in the mask tab in the navigator (a m shows up in the preview window when a mask is applied), then you can select a mask from the maskmenu (which reflects the content of your mask folder).
Maskblur lets you blur your mask, this also works with the masks made with the mask editor. (example: take a look at preset 9 “maskaslayer” in the demoproject folder)

Using parametric masks
There are two built-in mask functions for each layer, the vignette and edgeblend.
Vignette is a feathered circular mask, where you control the size, softness, and position. (example: take a look at preset 7 “maskblur” in the demoproject folder)
Edgeblend lets you make a soft edge rectangular mask, where each edge can be controlled individually.

Making your own masks in VPT
There are several ways of making your own masks. Either use the draw-tool, which works more or less as in previous versions (I suggest checking out the video tutorial for this), where you basically draw directly into a layer, or draw points directly onto the projected outputs. The draw tool is most useful for making rough masks. You can then refine these masks in you favourite image-app and then import them back into the mask folder.

With VPT 5 there a new powerful mask editor was introduced, which supports up to 16 control points. This lets you very easily make complex masks. When you click on the mask editor button in layer control, the mask editor opens. You select the number of points your mask should have (4,8 or 16), click reset if there is already another mask in the editor, then start moving the points. This is a realtime mask, so you see directly on your projected output what is going on. When you are satisfied with your mask you need to save it. Either you use the autogenerated name or you enter the name of your choice, and click export. The mask is then saved directly into the mask folder.

There are several ways to make even more complex masks. First of all, you can combine the in-layer masks, to get a combination of user created mask, vignette, and edgeblend.
You can also use combine several layers to make more detailed masks. If you want to save this as one mask you could either use a screen capture, or you could take a look at the desktop capture (found in the tab next to live). This requires a bit of fiddling and is not recommended for noobs.
Sometimes it is not practical to have the mask in the same layer as the content you want to mask.
The easiest way to use a layer as a mask is to use the invert mask function, use solid with colour black as source for this layer (example: take a look at preset 9 “maskaslayer” in the demoproject folder).

Matching a layer to a surface or form.
There are some basic tools to get the layer to fit as good as possible with whatever you are projecting onto. The easiest way of doing this is as described earlier by click/dragging in the preview or mofo window, and then do the fine-tuning with the number boxes in the map tab of the navigator

In some cases you want to adjust the source size and rotation independently of the actual layer size and rotation. This can be accessed in the texture tab in the navigator. Take a look at preset 4 “fourlayerstexcrop” for an example of how to use different section of the same source in 4 different layers by scaling and offsetting the texture.

There are many different types of sources that can be used in the layers. Any source can be routed to any layer, and one source can of course also be used for all the layers. You select source from the dropmenu either in layer overview or in layercontrol.

HINT: To improve framerate it is a good idea to turn off layers you are not using. Simply select OFF in the sourcemenu in the individual layer to disable a layer.

Quicktime sources

There are 8 quicktime sources, named qt 101- qt 108 (101source-108source in the layer dropmenu). As default, video content should be inside the video folder in your project folder. It is also possible to drag and drop video folders directly to the different sources: drop the folder onto the menu of the source you want to add the video to. When using the record live camera to disk feature you need to use the default video folder.

Recommended codec: apple photo jpeg 75% quality for most footage, Apple prores 422 LT for HD footage.

To turn on a source click on the sourcename button, it will turn green. Select a clip from the dropmenu next to the sourcename. To view the source in the sourcecontrol either click just to the left of the sourcename, or choose the source from the dropmenu in the sourcecontrol. When a source is selected in sourcecontrol the background of the source gets the same colour.

The default colourspace for VPT is uyvy which is more efficient than argb. However, for certain type of footage you need to use the argb colourspace. This applies to sources using an alphachannel, like GIF animations.
VPT assumes by default your source to be video, not a still. Again this is for efficiency purposes. However, there is no problem to use still images, you just need to set your source to still in the sourcecontrol,there is a video/still toggle. The number next to the toggle is how often the still image should be updated in milliseconds (default is 100 milliseconds).
NB! Sources might not be what they appear to be. Some movies could be a still image converted to a movie.

HINT: To improve framerate it is recommended to turn off unused sources.

HINT: If you are using small layers there is no need to use high resolution clips. To downsample the resolution of your sourceclip select a different resolution from the resolution dropmenu in the sourcecontrol (default is adapt). You can easily see on your output if you have downsampled too much.

Live inputs
There are two live inputs, 109source and 110source. To see the live input activate the live monitor by clicking on it, and then select your source from the dropmenu. Live inputs tend to slow things down so remember to turn them off when not being used.

Live capture
Live inputs can be recorded to disk or sampled into a ram buffer for immediate use.
To capture a live feed, select your live source, make sure it is on, and click the rec button. Click the rec button again to stop the recording. The recording is automatically given a name and added to the video folder and is immediately available for use in the source dropmenu. The names start with xlive and are then numbered from 101 and upwards. The next time you start VPT the naming starts again at 101 so remember to rename your captured files if you want to keep them or else they will be overwritten.
To sample the live feed into a RAM buffer, select live input and click fill to start filling the buffer, it stops by itself when it has filled the 100 frame buffer. To play back the buffer press play, adjust playback direction, speed and loop points (the two last parameters can also be controlled with LFO/midi/osc). Buffer can be selected as a source into a layer.

Solid source

A very practical source if all you want is a solid colour in a layer. You adjust the size of the solid (especially important when combining it with a mask) and how often it should be refreshed (default is usually ok).

Noise source

There are two noise sources in VPT 6.This generates a monochrome noise texture at various dimensions. You can adjust dimension and refreshrate.

Text source

This lets you add text to VPT, either by reading from file, typing in text in the text box or by sending text over osc using /text1/message yourtext.
The text source behaves differently from the other sources as it is rendered directly to a layer position, and is not a source you select from the layer sourcemenu. You select the layer position where you want the text to appear.
If you want the text to appear above all the other layers use 0 as layer number. If you use the same layer number as a layer which is in use it is unpredictable if the text or the layer will be on top, so it is suggested to use a layer number for text which is not used already for another source.
There is a slight difference in how text size is controlled in the windows and mac versions: In windows you control text size by scaling the text. On mac you set the font size.
For a more detailed explanation of the text source take a look at the built-in help.

FX bus
VPT 6 has an effect section with 6 FX chains. Each FX chain contains a selection of shaderbased effects which can be used on all the sources. As with VPT in general, the way to use them is based on routing the source through the fx module. You select the source in the menu which starts with in, and select the output in the menu at the bottom of each fx module which starts with out (x01-x16cell). So if you want to send the quicktime source 101source through fx1 and to layer 2 you select 101source as incoming source in fx1, and for instance x01cell as destination. Then you select x01cell as your source in layer 2. The effects works by first activating the button for a particular effect (blur, mblur, brcosa, scalebias) and then adjust the corresponding parameters.
It is possible to make your own fx chains based on the template included in the VPT download. You can then drag and drop your custom fx chain to one of the 6 available slots (drop on the fx label for the module you want to replace).
There is a fxmodule02a ready to be used in the fxchain folder inside the demoproject folder.

Mix modules

The mixer modules simply mixes two sources, either quicktime sources, live or buffer sources. You choose A and B source and destination, which lets you select the mixermodule as source in a layer. So if you use mixer1, you select 1mix as your source in the layer you want to use it (VPT 5.1).
There are several mix modes to choose from, select one from the dropmenu. Mix is a standard crossfade.
(example: take a look at preset 3 “mix-example” in the demoproject folder)

For OSX 10.6 or later there is a syphon client, enabling you to use other applications which support syphon (like quartz composer and unity) as a source in VPT. It is also possible to use VPT as a syphon source, which might be interesting for recording your output using the syphon recorder available from the syphon website.

Create your own sources
A maxmsp/jitter template is provided with the download if you want to create your own source.


There are many ways of controlling the parameters of VPT. Apart from the cuelist which controls sequences of presets you can control individual parameters using midi, lfo´s, serial or osc. The hub for all these controller is the router.


The router is the hub of the controller moduler. The principle is that you map a controller number (for instance a midi slider with controller number 1) to a particular VPT destination and parameter in the Router section. You an choose between about 60 destinations and about 100 different parameters so it is possible to control almost every aspect of VPT.
First column is the controller number which should correspond to a controller you are using. You can use the same controller value in several rows to let one controller control many parameters at once.
Second column is the destination.
Third column is the list of parameters available for the destination you chose in the second column.
Fourth column shows the format of the controller message (formatted as a osc message).
Fifth and Sixth columns is the range of the values sent to the the particular parameter you want to control. For instance a fade parameter would expect values between 0. and 1., while /layer1/rotx would expect a value between 0 and 360.


The midi tab let´s you configure VPT to use an external midi controller to control VPT. It also contains a section with built-in sliders and buttons, which can either be used as a simulation of your midi setup, or as a controller in itself. For instance, it could be useful for creating submasters.


The lfo generators lets you automate the control of VPT. You can combine two lfo´s to create more complex wave forms.
As with the midi controllers you map the lfo output to a particular VPT destination and parameter in the Router section.


VPT can be controlled from other applications or even another computer using the OSC formatted message system. In principle you can build a complete custom interface for VPT  in an application of your choice which supports OSC, like maxmsp, PD or Processing. Included in the template folder in the VPT download are examples for using OSC with maxmsp and Processing, more examples will come later.
This makes it relatively easy to expand the control of VPT to using cameratracking or kinect.

Available osc messages to control parameters in VPT (list is not complete):

osc parameters to the moviesources:
/video /rate /trig /scrub /in /out /loop /loopreset /loopreport /unique /unirefr /argb /start /stop /dim /vol /pan /clipnr /random

osc parameters to the layers:
/fade /pos_x /pos_y /scale_x /scale_y /x1 /y1 /x2 /y2 /x3 /y3 /x4 /y4 /red /green /blue /txrot /blur /levels /avig /edge /mask /solo /blendmode /source /cpreset /name /ratio /solotrig /sourcenr

osc parameters to the mixers:
/A /B /out /mix

osc parameters to the lfos:
/on /phase /speed /wave /wnormal /val /range /lfomix

osc parameters to the built in fx module:
/blur /blurlevel /mblur /mblurlevel /mblur_down /brcosa /br /co /sa /scalebias /scale_r /scale_g /scale_ b /bias_r /bias_g /bias_b /in /out

osc parameters to buffer:
/source /fill /play /dir /speed /range /frame

osc parameters to textmodule (/text1):
/on /message /font /size /align /posx /posy /rotx /roty /rotz /fade /red /green /blue /layer /next /line /linetempo

osc parameters to noise:
/dimx /dimy /speed

osc parameters to sound module:
/matrix /1amp /2amp /3amp /4amp /5amp /6amp /7amp /8amp

osc to serial out (/serialout)
/s1 /s2 /s3 /s4 /s5 /s6 /s7 /s8

osc to VPT (/vpt)
/preset /cue /blackout /fullscreen

VPT also sends out osc messages, giving information about active preset number, loop reports etc. , making it possible to sync external events to VPT events. You can also create custom osc messages, which can either be used to control other applications, or could be used as an alternative way of controlling VPT (by sending to port 6666).

Please note that VPT is only automatically sending out OSC data for some parameters:
/preset,/sequence,/cuetrig, /linedone, /loopreport (need to have loop report enabled), /101-108curclipnr, /101-108menucount, /101-108clipduration, /101-108cliptimeabs(need to have cliptimereport enababled), /101-108cliptime(need to have cliptimereport enababled).


The loopback section lets you map information about preset, cues as well as cliptime and clip loop report as a controller. So this means you could use the the loop report from 101source to trigger a new random clip from 101source when the clip reaches the end. It also lets you sync parameters to the playback of a movie.


The serial section lets you communicate with a microcontroller like the Arduino, both input and output.
For output you can turn things on/off or dim lights etc, as well as controlling servos. I use this for controlling a simple shutter for the projector, covering the lens when I want it to be completely black.
For input you can use switches, knobs and different sensors as controllers for VPT. Since sensors rarely give a clean signal I have made it easy to tune the sensor by a combination of smoothing the signal, scale the range of the values received from the sensor, as well as the possibility to use analog input as a trigger (where you can set the threshold). A on/off signal can either be used as a button or a toggle.

Sound output (VPT 5.1)

You can route the sound from your quicktime sources out to up to 8 channels, depending on your sound card. I have also provided a maxmsp patch (in the template section in the VPT download) with the receive points of the A,B,C,D sources so it should be possible to create patches to process the sound further).


To enter/exit fullscreen use the esc key on your keyboard, or use the fullscreen button in section 4 of the main interface. The mofo window goes into fullscreen on the screen it appears on so make sure it is on your projector output (which it should be if you have one connected).

Output settings
You can set VPT to automatically enter fullscreen when starting up, as well as starting at a particular preset or cue. You can also specify if menubar and cursor should be visible or not. This settings can be found in the prefs tab.
The prefs tab also contains some more advanced settings for adjusting the mofo window, particularly when it is not in fullscreen. You can adjust screen ratio and number of screens, which makes it easier to prepare work when you are not connected to a projector.

This is probably the most confusing part for people who have not worked with VPT before.
In the file menu there is a save item which is greyed out. This has nothing to do with saving work in VPT, it is simply a menu that comes from max/msp, the program that VPT is made in, and it would be used for saving changes to the actual program, not the contents of VPT.

So, how do you save your project?

Project folders

First of all, in VPT 5, projects are organised into project folders.
A project folder contains your video and mask folder, as well as a preference file, a preset file, a cuelist and a midi preset file. These files contain all the information related to your VPT project.
The first time you start VPT it assumes you uses the default demoproject which is found inside the VPT folder.
One option is to keep using it, just replace the video and mask folders with your own content (but keep the names video and mask for the folders).
Another is to keep the projectfile in another location on your system. The easiest way to get this to work is to just duplicate the demoprojectfolder and then rename it. You can either keep it inside the VPT folder or move it somewhere else.

You need to tell VPT which projectfolder you are using by going into the prefs tab, and click on the projectpath button. Navigate to your project folder and select. Your project should then load but to be on the safe side I would recommend that you restart VPT, and verify that the filepath is correct (shown in the prefs section).
The projectfolder makes it very easy to move projects to other computers, so it is ideal for sharing projects.


There is currently no efficient way of rendering the output you create in VPT, so when you are using VPT there is a lot of processing going on in realtime. So what do you save then?
You save the current state of VPT into presets. This means all the parameters for all the layers,sources, mix modules, lfos etc are saved everytime you create a preset.
You create a preset by giving it a number and optionally a name and click store. Your saved preset appears in the preset list. By clicking on the different items in the preset list VPT updates all the parameters to the selected preset. You have the option of using storenext, which looks for the next available preset slot, thus avoiding overwriting already existing presets.

Please refer to the built-in help (the question mark) and tutorial videos for further help.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s