monitor

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!)

A second instance of the viewer window

elementdns's picture

Hey!

I'd like to create a second viewer window for compositions, to have a small representation of my compositions.

I think the Quartz Performer is a good example of what i'm looking for, but the preview window should be positioned in the original viewer window. (a "floating" stand alone version might also be possible.

I'm trying to get results by looking at the Quartz Perfomer sources, but it hasn't really worked so far. too sad the interface builder is a bit too cheesy to go the easy way, ;)

of course one could create the same patches etc in one comp, only smaller, but that would be a performance killer i think..

who has an idea?

take care.