PixelConduit 3.0.2 out now

PixelConduit 3.0.2 is now available for download. The update is also available on the Mac App Store (note that the App Store version is slightly different from the regular version; details below).

This update adds some new node widgets and fixes issues with MIDI and the Web Video Server. The full details are below. I realize that I didn’t post details on 3.0.1 previously, so I’ve added that as well.

Thanks to everyone who wrote in with feedback and bug reports! User feedback is my primary driver for features — the new stuff in the last two point releases of PixelConduit have been entirely motivated by your feedback. So if you have questions or suggestions, why not drop a message on the Support site?

About PixelConduit on the Mac App Store: due to Apple’s requirement that all apps on the store must run in a “sandbox”, the version of PixelConduit available on the Mac App Store does not have access to certain add-ons. These are Video Link and Render Automation – they require a level of system access that’s not possible in the sandbox. The Mac App Store version does have some advantages, though: you get easy updates, and the other add-ons (Stage Tools, Capture Tools and Stereo 3D Tools) are available directly within the app as individual purchases.

What’s New in PixelConduit 3.0.2

5 March 2013
  • New node widget: MIDI Output. This node widget allows you to send controller data to a MIDI device. The input can be any values within the PixelConduit project.
  • New node widget: Convert Video Pixel To Value. This is like an eydropper tool: it “picks” a pixel value within the input image, and outputs number values that you can feed to other node widgets. For example, you could use the pixel value within a video to control the intensity of a visual effect, to drive a hardware controller (e.g. with MIDI Output), etc.
  • Many improvements and fixes to MIDI control in the Sliders and Controls window. There is now a log display in the Setup window that shows the received data from the device, which helps in troubleshooting MIDI problems.
  • Fixed issue with the Web Video Server node widget where the stream produced by the server would not view correctly in Safari 6 (and other browsers that use Mac’s built-in WebKit framework).

What’s New in PixelConduit 3.0.1

23 Jan 2013
  • Added support for Video Link add-on which allows you to connect PixelConduit to other video apps. It includes the following node widgets:
    • Virtual Video Camera – send video streams to any Mac application that supports webcams, e.g. Skype, Google Hangouts and Adobe Media Encoder
    • Syphon Server – send video streams to applications that support the Syphon standard for video interchange
    • Syphon Source – receive video streams from applications that can stream over Syphon
  • Bug fixes to JavaScript environment.

Adding video delay in PixelConduit

When working with live video, the aim is usually to keep delay to a minimum. However it’s fairly common that we end up doing the opposite: adding delay in some parts of the system to compensate for a delay that we can’t eliminate elsewhere.

PixelConduit doesn’t have a built-in “Video Delay” node widget. But that’s no obstacle — we can create it with literally just two clicks of the mouse.

In the Project view, create a Scripted Effect node widget. (This happens by drag’n'dropping from the node box on the left-hand side of the window.) Connect the Scripted Effect between your video source and display output:

Screenshot of the Project view

In this screenshot I’m using a video file as the source, but of course it would be more common that you’d want to delay a live video input… I just wanted to show that this effect isn’t exclusive to live video.

You’ll see the Viewer blank out, as the Scripted Effect isn’t rendering anything useful by default. We’ll fix this in a second.

Click on the “Edit Script” button in the Scripted Effect node widget. This opens the Script Editor window. At the top of the window, click on the Favorites button and choose “Frame delay” from the list:

Screenshot of Script Editor

That’s it! Our custom “Video Delay” node widget is ready to use.

Look back in the Project window, and you’ll note that the user interface of the Scripted Effect node widget has changed:

Screenshot of project view

The script that we loaded has created a slider for controlling the delay. This is obviously handy — now  we don’t need to edit the script to modify this elementary parameter.

It’s not just sliders either; you can create very complex user interfaces in a script node widget too. They can include buttons, labels, custom drawing areas with images… For some examples, have a look at the example templates that are provided with PixelConduit: in the Welcome screen, look for the “Movie Deck” and “Jittered 3D Layer” templates.

What about performance? You may be wondering if this scripted “Video Delay” effect is much slower than it a built-in effect would be. Luckily that’s not the case. The effect is written using PixelConduit’s Surface API and it makes full use of the GPU for storing the video frames. So, everything renders essentially as fast as it would be in native code. If you’re interested in how it works, have a look at the source code in the Script Editor — it’s fairly well commented.

I’m looking for ideas to cover on this blog. Do you have anything in mind that you’d like to see done in PixelConduit using a script or otherwise? Let me know! You can post a comment here, or why not post on the PixelConduit discussion forum and feedback channel.

Conduit reaches version 3.0 and is now free

I’m happy to announce that the Conduit Live app and the Conduit plugins have been updated to version 3.0. A list of new and improved features can be found below… But before getting into the details, there’s another exciting announcement: the software is now available as a free download!

PixelConduit is the new name for Conduit Live. It’s the same powerful realtime video app you know, but now it’s free to use. There are no limitations to available resolutions, file formats or effect complexity.

This is not a gimped trial version, but the full unlimited software. The same applies to the Conduit plugins for Final Cut Pro, After Effects and other apps. You can download the plugins for free, use them anywhere you like and give the software to anyone – no more licenses to worry about.

Of course I’m still in business and hence would like to make money somewhere in this equation… The thing is, I haven’t really been in the traditional app business for a while now anyway. Most of my work recently has been involved with building custom solutions on top of the Conduit app and its underlying framework, now called Conduit Effect System. It makes a lot of sense for me to “liberate” the core software and concentrate on building added value on top of that.

Some of these custom developments are now available as an add-on pack called PixelConduit Complete. It includes Stage Tools, a powerful toolset for live shows and video control; Stereo 3D Tools, a set of highly useful nodes for working with stereoscopic 3D footage; and more! If you’re a pro user of Conduit, check out what PixelConduit Complete has to offer.

I’ve also consolidated all the Conduit documentation into a 145-page book, the PixelConduit User’s Guide. It’s available as a full PDF or individual chapters. Hopefully this will make it easier to learn Conduit and find your way in the app.

Thanks to all of you who have expressed your support and interest in Conduit! I hope you like where it’s going with this new approach. Naturally I’d love to hear your thoughts and comments on this.

What’s new in PixelConduit 3.0

Continue reading

Masking an effect in Conduit

This post is about a compositing technique that’s basic, but not quite obvious!

It’s fairly common that you want to apply an effect only within a specific part of the image, rather than the image as a whole. How to accomplish that?

Check out the answer in the “Conduit Cheat Sheet”:

Conduit FAQ: How to mask an effect

There are actually two methods detailed in that answer. The screenshot below shows the first one illustrated in nodes — check out the link for the other method…


Posterize – script plugin for Conduit

(This post was originally published on July 11, 2011.)

Over at a forum, there was some discussion about how to create a posterization effect in Conduit. There isn’t a built-in node that would do this precise effect, so I decided to write a quick plugin for the job.

Check out the Posterize plugin on the Conduit wiki. (It’s a free download, naturally.)

The effect is created in JavaScript, with a bit of GPU shader language which does the actual pixel processing at blazing speed on the graphics hardware. The JavaScript source code is commented throughout, so if you’re interested in Conduit scripting, this is a decent example of a simple pixel-crunching effect on the GPU.

It’s worth noting here that Conduit has two very different JavaScript interfaces that you can use to render graphics. The one used by this example is called Surface. It’s meant for high-performance rendering that needs to run on the GPU. (The Surface interface is designed specifically for video and effects rendering. It’s native to Conduit, you won’t find it anywhere else. Compared to sprawling 3D graphics interfaces like WebGL, Surface is a lot simpler to learn and use, although it is also more limited when it comes to the real nitty-gritty of 3D rendering.)

The other way to do graphics programming in Conduit is Canvas. This is a well-known 2D graphics interface that’s also part of the upcoming HTML5 web standard. It’s a simple and powerful API for 2D graphics with full antialiasing, gradients, etc. Canvas mostly renders on the CPU, so you don’t get direct control over GPU objects like you do in Surface. For the same reason, Canvas is substantially slower for any kind of rendering where you need to process lots of pixels. Canvas is at its best with vector graphics, but you can do some pixel-level computations with it using an Image object as well.

I’ve written some tutorials about these interfaces:

Canvas Tutorial for Conduit

Making Rain - this tutorial combines both Canvas, Surface and node-based effects in Conduit to create a rain effect

For Canvas, you can also find lots of information online. (Something that I’ve found particularly useful is the Canvas cheat sheet, which lists all the properties and calls available in the Canvas API on a single sheet.)