SUCCESS!
I have a movie playing perfectly synchronized on two of my players and now have an application on my Mac that launches any movie I want on multiple players.
If any Mac users really wants to do this, here's how. It will take a little bit of prep on your web-interface to Kaleidescape, and a bit of editing of an AppleScript file, but it takes no programming knowledge at all.
The specific instructions below will only work on a Mac. If you're using a PC, rather than a Mac, you should be able to do something roughly equivalent using appropriate PC tools, but I can't help you much on that.
Here's what you need to do:
1) PREPARING YOUR SYSTEM
A) Setting a hard-coded IP address:
You need at least ONE of your Kaleidescape components configured with a hard-coded IP address. Depending on who did your install, this may already be the case, but you need to check. It doesn't matter which of your devices has the hard-coded IP address, but there must be at least one: a server, a player, a reader... makes no difference.
Go to your installer web interface, choose a player or server, press "Settings" and then go to the "Network" tab. If the radio button "Use the following IP configuration" is selected, with details filled into all the address/gateway fields below, then you're all set. Write down the IP Address of that component, and go to step B below.
If the device you picked is NOT set to a hard-coded IP address, check your other Kaleidescape components. If none are set this way (all of them are set to "Obtain IP configuration automatically using DHCP") then you won't be able to do this until you set at least one to being a hard-coded IP address. Check with your installer if you're not comfortable changing this. Changing it without knowing your system and network details MIGHT cause some of your remotes or Crestron-type interfaces to stop functioning.
B) Setting Device IDs for your players:
Kaleidescape allows you to set something called a "Control Protocol Device ID" (CPDID) for each of your components. You also do this on the installer web interface.
For each player you want in the "SyncPlay" group, go the "Settings" dialog for that player in the Installer Web Interface, choose the "Control" tab, and see if there's already a CPDID assigned. It will say "None" or have a number set in the box. If there's already a CPDID assigned for the player, write it down... do NOT change it, it will probably cause your Crestron or other controllers to stop functioning if you change it.
If it's set to "None" (as it probably will be in most Kaleidescape setups), pick a number and set each player to a different number.
Use whatever numbers you like, but be sure they're distinct numbers. Write those CPDID's down for each of your players.
In the examples you see below, I set my first player to CPDID 10, and my second to CPDID 20.
C) Creating a "SyncPlay" collection:
Next you create a Kaleidescape Collection for the movie(s) you want to synchronize. My simplistic script simply picks the first movie in this collection, so you'll probably only want one movie in this collection at any given time.
The advantage of doing it this way is that once your system is properly set up, you won't need to edit the AppleScript commands to simply change the movie you want to synchronize, you just remove the old movie form this collection and add the new movie, and re-run your script.
Go to your User Web Interface for your Kaleidescape, go to the Movies tab, press "Create a New Collection" at the top of the screen, and give it a name. I used "SyncPlay".
Add any movie you like to this collection.
2) CREATING YOUR APPLESCRIPT TO TRIGGER YOUR SYNC-PLAY FROM A MAC:
OK, Your system is properly configured now to handle the commands we're going to give it from a Telnet session. You could choose to open "Terminal" on your PC or Mac and manually issue commands to your players to do what you want, but that involves very carefully structured, somewhat obtuse commands typed into the Terminal window.
To make this easier, I'm going to use AppleScript (built in on all recent Mac operating systems) to automate the steps for us.
What we're going to do is tell each player (using the CPDID's established above in step 1B), to go to the SyncPlay Collection, and play the first movie.
If you've read the Kaleidescape Control Protocol Reference Manual, we're just going to use the "GO_MOVIE_COLLECTION" command and then issue a simple "PLAY" command to each player in rapid succession.
A) CREATING YOUR APPLESCRIPT FILE
You want to create an AppleScript file that has the appropriate instructions for your Kaleidescape system. You'll need the hard-coded IP address of at least ONE of your components that you got in step 1A above, and the two or more CPDID's you got (or assigned) in step 1B above.
Open your AppleScript Editor. (If you've never done this, go to your Spotlight Search menu in the upper-right corner of your menu bar and type "applescript editor" into the search box.)
Type the following lines into the Editor window,
but
- change the IP address I show in RED below to your hard-coded IP address of any of your Kaleidscape components that you found in step 1A above.
- change the CPDIDs I show in BLUE below to your CPDIDs you found or assigned in step 1B above. If you want more than two players synchronized, add the appropriate lines for the other players.
Code:
tell application "Terminal"
activate
do script "telnet [COLOR="Red"][B]192.168.1.80[/B][/COLOR] 10000" in front window
delay 5
do script "[COLOR="Blue"][B]10[/B][/COLOR]/1/GO_MOVIE_COLLECTION:SyncPlay:" in front window
do script "[COLOR="Blue"][B]20[/B][/COLOR]/1/GO_MOVIE_COLLECTION:SyncPlay:" in front window
delay 2
do script "[COLOR="Blue"][B]10[/B][/COLOR]/1/PLAY:" in front window
do script "[COLOR="Blue"][B]20[/B][/COLOR]/1/PLAY:" in front window
do script "quit" in front window
say "SyncPlay Playback Started"
quit
end tell
NOTE: the "10000" after the IP Address is absolutely critical. That's the port number that Kaleiedescape devices listen on for their commands. This must be in that Telnet command.
NOTE: If you don't want the creepy computer voice announcing from your Mac that "SyncPlay Playback has Started", just delete that "say" line from your script.
Now save that AppleScript file using "Save As..." and ensuring the format is "Script". Save it to anywhere you like... your Documents folder is fine. You'll need this script file if you ever want to edit the AppleScript above.
B) TESTING YOUR SCRIPT
Press "Run" from the AppleScript Editor. You should see a terminal window open and stuff happening. The players should start the movie, and your Mac will announce that SyncPlay playback has begun.
TROUBLESHOOTING: If it didn't work:
- check your script carefully to see that it maches the above text, including that critical 10000 number that is in line 3.
- double-check your IP address in line 3, and your CPDIDs
- be sure you actually HAVE a collection called "SyncPlay" and a single movie added to that collection.
- be sure your parental controls aren't blocking that movie from some of your players
3) CREATING A COMPILED EXECUTABLE APP
This step is optional, but adds some elegance and ease to the process.
You could always just run your working script right from the AppleScript Editor when you want to launch your SyncPlay movie, but easier is to take this last simple step and turn your tested and working SyncPlay applescript file into a full executable application. Then you can just leave it on any Mac in the house and double-click it and your SyncPlay will start... no wacky AppleScript Editor to open, just a double-clickable application.
- Open your working AppleScript file in the AppleScript editor. (If you're doing this right after step 2B above, then the editor window is still open and ready for this step.)
- Choose "Save As..." from the file menu, set the File Format to "Application" and give it a name like "SyncPlay Start". Save it to your Desktop or wherever you like.
Now you have an application sitting on your desktop that will play a given movie on all the Kaleidescape players you have selected.
Once you start to understand Telnet'ing in to your Kaleidescape system and issuing commands, you could do this from an iPad app as well, adapt it to a PC, or add more flexibility and error-checking into the script.
This is a VERY basic script. It could be improved for more robust operation... for instance it could ensure that all the players are on and not in standby mode, it could make sure the players are responding and report back if they weren't, etc. Feel free to make it more robust and flexible to suit your needs!