Monthly Archives: October 2009

PowerPoint 2007 Network Controller

Update:  The add-in described in this post is no longer available.  The concept of controlling PowerPoint over a network overlaps with  functionality used in Vista’s multi-screen background generation product, CanvasMaster, released in 2001.

I’ve managed to create  an add-in for PowerPoint 2007 that allows presentations to be controlled over the network.  The app is pretty basic, but is particularly useful for automating demos or integrating PowerPoint content playback with other systems.  Below is a screenshot of the add-in toolbar:


As it’s name suggests, the little light bulb labeled ‘Control Enabled’ toggles the add-in on or off.  When enabled, the add-in will listen for network requests on the UDP port configured under the ‘Configure’ icon.  When a packet is received, it is parsed by the network command processor and the enclosed command is executed.  The ‘Supported Commands’ icon on the toolbar opens a dialog which shows the available commands for the installed version of the add-in.  At the time of this writing (build 1.0.6), the available commands are as follows:


Pretty simple, eh?  While its true that the generic control protocol in this add-in lends itself to pretty much any network enabled controller, I originally started working on the concept as a solution for us internally to tightly integrate PowerPoint presentation playback with Spyder scripting loops at trade shows.  The first attempts didn’t really go anywhere, as the available PowerPoint interop capabilities from Visual Studio were fairly cryptic.

A month or two ago I was emailing with a friend over at InformationsTeknik (Hi Rene!) who was looking to build the same sort of application, and so I made an unfinished sample project that had this basic functionality.  A few sleepless nights later, and voila, I have it wrapped up into a redistributable installer.

I was hoping to have my website finished enough to share a link to the associated project page, but it still has a little way to go, and so while I’m using my site to host the installer download, I’ll have to come back and update this page later with a link to a full-blown project page.  In the mean time you can download from the link below:

Download the PowerPoint 2007 Network Controller (Version 1.0.6)


Control Client / Test Utility Application

clientapp_thumb2When the PowerPoint network controller is installed, a client application will be added to the start menu which can be used to send commands to a machine running the PowerPoint add-in.  This can be either the local machine or another PC on the network.  To run this application, look in the programs folder under the start menu for ‘PowerPoint Network Control’.  A debug window on the right side of the application shows transmit and receive messages in real-time; you’ll notice that every command sent to the PowerPoint add-in will result in a response.  Users building custom control applications to interact with the add-in can use this window to see the specific responses that will be returned from the add-in for any given command.

Using Spyder to Control PowerPoint

Well if you’ve read this far into the blog and you have a Spyder system, this will be a little bonus.  Spyder can easily control PowerPoint when used with the network controller add-in by simply creating a few network command function keys.  The screen shots below should be self-explanatory; a network function key is generated to ‘wrap’ each of the available control commands.  These function keys can be executed directly, or (more importantly) can be linked into script cues to tightly couple command key recalls with the PowerPoint content.  It’s like having a SourceMaster for PowerPoint!

Big Disclaimer:  This software is not maintained or supported by my employer, Vista Systems.  Please do not try to contact Vista for technical support for this application.  Post any questions or comments on this blog post, and I’ll try to get back to you as time permits.  I’ve used this software quite a few times now, and it’s worked flawlessly.  If your planning to use it for anything ‘mission critical’, make sure you do your own adequate testing in your environment before going live with it.

Next Slide Function Key
Previous Slide Function Key
FunctionKeyNext_thumb6 FunctionKeyPrevious_thumb7
Home Function Key

 What’s Next for this Project?

I think it makes pretty clear sense to add the ability to load, start, and stop presentations remotely using network clients communicating through the add-in.  Currently the add-in requires that the PowerPoint presentation being controlled be manually started before the commands will work.  If you have ideas about how to make this better, or have any comments about the project, post them in the comments for this post.

X20 Blend Loading Improvements

With the upcoming Vista Advanced 3.3.1 software, we’ve made big improvements to both the blend loading time and the user experience when working with the blend controls in the UI.  The X20 blending and black level is achieved by loading a 32-bit bitmap image onto each output, which is essentially layered over the top of the output video.  Using internal USB image transfer, the load time associated with each blend or black level change can be several seconds.  A still server reduces the load time substantially, however you can see in the figure below that we were able to beat even the still server time.

Blend Load Times

In cases where only left and/or right blends are enabled (which is all cases currently since Spyder and Spyder X20 don’t support vertical blending) each line of the still server image is identical.  Since the majority of the time penalty in loading blends was at the image transfer, we opted to write only the first line of the blend to hardware, and enable a new mode in firmware that would cause that line to be written to every line of the output.  Voila, blend loading is now under 500ms.

In the user interface we had another problem with the blend controls, specifically the curve adjustment sliders.  All image loading occurs asynchronously, and there was code disable the blend adjustment controls while any image was being loaded (a carryover from Spyder).  Since X20 blends are loaded as images, as soon as a slider started to move the entire control would become disabled.  This has been corrected, and will be available in the 3.3.1 update this week.

Car PC Weekend Progress – 10/19/2009

Made some good ground on the car PC this weekend; managed to get the Phidgets 8/8/8 board installed, and currently have the (inside) temperature probe and light sensor connected up.  Also got an external USB plug installed on the passenger side, right above the cigarette lighter plug. 

I also mounted the front bumper sonar sensor into a custom aluminum housing I made out of sheet metal and coated it with silicone to make it water resistant.  The picture isn’t particularly impressive, but I think it’ll work out nicely once installed (next weekend?).  The metal cross it’s mounted on will be folded and used to affix it to the lower front grille on the expedition.

USB Plug
USB Jack 
Phidgets Board 
Light Sensor
Light Sensor
Sonar Sensor
Depth Sensor
(Not Installed)