MultiScreener 0.92

May 2008, by ZLP


Check for updates: http://www.zachpoff.com


Summary:

MultiScreener is a set of freeware applications that synchronize the playback of Quicktime movies on multiple computers, using a local network to tie them all together.


It is intended for multi-screen video walls, multichannel art installations, and the like. (It's an alternative to Pioneer DVD Players and expensive synchronizer hardware.) There are two applications: Server and Client. The server plays a movie and sends position information over the network. Each client compares its position to the server's and changes its playback speed to compensate.


Looping is available, and all settings are automatically saved for unattended startup. MultiScreener can output to the computer screen in fullscreen mode, or to external video devices like firewire DV. There is no native resolution or frame-rate, so all Quicktime video formats are supported equally.



Details:

The server broadcasts its messages via multicast, so no knowledge of server/client IP addresses are required. Normally, the client will adjust its playback rate by tiny increments, smoothed over time to avoid audible pitch changes. If the server suddenly jumps to an unexpected frame (like when a loop occurs), the client changes sync strategies, immediately jumping to the server's frame before resuming the normal syncing method. If the Server pauses on a frame, the client will "hover" around that frame waiting to continue. If the server disappears, or the network breaks, the client will keep playing for a moment and then pause. When the server reappears, the client will resync to it immediately. (So clients and the server can be launched in any order, added and removed at will. It will just work.)


The video is played full-screen, so any data projector or computer monitor can be used for presentation. For DV movies, the software can send the video out the firewire port instead of presenting it on the screen. Then a camera, deck, or converter box can be used for presentation. (This provides the best quality and lowest CPU load for DV or other special formats.) All frame-rates and dimensions are supported (including NTSC, PAL, HD formats) with no unnecessary scaling, up to the limits of your hardware and Quicktime capabilities. The graphics card does the scaling directly from the movie to the screen via openGL. (The software has no "native" format, although the small video preview window is locked at 320 x 240.) Movies should be prepped to match your output device (computer screen, DV over firewire), because the software will scale the image to fit the screen. That means that anamorphic widescreen movies will look wrong on 4:3 monitors, and 4:3 movies will look wrong on widescreen monitors. (Try setting your monitor resolution to a ratio that matches your movie, or render the movie itself to match your display ratio.) Also, your server and client movies should be the same format. All of the math is based on Quicktime "time-units" which are subdivisions of each frame. Different movie formats have different numbers of units per frame, so matching formats are crucial to ensure that the server and client speak the same language.


All settings are saved automatically to an xml preferences file. You can launch it from a login script so that when the computer starts, it automatically loads your movie, recalls your settings, and goes into fullscreen mode. Great for unattended exhibitions. If you want to programmatically control its behavior, you can edit the xml to change the preferences. MultiScreener will read the file on the next launch.


MultiScreener (and its "source code" MAX/MSP/Jitter patch) is released under a Creative Commons Attribution-Noncommercial-Share Alike license, which means that you are free to modify and redistribute it (with attribution) provided that all derivative products remain non-commercial. (see http://creativecommons.org/licenses/by-nc-sa/3.0) It was developed in the MAX/MSP/Jitter visual programming environment ( http://www.cycling74.com ) which will be required if you want to edit the source code. ($$$)



Caveats:

External video won't work unless your movie is formatted to match your device. (You can't output a 320x240 MPEG4 over DV NTSC Firewire.)



Change Log:


Version 0.92 (May 09, 2008)

Fixed: reduced CPU load on client and server by limiting GUI updates and slowing down non-critical math

Fixed: The window in which normal tracking operates is now (+/-) 1/4 second, regardless of movie frame-rate or Quicktime time-units/second. If the sync falls outside this window then we switch to emergency mode and jump directly to the server's frame (triggering the new "Way Off!" indicator on the way).

Added: de-interlacing (uses same method as Quicktime player - nothing fancy).

Added: "Way Off!" indicator to indicate when the client switches from normal to emergency sync mode

Added: numerous advanced options are now acessible via XML prefs:

"mute" options: 0, 1 [default 0] -- This turns off the movie's audio.

"overdrive" options: 0, 1 [default 0] -- Sets the MAX/MSP scheduler to operate in "overdrive" mode. In this mode, internal timing is less susceptible to interference from drawing the screen, moving the mouse, etc. But it may have a negative effect on stability in some cases.

"interrupt" options: 0, 1 [default 0] -- (Requires overdrive: 1) Sets the MAX/MSP scheduler to operate at audio interrupt - may help solidify timing on slow computers, may not.

"transmit_interval(ms)" options: number of milliseconds [default 100] -- How often the server sends its position over the network. The default works fine but slower values might be better for slower computers/networks

Added: software license (Creative Commons Attribution-Noncommercial-Share Alike)


Versions 0.8 - 0.91 (May, 2008)

Internal test versions


Version 0.7b (April 9, 2008)

Fixed: problem with client not entering fullscreen.


Version 0.7 (April 8, 2008)

First release