HOME

TheInfoList



OR:

Quartz Composer is a node graph system provided as part of the
Xcode Xcode is a suite of developer tools for building apps on Apple devices. It includes an integrated development environment (IDE) of the same name for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It w ...
development environment in
macOS macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
for processing and rendering graphical data. It is capable of making sophisticated animations for keynote or presentations and creating animated screensavers. Quartz Composer uses
OpenGL OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
(including GLSL),
OpenCL OpenCL (Open Computing Language) is a software framework, framework for writing programs that execute across heterogeneous computing, heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), di ...
(only in Mac OS X Snow Leopard and later), OpenAL,
Core Image 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 filt ...
, Core Video,
JavaScript JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior. Web browsers have ...
and other technologies to create an
API An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
and a developer tool around a simple visual programming paradigm. Apple has embedded Quartz technologies deeply into the
operating system An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ...
. Compositions created in Quartz Composer can be played standalone in any QuickTime-aware application (although only on Mac OS X Tiger and later), as a system Screen Saver, as an iTunes Visualizer, from inside the Quartz Composer application, or can be embedded into a Cocoa or
Carbon Carbon () is a chemical element; it has chemical symbol, symbol C and atomic number 6. It is nonmetallic and tetravalence, tetravalent—meaning that its atoms are able to form up to four covalent bonds due to its valence shell exhibiting 4 ...
application via supplied
user interface In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
widgets. While Quartz Composer is included with the iPhone SDK, 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.


Patches

Quartz programming through Quartz Composer works by implementing and connecting ''patches''. 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 In programming language theory, lazy evaluation, or call-by-need, is an evaluation strategy which delays the evaluation of an Expression (computer science), expression until its value is needed (non-strict evaluation) and which avoids repeated eva ...
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 Musical Instrument Digital Interface (; MIDI) is an American-Japanese technical standard that describes a communication protocol, digital interface, and electrical connectors that connect a wide variety of electronic musical instruments, ...
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

Also new in Version 3.0 was the possibility to write custom patch plugins using an
Xcode Xcode is a suite of developer tools for building apps on Apple devices. It includes an integrated development environment (IDE) of the same name for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It w ...
template, and the notion of a "
safe mode Safe mode is a diagnosis, diagnostic mode of a computer operating system (OS). It can also refer to a mode of operation by application software. ''Safe mode'' is intended to help fix most, if not all, problems within an operating system. It is a ...
" 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.


Hidden options

In the Quartz Composer editor, holding the
option key The Option key, , is a modifier key present on Apple keyboards. It is located between the Control key and the Command key on a typical Mac keyboard. There are two Option keys on modern (as of 2020) Mac desktop and notebook keyboards, one on each ...
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: * Boolean – a Boolean value, 0 or 1 * Index – a positive integer between 0 and 2147483647 * Number – a
double precision Double-precision floating-point format (sometimes called FP64 or float64) is a floating-point arithmetic, floating-point computer number format, number format, usually occupying 64 Bit, bits in computer memory; it represents a wide range of numeri ...
floating point number * String – a
unicode Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
string * Color – an RGBA or
CMYK The CMYK color model (also known as process color, or four color) is a subtractive color model, based on the CMY color model, used in color printing, and is also used to describe the printing process itself. The abbreviation ''CMYK'' refers ...
quartet, or a
Grayscale In digital photography, computer-generated imagery, and colorimetry, a greyscale (more common in Commonwealth English) or grayscale (more common in American English) image is one in which the value of each pixel is a single sample (signal), s ...
value * Image – a 2D image of arbitrary (possibly infinite) dimensions * Structure – a named or ordered collection of objects, including nested structures * Virtual – any of the above Two additional types were introduced in version 4.0: * Mesh – a collection of vertices and per-vertex normals, texture coordinates and colors in 3-space * Interaction – a valueless type used to associate user input with user-interactive elements of the composition


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 Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
versions are also supported) with a
filename extension A filename extension, file name extension or file extension is a suffix to the name of a computer file (for example, .txt, .mp3, .exe) that indicates a characteristic of the file contents or its intended use. A filename extension is typically d ...
''.qtz'' and a com.apple.quartz-composer-composition UTI. 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 Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including: * Descriptive ...
such as composition author,
copyright A copyright is a type of intellectual property that gives its owner the exclusive legal right to copy, distribute, adapt, display, and perform a creative work, usually for a limited time. The creative work may be in a literary, artistic, ...
and description. The user can also add arbitrary metadata items, if desired. Many image formats are supported, including
JPEG JPEG ( , short for Joint Photographic Experts Group and sometimes retroactively referred to as JPEG 1) is a commonly used method of lossy compression for digital images, particularly for those images produced by digital photography. The degr ...
, JPEG2000,
GIF The Graphics Interchange Format (GIF; or , ) is a Raster graphics, bitmap Image file formats, image format that was developed by a team at the online services provider CompuServe led by American computer scientist Steve Wilhite and released ...
, PNG, TIFF, TGA, OpenEXR, BMP, ICO, PDF,
PICT PICT is a graphics file format introduced on the original Apple Macintosh computer as its standard metafile format. It allows the interchange of graphics (both bitmapped and vector), and some limited text support, between Mac applications, an ...
, ICNS and some raw digital camera types. 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: * Graphic Animation – These don't have required inputs or outputs, but are required to render to the screen. Graphic Animations are useful for animated backgrounds in applications such as Keynote. * Image Filter – Modifies an image using filters. No renderers are allowed in Image Filters, unless they are inside of a Render In Image environment. * Graphic Transition – Generates a transition from a source image to a destination image over a fixed time interval. * RSS Visualizer – Parses and Displays an RSS Feed. * Screen Saver – Integrates with Finder for animated screen savers. * Music Visualizer – Integrates with
iTunes iTunes is a media player, media library, and mobile device management (MDM) utility developed by Apple. It is used to purchase, play, download and organize digital multimedia on personal computers running the macOS and Windows operating s ...
for audio visualization. There is an additional protocol that Apple uses in their private API: *Photo Visualizer – Receives an image list, provides information about total image count and currently displayed image. One new protocol was added in version 4.0: * Mesh Filter – deforms an input mesh. 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.


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. 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: * /System/Library/Compositions – core system compositions (the user typically doesn't modify these) * /Library/Compositions – compositions available for all users * /Users/username/Library/Compositions – compositions available for only this user 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.


Related software


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. * Apply Quartz Composition Filter to Image Files * Convert Quartz Compositions to QuickTime Movies * Render Quartz Compositions to Image Files


History

* 2002 - Apple acquired the foundation of its Quartz Composer from Pierre-Olivier Latour, who originally developed the tool under the name PixelShox Studio. * 2005 - Apple used this foundational technology to develop Quartz Composer, first released in
Mac OS X Tiger Mac OS X Tiger (version 10.4) 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. Inc ...
(version 10.4) as part of the
Xcode Xcode is a suite of developer tools for building apps on Apple devices. It includes an integrated development environment (IDE) of the same name for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, tvOS, and visionOS. It w ...
suite. * 2007 - Mac OS X Leopard (version 10.5) improved the performance of the Quartz Composer, including integration with OpenCL, idle state rendering, and GPU-efficient geometry pipelines. The system gained a redesigned UI, multitouch support, and new workflow tools like Virtual Macros, Interactive Placement, and an enhanced Patch Library. These improved the performance and hardware rendering. * 2009 - Alongside Mac OS X Snow Leopard (version 10.6), Quartz Composer 4.0 was released, introducing minor performance upgrades. The UI was refined for better usability including a "snap to grid" feature. It also gained support for a new 3D model importer supporting the Collada (.dae) file format, enabling handling 3D textured meshes within compositions. * 2011 - Tool became more embedded within Xcode 4.0 toolchain. * 2014 - With the release of Mac OS Yosemite, Apple released the Metal API designed to replace
OpenGL OpenGL (Open Graphics Library) is a Language-independent specification, cross-language, cross-platform application programming interface (API) for rendering 2D computer graphics, 2D and 3D computer graphics, 3D vector graphics. The API is typic ...
embedded libraries to improve performance on iOS devices. As a result, this shift marked the decline of Quartz Composer, as it was heavily reliant on OpenGL technologies that Metal replaced. Although still supported in Yosemite, it lacked any major updates and was increasingly seen as deprecated. * 2019 - Quartz Composer became increasingly buggy, and starting in Mac OS 10.15, it was officially marked as deprecated by Apple and removed from Xcode. However, it remained present for compatibility purposes but users were urged to transition to newer frameworks including
Metal A metal () is a material that, when polished or fractured, shows a lustrous appearance, and conducts electrical resistivity and conductivity, electricity and thermal conductivity, heat relatively well. These properties are all associated wit ...
, SceneKit and
Core Image 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 filt ...
. * 2021- In Mac OS Monterey, QuartzComposer.mdimporte plugin was removed, signifying Apple's removal of support for Quartz Composer components. Since then, several users reported that the software does not work on Apple M1 laptops.


Progression images

File:Quartz Composer Leopard.png, QC Leopard (2007) File:QuartzComposerSnowLeopard.png, QC Snow Leopard (2009) File:VJing QuartzComposer Zoo Geneva 2010.jpg, QC (2010) File:Quartz Composer Multiplexer.png, QC (2010+)


References


External links


Books


Quartz Composer Book
in Japanese
Learning Quartz Composer Book & DVD
in English


Tutorials and documentation



from Apple
Quartz Composer tutorialsQuartz Composer wikikineme.net QC Wikiquartzcomposer.com
(unofficial website)
George Toledo's Programming and Design BlogRob Duarte's 2015 series of Quartz Composer tutorial videoscybero's Quartz Composer JavaScript guide, blog & other Quartz Composer tutorialsQuartz Composer interaction design tutorials


Mailing list


Mailing ListMailing List ArchivesKineme Quartz Composer, Patches & Plugins forum


Compositions


QuartzCompositions.com Forum and Composition Repositorykineme.net Composition RepositoryQuartz Composer Composition Directory GLSL, CoreImage & OpenCL Quartz Composer files from toneburst on machinesdontcareGeorge Toledo's Programming and Design Blog


Custom patches / plugins


vade’s v002 plugins & effectsKineme QC PatchesGoogle Quartz Composer PatchesQtzlcodex Quartz Composer Custom Patches_1024 plugins by Francois WunschelMinuek's Quartz Composer PatchesPaolo Manna QC LuaPluginOpen Emu for QCOpen Frameworks for QCTom Butterworth pluginsCoGe plugins by Tamas NagyGeorge Toledo's Programming and Design Blog ( a variety of official and non-official api plugins and Xcode projects )
*
jQC by QCDesigners, an interaction design framework for Quartz ComposerFacebook Origami, a free design prototyping toolkit for Quartz Composer


Images and videos


Quartz Composer on FlickrQuartz Composer on Vimeo
{{MacOS developer tools Visual programming languages MacOS development