Quartz Composer gurus have had to face challenges bringing in network data: the problem is, to keep Quartz Compositions secure, Apple has largely crippled networking features. Celso Martinho has been hacking QC to make networking work in Leopard, and has a functional solution. He wrote us to tip us off on a detailed post at his blog.
First, if you’re still on Tiger, good news:
I needed a way to get data from the Network in the form of events that I could reuse in a quartz composition. So our resident mac programmer coded this custom made patch based on sparse non official documentation found on the internet. And it worked great. We have about 5 plasma screens with mac minis over at work running it for months, no problems whatsoever.
But while Leopard finally offered an official means of making your own patches (that’s what the rest of the patching world calls “objects”, Max/MSP, vvvv, and Pd users), Leopard also breaks their custom patch. Solution?
Then I found 2 patches in the new “Network” category: Network Broadcaster and Network Receiver. They are meant to connect several qtz compositions across the network and exchange messages between them. But maybe I can use them for something else…
I wrote a quartz composition to broadcast messages using UDP and multicast and started debugging and I discovered that the packets are really simple non-crippled text messages, four bytes per character iso-latin encoded chunks.
If you’re doing heavy-duty networking, I’d still investigate other alternatives to make sure Quartz Composer is your best choice. Processing and Max/MSP/Jitter both make short work of UDP send/receive, thanks to Java’s natural abilities there, as do objects in vvvv, Pd, and the like. Even Flash has some data features, with a little work. On the other hand, QC has some natural tricks of its own, and for multi-machine setups, the combination of this hack with QC’s new multi-computer features is very sweet indeed.
Full details, plus a PHP script that does the dirty work, here:
Leopard’s Quartz Composer and Network events [Celso Martinho]