It’s a big leap from generations of visual software developed for non-real-time rendering to tools that can make visuals as expressive as musical instruments. As is always the case with development, the devil’s in the details. We’ve heard that overwhelmingly from all the developers to whom we’ve spoken.
But just as a musician might obsess over the nuances of a pickup on a guitar, there’s plenty to love as visual tools evolve. VDMX’s beta 7 isn’t the kind of thing you’d put on a glossy magazine cover, but then something like improved rendering engine or (bizarrely) loading live webpages into layers might just make you salivate. And having just seen CDMo contributor vade working with outpt with VDMX (and Processing and Max/MSP/Jitter and Quartz Composer and a network connection and who knows what else), I can’t wait to see what some of you will do with this.
2008 has indeed proven to be a year of new live visualist software, but development is going slowly in virtually all camps. I think it’s proof that visual apps in general, by stretching the computing capabilities of modern platforms and creating entirely new workflows from scratch, expose some of the challenges really rich media pose even on the latest OSes and developer tools. VDMX is the “perpetually in beta” favorite Mac-only visualist app. Despite the beta label, it’s really quite capable, increasingly-stable software. The Vidvox developers continue hacking away at it, and dedicated users follow each update the way some people follow sports.
Vidvox’s David Lublin gives CDM an exclusive look at the under-the-hood improvements happening in VDMX, as seen through the developers’ eyes. It’s a good glimpse into the mechanics of what’s going on.
Here’s David on some of what’s new, in the first part of our look at VDMX’s latest build:
The biggest changes to VDMX in beta 7 are under the hood, and should be immediately noticeable as soon as you start playing with it. The entire rendering engine has been re-written from scratch, making everything a lot faster and more stable. In particular, layers may be rendered directly to OpenGL- while OpenGL blend modes only offer a fraction of the flexibility of CoreImage, alpha channels work quite nicely and this is a good way to render a number of layers in one pass. We also wrote a dedicated still image handler and moved away from letting QuickTime handle still image playback. Since the images are going directly to the GPU, triggering stills is a lot faster and more stable. The interfaces for a number of plugins- particularly the preview windows- have been significantly optimized, and are much more efficient. Overall, we’re now sitting on a much faster and more robust foundation, which means it’ll be easier to improve and extend VDMX as the beta progresses (we’re about 70% complete- hence b7.0.0).
While this update focused primarily on back-end performance and stability, there were a number of intrinsic feature additions. For example, Quartz Composer support has been taken a few steps further, starting with the ability to create custom composition modes or transitions (it just takes a QC patch with two image inputs and an opacity value). VDMX can now also (optionally) send your hi-res image files to special Quartz Composer patches that will pre-process the image at its original resolution before it’s passed off (and its resolution is reduced) to the FX/layer composition step. This makes it possible to zoom in on images without pixellation, perform pan & scan ops when there is an aspect ratio mis-match, and do high quality texture mapping. Like everything else QC-related, you can just add a dedicated input for receiving the raw image and drop the composition in the ‘qcImageSources’ folder.
A handful of small but useful interface improvements were also added: automatic file relinking with Spotlight, a search box in the FX palette window for quickly finding FX based on their name or description, support for custom categories for Quartz Composer based FX, and improved controls for setting the size and position of individual layers. Again, there’s nothing wild and crazy here- the focus was primarily on making the guts of VDMX faster and more stable, these are just some creature comforts.
Arguably the only wild and crazy addition is an experimental new feature- the ability to load webpages into layers. It’s like having a web browser as a dedicated video source, which is really useful for the VJ who wants to show off that they’re checking for new e-mail during the gig. I guess you could also use it for google image searches and playing SWFs, too. It isn’t your typical feature and it’s still rough around the edges, but our private beta testers thought it was too intriguing to leave out of the release.
From here we are going to shift our focus to interface and overall workflow improvements- ironically, the least efficient aspect of VDMX right now are various bits and pieces of its interface, and tweaking these will make the whole application faster and more responsive. Specifically, we’re looking to overhaul the way VDMX handles palettes and inspectors to make them less intrusive, but easier to bring up and work with. We also look forward to finally having time to clear out a number of standard feature requests: extending MIDI support to include endless rotary knobs, expanding the MIDI-out and OSC-out capabilities, coming up with a way to add shortcuts to pop-up menus, and generally cleaning house. File management- and we’re not just talking about your clips- also needs to get some attention: as VDMX has grown and our userbase has expanded, it’s become increasingly clear that a central management system needs to be put together to handle weblinks, video taps, live inputs, text files, project files, presets, etc.
This update focused on back-end performance, the next update will focus on interface performance- and once that’s out of the way, we’ll be able to start expanding VDMX’s basic functionality…
Stay tuned, as David and co-developer Ray will be back with part II and more of a look behind-the-scenes in VDMX land. If you have any questions for them, fire away in comments and I’ll see if we can get some of them answered.