New Custom Quartz Composer Patch Xcode Template

Create a new Xcode project with this templateHere’s a new version of the Xcode Template for Custom Quartz Composer Patches.

Changes:

  • Rebuilt from scratch – no longer depends on QCJP’s work – and, by extension, the Creative Commons “Attribution-NonCommercial-ShareAlike” license. My Xcode Template, as of version 0.2, is released into the Public Domain. You are free to use it for whatever – commercial or non-commercial.
  • QCJP’s headers were replaced with headers assembled directly from the QuartzComposer framework – now located in the QuartzComposer/ folder of the project. I’ve exported a few more headers than QCJP had constructed, so there’s some added functionality (namely, image input/output ports).
  • The project now automatically assigns an icon to the patch bundle, and installs it in /Library/Graphics/Patches/ for you each time you build, for faster edit-build-test workflow.
This release is out-of-date.
Please see the latest version.

Download the installer, version 0.2.

See the old version’s blogpost for some additional instructions and user comments.


Steve Mokris is a developer at Kosada, Inc.

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.

Keybindings in Mac OS X 10.4's Terminal.app

I use PINE as my email client.

Why are you living in the late 1970s?” you ask.

But I’ll refrain from answering that question for now. And I’ll even refrain from correcting you in that PINE wasn’t available until 1989.

And, so, in fighting the ongoing war against email, I tend to spend a lot of my day interacting with Mac OS X’s Terminal.app. I SSH into one of our Fedora Core Linux servers and run PINE there.

The default keybindings used by Terminal.app leave a bit to be desired, however

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.