Quartz Composer

ruori pure qc

Back when project ruori was working on PURE, I wrote several custom patches for Quartz Composer to enable us to use it to develop the controller software. Input came in the form of fifteen photocells, connected to the MIDIbox64 I constructed as an undergraduate project a few years ago. MIDI input entered Quartz Composer, was processed by a huge patch (going ten levels deep in macro patches in some places), and was output to:

Apple Remote Patch for Quartz Composer

Apple Remote and Apple Remote patch

I took Martin Kahr’s Apple Remote Controller Wrapper Class and built a Quartz Composer patch around it.

This release is only compatible with Tiger (10.4).
Leopard (10.5) includes a built-in Apple Remote patch.
Please see also kineme.net for Leopard-compatible patches.

Get version 0.1 here.

Some notes:

  • The events received from the Apple Remote are fairly strange to begin with.. You don’t simply get “key down” / “key up” events as I would have assumed, but instead get cooked events – for many of the buttons, holding the button down generates a different event than tapping it.
  • My patch queues events, to ensure that each keypress is visible for at least one frame.

Steve Mokris is a developer at Kosada, Inc.

Xcode Template for Custom Quartz Composer Patches

Create a new Xcode project with this templateOkay, so, now that the Game Research and Immersive Design Lab’s infamous first-responder project is finished, I’m getting back to work on Quartz Composer hackery.

Frustrated with the tedium of going through all the Xcode project files in a text editor and manually replacing all of the identifiers and filenames when creating a new Quartz Composer Patch, I decided to finally figure out how to create a new Xcode template.

More New Quartz Composer Patches

This is the second release of the Kineme Quartz Composer Plugins.

New this time:

  • MIDI Global In Note :: This patch observes a specified MIDI Note number on a specified MIDI Channel, and outputs the Velocity and a boolean Gate signal.
  • MIDI Global Out Note :: This patch, when Gate is rising true, outputs a MIDI note-on message on a specified MIDI Channel with the specified Velocity. When Gate is falling false, a MIDI note-off message is sent.
  • Image With Composition :: This patch loads a Quartz Composer Composition (.qtz) file and renders it to an Image. (This is intended to replace functionality that was removed with the Mac OS X 10.4.7 update, as described by Roger Bolton and David Wolf.)
  • File Type :: This patch provides the Uniform Type Identifier (UTI) of the specified file. For example, if the path to a QuickTime movie is specified, File Type outputs “com.apple.quicktime-movie”.
This release is only compatible with Tiger (10.4).
Please see kineme.net for Leopard-compatible patches.

Get them here: http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/


Steve Mokris is a developer at Kosada, Inc.

Private Patch Settings

Some further string-hunting in the Quartz Composer framework has revealed an interesting value:

QCShowPrivatePatchSettings

It looks like Quartz Composer is reading a value with this key from the global user defaults repository.

In fact, enabling it by bringing up Terminal and typing

defaults write -g QCShowPrivatePatchSettings 1

causes Quartz Composer to present some additional options for well-known patches.

Some New Quartz Composer Patches

I wrote a few new patches for Quartz Composer.

MIDI Global Output CC :: This patch, when triggered, outputs a MIDI Custom Controller message on a specified MIDI Channel to all MIDI outputs.

MIDI Global Input CC :: This patch observes a specified MIDI Custom Controller on a specified MIDI Channel, and outputs the Custom Controller Value and a Value-changed trigger. Unlike the “MIDI Controllers” patch that comes with Quartz Composer, this patch doesn’t require the user to manually select the “Observed MIDI Sources” individually for every controller/computer combination - so you’re free to take your composition to a different machine and/or controller and jam without needing to hack the composition.

String With File :: This patch reads a file into a string.

String With URL :: This patch retrieves a URL into a string.

Document Info :: This patch returns some information about the zeroth Cocoa NSDocument.

This release is out-of-date.
Please see the latest version.

Get them here: http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/


Steve Mokris is a developer at Kosada, Inc.

Hidden Quartz Composer Patches Redux

In a famous blogpost from summer 2005, ClockSkew poked around inside Quartz Composer and discovered some fairly-complete-looking patches that aren’t available through the interface. ClockSkew also made a cool patch plugin that made these available through the interface. Unfortunately this plugin was written when Intel Macs didn’t exist, and it isn’t a Universal Binary.

Having myself somewhat of an obscurity-obsession, I decided to investigate how ClockSkew did this, and insodoing discovered a few new hidden patches.