Search DV.com Search the Web
Blogs | Forums | Register | Sign In  
 
Jitter 1.5
By Ken Gordon, April 25, 2006


When I first reviewed Jitter 1.0 (July '03 DV), I found the task rather daunting. Jitter doesn't have a quantifiable list of Features A, B, and C that perform Functions X, Y, and Z that can simply be tested against the manufacturer's claims and compared with the performance of similar products in the marketplace. It's not even an application, per se—it's a set of objects that work in conjunction with Cycling '74's Max/MSP graphical programming environment.



Jitter and Max/MSP go together. Max provides the programming environment and basic object set, while MSP adds a suite of signal processing objects and Jitter adds video and 3D support.

Max, MSP, and the evolution of Jitter

Just in case you don't have your leather-bound DV archives handy, Max dates back almost 20 years to France's Institut de Recherche et Coordination Acoustique/Musique (IRCAM), where it was created by Miller Puckette and named for legendary computer music pioneer Max Mathews. A graphical programming language that originally centered on processing and manipu-lating MIDI data, Max features a set of programming objects, each with specific, simple functions, which can be connected to each other graphically through virtual patch cords. In doing so, nonprogrammers can create a custom application (called a patch) without writing a single line of code. For this reason and others, Max quickly developed a cult-like following among computer musicians and performance artists, and dancers everywhere were soon being wired with motion sensors. You get the idea.


Click to enlarge


Jitter can be used to render complex 3D geometries in real time. Also new in version 1.5 are Java and JavaScript support to instantiate and control Jitter objects, and offer greater control of complex tasks; and the ability to succinctly define mathematical expressions for calculating matrix data. Oh, and it runs on Windows XP, too.

Max was released as a commercial product by Opcode and evolved through the 90s before migrating to Cycling '74 (www.cycling74.com) under the stewardship of David Zicarelli. Cycling '74 later introduced a suite of audio signal processing objects called MSP. In 2003, Cycling '74 added a suite of video processing objects to Jitter, now numbering 150 with version 1.5. Jitter utilizes a novel scheme that treats video as a series of matrices. A Jitter matrix is like a bitmap, wherein a video frame would be computed as a data set with, say, 720 columns and 480 rows of cells, and four planes representing its red, green, blue, and alpha values. This would be considered a two-dimensional matrix, while a three-dimensional matrix can be used to render, for example, 3D geometry. What's a little more conceptually challenging is Jitter matrices can support up to 32 dimensions, each with 32 planes. Furthermore, Jitter matrices can be defined with up to 64-bit floating-point values (our video matrix would be familiarly defined with 8-bit numbers—one per cell per plane). Therefore, Jitter can also be used to process extremely large and complex data sets, and as such, its use is hardly limited to video.


Click to enlarge


The "jit.qt.effect" object provides access to the entire QuickTime Effects architecture. Shown here, two QuickTime files are composited together with the explode effect. Also worth noting: This is actually the help file for jit.qt.effect — every Max/MSP/Jitter object has one, and it is accessed simply by Option-clicking on the object. Better yet, each is a functioning patch that can be experimented with and even cut-and-pasted from. In the image, a tiny modification has been made, adding a second, floating window ("DV") to display the results.

Working in the matrix

Matrices make Jitter highly scalable and flexible—once a video frame is in matrix form, it can be manipulated by simple arithmetic or com-plex algorithms. This is where the lion's share of Jitter objects come into play. Some objects are specialized: "Jit.xfade" cross-fades between two matrices relative to a decimal value input between zero and one. Others incorporate a whole suite of functions in a single object: "Jit.op" alone includes more than 60 arithmetic, exponential, logical, and trigonometric operators that can be applied to one or more matrices. "Jit.qt.effect" provides access to the entire QuickTime Effects architecture. Working with Max/MSP objects, Jitter is gangbusters for real-time transcoding of audio data to video data and vice versa, and is one of many reasons why it's popular among VJs (see "The Rise of the VJ," June '05 DV). A complete list of Jitter objects, each with detailed descriptions, attribute lists (optional/controllable parameters), and examples can be found at Cycling '74's Web site.

While you're on the site, check out the Community section. One of best things about working in Max/MSP/Jitter is the dedication and support of its user community. Cycling '74 maintains an active set of general and specialized mailing lists, all archived on the site, in which users regularly post questions and answers, and share their work. Moreover, many users write and share their objects—hundreds of which can be found, downloaded, and added to Max/MSP/Jitter by simply dropping them into the relevant folder. Max/MSP/Jitter is constantly evolving, with new objects appearing all of the time that interface with, say, a new game controller or camera phone.

Performance enhancements

The biggest enhancement in Jitter 1.5 is with performance. Many processes now can be handled directly by the GPU, resulting in a major speed increase. My dual-2.0 GHz G5 and the GeForce FX 5200 it arrived with easily processed some HDV footage, for example. However, speed benchmarks with Max/MSP/Jitter are less meaningful because so much depends on how you program your patch and what you do with it. The important thing to remember here is that the flexibility of the architecture enables you to design your patch to maximize performance given your system and task—and tapping the GPU adds a big gun to Jitter's arsenal.

Jitter 1.5 also benefits from updates to Max and MSP. A key example is a new set of Max objects that facilitate the storage and recall of object parameters from and to a patch. These "pattr" objects (for patcher attribute), though pretty tough to understand, provide a robust method of creating named presets for patches.

Max, MSP, and Jitter objects all operate in the same environment—Max—and a Max patch can easily incorporate objects from all three groups. But you need Max to do anything with Jitter objects, and users refer to the whole enterprise collectively as Max. The whole package costs $850 (unchanged from Jitter 1.0), and Max and MSP are bundled together for $495. Some videoheads might have little interest in MSP, but a Max and Jitter bundle isn't available.

The good news is Cycling '74 offers Max/ MSP/Jitter as a free download to demo for 30 days. It's the whole enchilada, including all of the objects, sample patches, more than 2,500 pages of documentation, and 53 tutorials for Jitter alone. When you purchase the product, however, its authorization is machine-specific—if you want to install Max onto another computer for whatever reason, you'll have to obtain another authorization code from Cycling '74. Anther option is to purchase a $40 iLok USB dongle that will let you run Max on multiple machines, though not simultaneously.

Like any programming language, Max/MSP/Jitter is really only as good as the programmer. There's always more than one way of doing something, and some ways are better than others in terms of performance and results. And as impressive as the Max architecture is, aspects of it are getting a little long in the tooth, especially the user interface.


Click to enlarge


Integrated with Max's catalog of UI objects, Jitter can be used to create custom real-time video processors like Focus, by video artist Joshua Goldberg. Two years ago, we included a screenshot of its progenitor, Dervish, which Goldberg developed while beta-testing Jitter 1.0. After performing with Dervish for a while, Goldberg decided to rebuild it from the ground up to take advantage of version 1.5's enhanced OpenGL and GPU functionality, hence "Son of Dervish" Max/MSP/Jitter also includes a free runtime version to facilitate the creation of standalone applications. Goldberg offers Dervish for free at www.goldbergs.com. (Image courtesy of Joshua Goldberg.)

Interface overview

When creating or editing a patch, you can instantiate new objects a couple of different ways. The most common way is to drag them from the object palette located along the top of an unlocked patcher window. The number of objects in the palette has grown over the years, but the functionality remains the same. It would be nice to reposition the palette along the left side of the window or tear it off and move it around as a floating palette. The contents of the object palette are fixed and include several redundant UI objects that might never get used. For example, the "umenu" and "ubumenu" objects are slightly different iterations of a pop-up menu, and most users will probably use only one of them out of preference or habit. Ditto for the "slider" and "uslider" objects, yet they're both fixed on that palette.

Another area that could use some sprucing up is the positioning of objects and patch cords within the patcher window. As a graphical programming environment, Max patches them-selves can encompass a wide range of visual aesthetics. Some programmers just leave their patches a hopeless jumble of objects and patch cords that only they could possibly decipher. Obsessive-compulsives like me, on the other hand, usually arrange everything to the pixel. You can select one or more objects and align them horizontally or vertically, but that's it. I'd love to be able to distribute objects or groups of objects horizontally or vertically, or lay in and snap to guides or a grid. It also would be nice to group and ungroup objects to facilitate selection and manipulation. These are relatively minor quibbles, though.

Conclusion

I concluded my review of Jitter 1.0 by saying that it was "not for the faint of heart or short of attention span." That certainly hasn't changed (nor should it, arguably). It's got a long and steep learning curve that requires many, many hours of work with the tutorials in order to create even the most rudimentary of patches. That said, even the most rudimentary of patches can do wondrous things unlike any off-the-shelf application. If you've got a yen for experimentation, it's well worth a try. And with the 30-day free trial, all you need to invest is a little time.



SPONSORED LINKS
 
 
 




Leave a Comment:
 
Text Only 2000 characters limit
Enter the word as it is shown in the box below: (Why?)
(case sensitive)
 
 
Digital Edition
mag
BLOGS
DV101 Blog May 26 - The Digital Revolution 
DV101 Blog June 2 - The Death of a Standard 
OTHER NEWS STORIES
FORUMS