Live remote controlling Quartz Composer (with editor)

cradle's picture

I needed to control a Quartz Composer visualisation running on a projector; here's how I did it (WARNING: convoluted solution ahead! and sorry about my formatting failures :$)

Theory

Using the built in "screen sharing" of modern versions of OSX (10.5 and newer) we can simply and for free (besides the hardware, no software cost) control a remote composition running on another machine whilst still having full access to the powerful real-time editor mechanics Quartz Composer provides.

The trick revolves around setting up an additional monitor attached to the 'live' mac that will run the editor (apparently some non free apps can force secondary monitors without them being attached), running the visualisation full screen on the desired display, remotely connecting to that mac, and then using the editor on the peripheral display remotely.

Equipment needed

  • "master" Dual head capable Mac (this mac will run your Quartz Composition, and must run in dual head [non mirror] mode, it'll make sense why later)
  • The target display (projector, large LCD/Plasma etc.)
  • A secondary display (if "master" Mac is not a laptop with built in display you'll need another display [this can be anything at all, it just needs to register as a second monitor])
  • A second "controller" Mac
  • A (fast as possible) network between the two Macs I got away with an Ad-Hoc network, but faster is better

Method

1) Network the macs

  • a) Connect the two macs via a network (AdHoc wifi is ok as baseline)
  • b) Ensure the two macs can 'see' each other (via Finder->Network or "ping hostname.local")

2) On the "master" mac

  • a) Enable screen sharing (only needs to be done once) noting the hostname and/or IP address (hostname looks like "mymacbook" or "mymacbook.local" and IP's look like "10.1.1.5" or "192.168.0.100", you'll connect to this later from the controller mac)
  • b) Run your quartz composition
  • c) open the editor (⌘+e) and move to the peripheral monitor (eg. laptop screen)
  • d) open the visualisation (⌘+v) and move to the target display (eg. projector)
  • e) full screen the visualisation (⌘+t)
  • f) move the cursor to the editor and click it to give it focus

3) On the "controller" mac

  • a) Start "Screen Sharing" ('/System/Library/CoreServices/Screen Sharing.app' recommend making it a dock icon, and memorising the other mac's hostname)
  • b) Connect to the "master" mac (⌘+n in screen sharing app, then input "master" hostname or IP you noted when setting up screen sharing and then connect)
  • c) Once connected, you will be prompted to log in, this will use the "master" mac's login credentials (you may be prompted twice, depending on your security settings, once for the initial connection, then second to login locally)
  • d) Once connected you should see the dual remote display setup locally!

4) That's it! Feel free to play around, it's fairly robust (in that local crashes or network failure won't affect the "master" mac)

Power Tips

  • Faster network is better, if you can get a LAN cable between the rigs u rock
  • Consider running the editor full screen once you have your setup stabalised
  • You can also connect screen sharing via iChat; network browsing in Finder (share screen link below search box); Finder -> Go -> Go to Server... (ip address or hostname [eg. servername.local]) or use your google fu
  • You can select only one display from the remote machine to be displayed locally via the Displays menu in the Screen Sharing app (I think it's called this, my other machine doesn't have a secondary monitor atm); this is useful for both reducing bandwidth usage (by disabling the visualisation monitor) or for just setting up another machine to show the video of the master (bandwidth permitting!)

gtoledo3's picture
Re: Live remote controlling Quartz Composer (with editor)

How do you find the latency?

cradle's picture
Re: Live remote controlling Quartz Composer (with editor)

It was very acceptable for the type of thing I was doing - I was renoodling and creating non active portions of the composition - and then would do a transition once I knew things were working. So I never had to worry about 'real' latency (as you might, say, if you were trying to sync your controls with an event that happened in real time, I'd have to test that separately).

But in terms of interace latency, I'd say there was very much next to none - the cursor itself seems to be rendered locally, so you never notice any latency on it, and the latency of performing an action seems to be almost exactly whatever the network latency is (if felt <100ms on wireless, probably <30ms if you were wired, but no firm evidence for this).

That being said, turning off the secondary monitor display (selecting just one display, the editor one) tremendously speeds up the updating of the screen cos you have more bandwidth for just what you're doing in the editor.

After about 15 minutes or so of using it, I sometimes forgot that it was remote, so it's quite good.

But for real time reactive - I'd probably guess that unless you were on a wired connection you wouldn't be able to rely on consistent low latency (as you would expect on WiFi) but I didn't test this as I didn't need real time performance latency - in a figure of speaking.

dust's picture
Re: Live remote controlling Quartz Composer (with editor)

there is a vnc server quartz plugin @ quartzcomposer.com

i can't say if its any better than the built in vnc your using above but at least maybe a direct to qc viewer approach. also it may be possible to run the vnc server off screen letting you use the built in features for the editor without having a dual head setup.