Quartz Composer

Last updated

Quartz Composer
Developer(s) Apple Computer
Stable release
4.6.2 / December 12, 2016
Operating system Mac OS X Tiger (Version 2.0)
Mac OS X Leopard (Version 3.0)
Mac OS X Leopard + iPhone SDK (Version 3.1)
Mac OS X Snow Leopard (Version 4.0)
macOS Sierra (Version 4.6.2)
Available inEnglish
Type Visual programming language/Software development tool
License Proprietary
Website Apple - Quartz Composer (User Guide)

Quartz Composer is a node-based visual programming language provided as part of the Xcode development environment in macOS for processing and rendering graphical data.

Contents

Quartz Composer uses OpenGL (including GLSL), OpenCL (only in Mac OS X Snow Leopard and later), Core Image, Core Video, JavaScript, and other technologies to create an API and a developer tool around a simple visual programming paradigm. Apple has embedded Quartz technologies deeply into the operating system. Compositions created in Quartz Composer can be played standalone in any QuickTime-aware application [1] (although only on Mac OS X Tiger and later), as a system Screen Saver, [2] as an iTunes Visualizer, from inside the Quartz Composer application, or can be embedded into a Cocoa or Carbon application via supplied user interface widgets. While Quartz Composer is included with the iPhone SDK, as of December 2015 there is no way of running Quartz Compositions on iOS devices. Starting in macOS Catalina, the Quartz Composer framework has been deprecated, although it is still present for compatibility. [3]

Patches

Quartz programming through Quartz Composer works by implementing and connecting patches. [4] Similar to routines in traditional programming languages, patches are base processing units. They execute and produce a result. For better performance, patch execution follows a lazy evaluation approach, meaning that patches are only executed when their output is needed. There are three types of patches: Consumers, Processors, and External Input patches that can receive and output mouse clicks, scrolls, and movements; MIDI and audio; keyboard; or other movements. A collection of patches can be melded into one, called a macro. Macros can be nested and their subroutines also edited.

To control the order of rendering, each renderer is assigned a layer, indicated in its upper-right corner. Layers are rendered sequentially, lowest to highest. Renderers can be enabled or disabled, essentially turning on or off that particular layer. Turning off unused layers often results in better performance, since fewer upstream patches need to be evaluated.

Some patches can have subpatches, which allows for global parameter changes to just the included subpatches. This is useful for lighting, 3D transformation, and GLSL shaders, among other things. Subpatch support is indicated by square corners on a patch, rather than the typical rounded corners.

With Version 3.0, it became possible to turn compositions into Virtual Patches. These allow the user to reuse functionality without having to store duplicate copies in each composition. The Quartz Composer Editor allows the user to save a "flattened" copy (with the virtual patches fully expanded inside), for easy distribution. Version 4.0 extended this functionality even more, and automatically includes "flattened" copies of virtual patches for use as a fallback if the desired virtual patch isn't installed on the host system. This greatly simplifies composition distribution.

Network functionality was greatly improved with the release of Leopard. It became possible to transmit data and synchronize over a network interface, and it also added support for Open Sound Control transmission and reception.

Plugins

The Quartz Composer 3.0 interface. Quartz Composer Leopard.png
The Quartz Composer 3.0 interface.

Also new in Version 3.0 was the possibility to write custom patch plugins, using an Xcode template, and the notion of a "safe mode", where plugins and other unsafe patches fail to load. This prevents malicious compositions from performing dangerous or insecure operations. Custom patches using Apple's Xcode template are always considered unsafe.

It was possible to develop custom patch plugins for Version 2.0, but the API was undocumented and private, and was never supported by Apple. Eventually, templates were released to simplify this procedure. [5]

Hidden options

In the Quartz Composer editor, holding the option key while selecting "Preferences..." from the menu adds 3 additional tabs of options for the user to configure. These options include System settings, Editor settings, and QuickTime integration settings. Notable options include expanded tooltips, software rendering, and uncapped framerate rendering. Multisample antialiasing (MSAA) was added as a hidden option in version 4.0, allowing for antialiasing inside the QC Editor, though it only works on GPU's that support MSAA.

Native datatypes

Data inside QC can be one of the following types:

Two additional types were introduced in version 4.0:

Type conversion

Data can usually be converted to other types transparently. In Quartz Composer 3.0, the connections between patches change color to indicate conversions that are taking place. Yellow connections mean no conversion is taking place, Orange indicates a possible loss of data from conversion (Number to Index), and Red indicates a severe conversion; Image to Boolean, for example.

Compositions

Quartz Composer documents are called Compositions. Compositions are Binary Property Lists (though XML versions are also supported) with a filename extension .qtz, and a com.apple.quartz-composer-composition UTI. [6] Patches, their connections, and their input port states are saved in the composition file. Images can be stored inside a composition as well, making for self-contained compositions with embedded graphics. By dragging a movie file into the Quartz Composer editor, a reference to the movie file is created, providing a changing image that can be connected to a renderer.

Compositions also store metadata such as composition author, copyright, and description. The user can also add arbitrary metadata items, if desired.

Many image formats are supported, including JPEG, JPEG2000, GIF, PNG, TIFF, TGA, OpenEXR, BMP, ICO, PDF, PICT, ICNS, and some raw digital camera types. [7] Images are maintained in their native form for as long as possible before rasterizing for display. This means that Quartz Composer will keep vector images as vectors when cropping, scaling, rotating, or translating which allows it to work with very large logical image dimensions without consuming large amounts of memory or processing time. Such functionality is most apparent when working with text-based images, or PDFs.

Version 3.0 added the ability to add annotations to areas of the composition, called notes. These notes parallel comments in other programming languages. Notes can be yellow, red, green, blue, or gray, and can overlap other notes.

Composition protocols

In Version 3.0, the concept of Composition Protocols was introduced. Protocols provide a template of required and optional inputs and outputs to qualify conforming compositions for various purposes. The following protocols are available by default:

There is an additional protocol that Apple uses in their private API:

One new protocol was added in version 4.0:

There is no officially supported way to add additional protocols to Quartz Composer. However, there are some undocumented methods that may make this possible in the future. [8]

Composition runtimes

In addition to protocols, compositions can also conform to different runtimes where Quartz Composer is available. In Leopard, there are runtimes for Tiger (32-bit), as well as 32-bit and 64-bit versions of the Leopard Quartz Composer runtime. The editor can also indicate used patches that are unsafe, or unavailable in Tiger to aid in making compatible compositions.

Composition repository

A System-wide Composition Repository is available as of Version 3.0. [9] This allows applications to share and make use of common compositions for effects and processing. It is also possible for applications to query the repository for compositions that match certain criteria, such as protocol conformance.

The Repository is spread across 3 file system locations:

Adding compositions to the repository is as simple as adding the composition file to one of these locations.

Comparing compositions

It became possible to compare compositions in Quartz Composer 3.0. This feature allows the user to compare inputs, rendered output, and graph appearance of any two compositions.

Quartz Composer Visualizer

A developer tool called Quartz Composer Visualizer was released with Quartz Composer 3.0 that allows compositions to be rendered across multiple screens on a single machine, or even spanned across several machines and displays.

Automator support

Support for some Automator actions was added with the release of Leopard.

History

Pierre-Olivier Latour originally developed the predecessor to Quartz Composer under the name PixelShox Studio. [10]

Related Research Articles

<span class="mw-page-title-main">Pidgin (software)</span> Open-source multi-platform instant messaging client

Pidgin is a free and open-source multi-platform instant messaging client, based on a library named libpurple that has support for many instant messaging protocols, allowing the user to simultaneously log in to various services from a single application, with a single interface for both popular and obsolete protocols, thus avoiding the hassle of having to deal with a new software for each device and protocol.

<span class="mw-page-title-main">WebObjects</span> Java web application server and framework originally developed by NeXT Software

WebObjects was a Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.

<span class="mw-page-title-main">Virtual Network Computing</span> Graphical desktop-sharing system

Virtual Network Computing (VNC) is a graphical desktop-sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the keyboard and mouse input from one computer to another, relaying the graphical-screen updates, over a network.

<span class="mw-page-title-main">Xcode</span> IDE including tools for developing software for Apple platforms

Xcode is Apple's integrated development environment (IDE) for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS. It was initially released in late 2003; the latest stable release is version 14.3, released on March 30, 2023, and is available free of charge via the Mac App Store and the Apple Developer website. Registered developers can also download preview releases and prior versions of the suite through the Apple Developer website. Xcode includes command-line tools which enable UNIX-style development via the Terminal app in macOS. They can also be downloaded and installed without the GUI.

X.Org Server is the free and open-source implementation of the X Window System display server stewarded by the X.Org Foundation.

<span class="mw-page-title-main">Graphviz</span> Software package for graph visualization

Graphviz is a package of open-source tools initiated by AT&T Labs Research for drawing graphs specified in DOT language scripts having the file name extension "gv". It also provides libraries for software applications to use the tools. Graphviz is free software licensed under the Eclipse Public License.

<span class="mw-page-title-main">Mac OS X Tiger</span> Fifth major release of Mac OS X

Mac OS X Tiger is the 5th major release of macOS, Apple's desktop and server operating system for Mac computers. Tiger was released to the public on April 29, 2005 for US$129.95 as the successor to Mac OS X 10.3 Panther. Some of the new features included a fast searching system called Spotlight, a new version of the Safari web browser, Dashboard, a new 'Unified' theme, and improved support for 64-bit addressing on Power Mac G5s. Mac OS X 10.4 Tiger offered a number of features, such as fast file searching and improved graphics processing, that Microsoft had spent several years struggling to add to Windows with acceptable performance.

Core Image is a pixel-accurate, near-realtime, non-destructive image processing technology in Mac OS X. Implemented as part of the QuartzCore framework of Mac OS X 10.4 and later, Core Image provides a plugin-based architecture for applying filters and effects within the Quartz graphics rendering layer. The framework was later added to iOS in iOS 5.

This is a comparison of both historical and current web browsers based on developer, engine, platform(s), releases, license, and cost.

COLLADA is an interchange file format for interactive 3D applications. It is managed by the nonprofit technology consortium, the Khronos Group, and has been adopted by ISO as a publicly available specification, ISO/PAS 17506.

Windows Presentation Foundation (WPF) is a free and open-source graphical subsystem originally developed by Microsoft for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0 in 2006. WPF uses DirectX and attempts to provide a consistent programming model for building applications. It separates the user interface from business logic, and resembles similar XML-oriented object models, such as those implemented in XUL and SVG.

<span class="mw-page-title-main">LiVES</span>

LiVES (LiVES Editing System) is a free and open-source video editing software and VJ tool, released under the GNU General Public License version 3 or later. There are binary versions available for most popular Linux distributions (including Debian, Ubuntu, Fedora, Suse, Gentoo, Slackware, Arch Linux, Mandriva and Mageia). There are also ports for BSD, and it will run under Solaris and IRIX. It has been compiled under OS X Leopard, but not thoroughly tested on that platform. In early 2019, a version for Microsoft Windows was announced, with a release slated for in the second half of 2019.

<span class="mw-page-title-main">Mac OS X Leopard</span> Sixth major release of Mac OS X

Mac OS X Leopard is the sixth major release of macOS, Apple's desktop and server operating system for Macintosh computers. Leopard was released on October 26, 2007 as the successor of Mac OS X 10.4 Tiger, and is available in two editions: a desktop version suitable for personal computers, and a server version, Mac OS X Server. It retailed for $129 for the desktop version and $499 for Server. Leopard was superseded by Snow Leopard in 2009. Leopard is the final version of macOS to support the PowerPC architecture as Snow Leopard functions solely on Intel based Macs.

The Apple Developer Tools are a suite of software tools from Apple to aid in making software dynamic titles for the macOS and iOS platforms. The developer tools were formerly included on macOS install media, but are now exclusively distributed over the Internet. As of macOS 10.12, Xcode is available as a free download from the Mac App Store.

<span class="mw-page-title-main">Digital Image Processing with Sound</span>

DIPS (Digital Image Processing with Sound) is a set of plug-in objects that handle real-time digital image processing in Max/MSP programming environment. Combining with the built-in objects of the environment, DIPS enables to program the interaction between audio and visual events with ease, and supports the realization of interactive multimedia art as well as interactive computer music.

<span class="mw-page-title-main">ORX</span> Game Engine

Orx is an open-source, portable, lightweight, plug-in-based, data-driven and easy to use 2D-oriented game engine written in C.

<span class="mw-page-title-main">Art of Illusion</span>

Art of Illusion is a free software, and open source software package for making 3D graphics.

<span class="mw-page-title-main">Yarn (package manager)</span> JavaScript package manager

Yarn is one of the main JavaScript package managers, developed in 2016 by Meta for the Node.js JavaScript runtime environment. An alternative to the npm package manager, Yarn was created as a collaboration of Facebook, Exponent, Google, and Tilde to solve consistency, security, and performance problems with large codebases.

LÖVE is a free, open-source, cross-platform framework released under the zlib license for developing 2D video games. The framework is written in C++ and uses Lua as its scripting language and is still maintained by its original developers.

References

  1. Quartz Composer User Guide Archived March 4, 2009, at the Wayback Machine
  2. Quartz Composer Users Guide - Making a Screen Saver Archived March 4, 2009, at the Wayback Machine
  3. Xcode 11 Release Notes
  4. Quartz Composer User Guide - Patches [ permanent dead link ]
  5. fdiv.net: Xcode Template for Custom Quartz Composer Patches
  6. Uniform Type Identifiers Overview
  7. Using the ImageIO Framework
  8. Creating Your Own Protocols
  9. Quartz Composer User Guide: Composition Repository [ permanent dead link ]
  10. "PixelShox Technology". Archived from the original on January 29, 2017. Retrieved March 8, 2009.

Books

Tutorials and documentation

Mailing list

Compositions

Custom patches / plugins

Images and videos