Jitter extends the Max/MSP programming environment to support realtime manipulation of video, 3D graphics and other data sets within a unified processing architecture. Because Jitter, like Max/MSP, is generic in nature, it offers unlimited possibilities for creative exploration. Whether you are interested in video processing, interactive art, teaching new media, or data visualization, Jitter offers both high and low level tools for working in exciting new ways. Jitter abstracts all data as multidimensional matrices, so objects that process images can also process audio, volumetric data, 3d vertices, or any numerical information you can get into the computer. Jitter's common representation simplifies the reinterpretation and transformation of media. And with Jitter 1.5, many types of data can be processed on the GPU, leveraging the massively parallel computing power of today's latest graphics cards.
Video
Although the Jitter architecture is general, it is highly optimized for use with video data, and performs with breathtaking speed. A robust set of mathematical operators, keying/compositing, analysis, colorspace conversion and color correction, alpha channel processing, spatial warping, convolution-based filters, and special effects deliver the building blocks for your own custom video treatments.
Jitter includes extensive support for Apple's QuickTime architecture, such as the playback of all QT supported file formats, real- or nonreal-time file creation, editing operations, import/export capabilities, integrated real-time QT effects, video digitizing, QTVR, file format conversion, and more. QuickTime audio may be routed into MSP to exploit MSP's powerful audio processing capabilities. For the production environment, Jitter provides support for digital video (DV) camera control as well as input and output via FireWire, and multiple monitor support for performance situations.
2D/3D Graphics
Jitter's integrated 2D/3D graphics support provides the tools to use hardware accellerated OpenGL graphics together with video, including the ability to texture 3D geometry with video streams in real-time, convert audio and video streams directly into geometry data, and render models, NURBS, 2D/3D text, and other common shapes. There is even low level access to geometry data and the majority of the OpenGL API for those who need to be closer to the machine.
Ease of Use
Jitter is tightly integrated with Cycling '74's Max/MSP graphical programming environment which lets you visually connect data processing objects together with patchcords to create custom applications in a similar manner to analog modular synthesizers.
This visual framework provides the power to build your own unique video effects, realtime video mixers, audio visualizers, image to audio synthesizers, algorithmic image generators, batch converter/processor programs, or whatever your heart desires. You can share the programs you develop with other Max/MSP users and create standalone applications just as is currently possible with Max/MSP. A free Runtime version is available that runs any application created with Max/MSP/Jitter.
Jitter includes interactive help files for each of its objects, detailed documentation, 37 tutorials, and a bounty of useful examples.
Matrices
Jitter's strength and flexibility comes from the use of a single generalized matrix data format when working with video, 3D geometry, audio, text, or any other kind of data. Jitter matrices may be composed of one of four data types: char (8 bit unsigned int), long (32 bit signed int), float32 (32 bit floating point), or float64 (64 bit floating point). Matrices may have up to 32 dimensions, and may have up to 32 planes.
This common representation makes the transcoding of information effortless. You can experiment with intpreting text as an image, converting video images to 3D geometry, turning audio into a particle system, or playing video data as audio. The possibilities are unlimited.
Jitter has all the fundamental mathematical tools required to work with this numerical representation. The jit.op object alone provides over 60 arithmetic, bitwise, exponential, logical, and trigonometric operators. The multitude of operators in jit.op are particularly useful for experimenting with video compositing. And Jitter's support for linear algebra, particle systems, Fourier analysis and resynthesis, string processing, cellular automata, and Lindenmeyer systems allows for even further experimental possibilities.
More Details
Jitter objects also make available many aspects of their internal state in ways which will be new to even the most seasoned Max/MSP veterans. Jitter introduces the notion of attributes, internal variables which may be set and queried, thus permitting easier management of object state. As a means of convenience, Jitter objects can be created with attribute arguments of the form "@<attribute-name> <attribute-value>"--greatly reducing the need for excessive use of the loadbang object.
Jitter objects can work with matrices of arbitrary size and are designed so that they can adapt to the type and size of data that they receive. A single program may have many objects working with different types and sizes of data at once, and there are tools to easily convert from one type or size to another.
All matrices that are passed between objects are named entities similar to the buffer~ object in MSP. Referenced by name, a single matrix may be accessed by multiple objects, allowing for creative feedback networks, in-place processing, and memory conservation.
There is a publicly available Jitter SDK with the source code of over 30 objects taken directly from the Jitter object set, so third party developers can extend the already overwhelming possibilities Jitter provides. This kind of extensibility is one of the strength's Max/MSP is already known for.
Jitter in Education
Max/MSP/Jitter is in daily use at hundreds of universities around the world. The software's flexibility means it can be used to teach a wide range of subjects, from gestural interface design to mathematics for artists. Students learn a common visual programming approach which can be applied to any problem or subject area, allowing educators to focus on concepts instead software skills.
Max/MSP/Jitter handles the system-level software and hardware integration necessary for researchers to concentrate on a specific problem of interest. Max/MSP/Jitter is a common framework in which artists and researchers from varied disciplines can collaborate and cross-pollinate, building upon their respective specialties, all within the same flexible architecture. Recent artistic and research projects that have used Max/MSP/Jitter range from evolutionary systems for generating video filters to a computer controlled paint gun printer, and from music driven by the movement of ballet dancers to a robotic labyrinth that changes form as the participant walks through it.
Whether you are driving a cutting-edge project or demonstrating the basic principles of digital image or audio processing, Max/MSP/Jitter has the power and flexibility to let you focus on ideas rather than just technical issues. To top it all off, the open-ended nature of Max/MSP/Jitter has fostered a supportive community of developers and users who are sharing their code and insight on a continual basis. Spend some time exploring the resources we've listed below to see some of the amazing work they're doing.
System Requirements
Mac
- Mac OS X 10.3 or higher
- 256 MB of RAM
- Max/MSP 4.5.5 or later installed on your system, For Mac PPC and Intel machines running OS X 10.3.9 or later (10.4 recommended), Jitter version 1.6 is recommended.
- QuickTime 6.0 or later
- OpenGL 1.5 or later
PC
- Windows XP
- 256 MB of RAM
- 1 GHz processor or higher
- OpenGL hardware-accelerated video card
- Max/MSP 4.5.5 or later installed on your system
- QuickTime 6.0 or later
- OpenGL 1.5 or later