IPC (Inter-Process Communications) allows you to send commands between programs to syncronize operations. It does this by listening on a network IP Port Number for incoming messages via a network router (hard wired or wireless ).
You can send IPC commands (see command list below) from one program to the other (ex. RunScript 123). This allows you to synchronize audio and video programming with split second timing. The program that receives the command will execute the specified Script. If you run both programs on the same computer, you do not need to be connected to a network.
When Video Mill and Sound Mill Reside on the Same Computer
In this case, a network router is not required for IPC. Use the standard Loopback IP Address (ie 127.0.0.1) for setup of the IPC clients.
Video Walls with IPC
In a video wall setup, it is unlikely that one computer will be able to drive all the pixels required for all the displays. So you can chain together multiple Video Mill computers (via IPC). Each Video Mill instance will drive multiple displays (the actual number depends on CPU power, display resolution size, media dimensions, and other factors). The master Video Mill instance can control the subordinate Video Mill instances via IPC commands and automation Scripts, as well as drive a number of displays. You can get a mapping diagram of all Windows Desktop displays via Tools > Displays > Extended Displays Diagram.
Also see the Benchmarking Performance section to determine the maximum number of simultaneous videos your computer will handle.
Figure 2. IPC Comms with Video Wall
Remote Media Manager (RMM)
Remote Media Manager (RMM) is an add-on tool for Video Mill and Sound Mill. It serves as a Remote controller app (over a local network, wired or wireless) to send IPC Commands for basic control and management of both programs. See the RMM product page for details. IPC configuration for RMM is identical to that of Video Mill and Sound Mill.
Note: RMM is NOT required for direct IPC connections between Sound Mill and Video Mill.
The following are the basic set-up steps to use IPC.
IPC Client Profiles - The program initially creates two IPC Client Profiles using the factory default settings.
Origin Client - This defines the IP address and Port Number that the program will listen to on the local machine.
Remote Client(s) - These clients define the the IP address and Port Number that each remote program will be listening to. You will create one Remote Client for each program that you will send/receive messages to/from.
IPC Send External Program - And IPC Send external program definition will be created for each Remote Client that you create. The automator uses this to send commands from a Script Step.
Script Step to Send IPC Command - To Send an IPC command from a Script, you Add a Start External Program Step to a Script using the IPC Send external program. See the Step to Send IPC Command section for details.
Start IPC - After completing the configuration steps above, you will start the programs on both (all) computers, then Start IPC in each program. Then test the configuration.
IPC Controls - Menu Items
Menu Locator: Media List Editor > Tools > Automation > IPC Inter-Process Comms.
Start IPC - Starts and initializes IPC network connections. If IPC is currently running, this will Stop then Restart IPC to reinitialize it. IPC must be started on all Client programs before the program can send or receive messages. This will initialize an IPCSender and Receiver for the program based the IPC Client Profiles. You can set it to start on program start-up in the Options dialog.
Stop IPC - Stops IPC and releases network connections and resources.
View IPC Status - Pops up a summary of current status of IPC connections and IPC Client Profile settings. This does some error checking as well.
Show Current IPC Status - Shows the current IPC status as a message on the program status bar.
Send Adhoc IPC Command - See section below.
Edit IPC Origin Client Profile - Opens the IPC Client Profile Editor (see below) to edit the Origin Client profile.
Manage IPC Remote Client Profiles - Allows you to Add, Delete and Edit Remote Client profiles.
IPC Clients Reset - This deletes ALL Client Profiles. Then creates one Origin client and one Remote client set with factory default settings.
View IPC Client Profiles - Shows a summary of all of Clients configurations.
Port Client Definitions - (Optional) These provide a method to save/restore IPC Client Definitions (Origin and Remote Clients) for quickly swapping between Definitions.
These are stored by default in your User Documents folder, but you can save them any where. The file extension is 'IpcClientDefs'.
Import - Imports (restores) all IPC Clients from a file.
Export - Exports (saves) all current IPC Clients to a file. Name the file a logical name that indicates what the clients are used for. (ex. "Palace Theater clients" or "Soundmill client only")
View IPC Log - Shows the running log of IPC commands sent and recieved, plus errors when encountered. Useful debugging tool.
Reset IPC Log - Resets IPC Log clearing all messages from the log.
Add IPC Send External Program - Adds the IPC Send External Programs, one for each Remote Client. This is generally done automatically by the Manage Remote Clients operation above.
Create Cue List for Remote Media Manager - Pops up the Cue List Creator to create a Cue List that can be exported for use with Remote Media Manager. You choose the Sound Items and Scripts to include in the Cue List, then Export it to a file.
See menu items above for functional descriptions.
IPC toolbar - Buttons (from left to right): Start IPC, Stop IPC, Send Adhoc IPC Command, View IPC Status, View IPC Log, Reset IPC Log, Show IPC Status
IPC must be Started on both programs for IPC to work.
Figure 4 shows the basic configuration used to send a command from one program to another program using the Remote Client profile.
All IPC commands sent and received are logged to the IPC Log. You can encrypt the message traffic that goes across the network. If one client uses encryption , then all remote clients must use encryption which is set in the Automation Options.
Origin Client - Defines the network IP address of the computer the program is running on and the chosen Port Number that the program will listen on. The Origin IP Address is always the same as the local computer's Private Network IP address.
Remote Client - Defines the network IP address and Port Number of the remote program that commands will be sent to. There must be one Remote Client profile for each remote program that you want to send/receive commands to/from.
Figure 4. Example: IPC Client Configuration For VideoMill and SoundMill
Figure 5. IPC Client Profile Editor
Figure 6. Example: IPC Client Configuration VideoMill and RMM
Remote Media Manager (RMM) Remote Client
RMM needs to receive Media Events to operate correctly.
Some IPC commands such as Play or RunScript will report Media Events back to the client that sends the command. Media Events included "Media Start" and "Media Stop". See MediaEvent IPC command syntax. If you want a Remote Client to receive these MediaEvent replies, check the 'Subscribe To Media Events' checkbox. VideoMill and SoundMill ignore Media Events, so do NOT check this checkbox for their remote clients.
Figure 7. IPC RMM Remote Client
IPC Client Profile Editor
The IPC Client Profile Editor (Figure 5) allows you to configure the Client Profiles. After edits are made, you need to Restart IPC for edits to take effect (Use Start IPC to restart).
Client Profile Settings
Profile Name - A name that logically identifies the Profile. Used for menu selection so keep it short and descriptive.
IP Address - This is the network IP Address of the computer that the program is running on. See the difference between Private Network IP and Loopback IP below. External Internet IP addresses may also work depending on your firewall settings, but only if you have a special need. The Private Network IP is the far preferred IP to use for security and speed reasons.
Port Number - Sound Mill and Video Mill each "Listen" for IPC incoming commands on a designated network Port Number.
Subscribe to Media Events - Video Mill and Sound Mill can send unsolicited media events (ex. Media ended) to RMM. When configuring the RMM Remote Client (Figure 5 and 6) in either Video Mill and Sound Mill, remember to check this checkbox. RMM needs visibility to these events. ONLY check this checkbox on the RMM Remote Client.
Disable Client - When checked, this client will NOT be included when you Start IPC. Panel background is darkened when Disabled as a visual aid.
Private Network IP - This button gets the computer's Private Network IP (IP assigned by the router). Computer must be connected to the router (cabled or wireless) for this action to work. If this button fails, you can open a Windows Commmand Prompt and enter "ipconfig /all". Look for the IPv4 Address (or IPv6 if you are using IPv6 address mode).
Loopback IP - This will set the IP Address to the standard Loopback IP Address (ie 127.0.0.1). ONLY use this when you have Video Mill and Sound Mill running on the same computer. It eliminates the need to have a network router. In ALL other cases, use the local Private Network IP address. Loopback IP address provides a small performance increase for message transfer because it bypasses the system network transaction layer.
Port Number - Pops up a selection list to pick one of the three Default Port Numbers listed below. Also sets the Profile Name based on the selection.
Validate Client - Checks all inputs for valid syntax and values. Some errors will not be detected until IPC is started.
Router Setup and Network IP Addresses
Some routers allow you to lock the assignment of a specific Private Network IP Address to a specific computer connected to its network. So when the router is restarted, it will assign the same IP address to that computer. This is a good method to prevent your IPC client profiles from breaking. If the Private Network IP Address for a computer changes by router reassignment, you will need to make changes to your IPC clients to reflect the IP address changes.
About Port Number
For simplicity you should be consistent when assigning Port Numbers to clients. Below are the default values, but if these ports should conflict with another program on your computer, pick different numbers. Valid ports are any number between 49152 to 65535. Here is how to see what ports are in use on your computer.
Default Port Number
Video Mill - 52011.
Sound Mill - 52010.
Remote Media Manager - 52002.
FreeStyler Portal - 52012.
See previous section "How IPC Works" for an example of how to configure the Origin and Remote clients.
Testing IPC Configuration
You should always test the IPC connections before show time.
The first time you connect to a new network, the network firewall may pop up a challenge dialog asking you to Allow the program to send network messages.
To test the IPC Configuration, first Start IPC on both (all) Video Mill and Sound Mill instances. Send a Ping command to each remote client program and watch for the return message that the Ping was recieved on the remote client. If you don't get a return Msg, IPC on the remote client likely encountered a problem on start up. On the Remote Tools toolbar, select a remote client then click the Ping button.
IPC - Error Messages and Solutions
There are a few common error messages that may be reported. The Windows error messages may not be obvious in describing the error.
Always check the View IPC Status menu item when errors occur and the program session Log and the IPC Log may also report additional errors that may not show up on the program status bar.
Things to Check
After fixing a Client Profile error, you can usually just restart IPC by clicking the Start IPC menu item.
Is IPC started on both the Origin and Remote Client?
Are the Port Numbers set correctly in the Client Profiles?
Are the IP Addresses set correctly in the Client Profiles?
When using encrypted messages, is the "Encrypt Messages" option set on all clients?
Common Error Messages
Find any errors in the Client Profile and make corrections. Then restart IPC on any client where client changes were made.
IPC: Parm is not a valid command. Message: IPC: Parm is not a valid command: rrM7MR7DBglXosgxPe+nJQA==. Problem: Will occur when IPCEncrypt Messages option is set on the sender client but not on the receiver client. The unreadable string is encrypted data that was not decrypted upon receipt.
Solution: Ensure that the "Encrypt Messages" option set on all clients. Then restart IPC.
Connection was forcibly closed Message: An existing connection was forcibly closed by the remote host. Problem: Will occur when IPC is not Started on the Remote Client.
Solution: Check the Port Number in the Remote Client Profile. And check to see if IPC is Started on the Remote Client.
Invalid pointer address Message: The system detected an invalid pointer address in attempting to use a pointer argument in a call. Problem: Usually occurs when IPC is not started on the Remote Client; Or the port number is not correct.
Solution: Check the Port Number in the Remote Client Profile. And check to see if IPC is Started on the Remote Client.
Address Incompatible Message: An address incompatible with the requested protocol was used. Problem: It's likely that one (or both) Client Profile(s) has an IP Addresses not consistent with the current addressing mode in use (IPV4 vs IPV6).
Solution: See which addressing mode in use (IPV4 or IPV6). Then check the Client Profile to see if they are using correct IP Addresses.
End Point creation failed Message: Remote Receiver End Point creation failed for: 0.0.0.0 Problem: The IP Address for the Remote Client Profile has an invalid value.
Solution: Update the IP Address.
Useful Windows Network Commands
Open a Windows Command Prompt window to run these command line tools. Go to Start > All Programs > Accessories > Command Prompt .
Netstat - Netstat /a will list all active IP port connections on the computer.
Ipconfig - Ipconfig /all will list all Windows IP Configurations for network attached devices on the computer. (includes device IP Address)
IPV4 vs IPV6 Considerations
Recommendation: We recommend that you use IPV4 addressing mode unless you have a critical reason to use IPV6. We found no noticible performance difference in our testing of these addressing modes. IPV4 IP Addresses are easier to recognize (fewer characters) so debugging configuation problems will be easier when using IPV4. IPV4 is the default factory setting.
If you change this setting, you will need to edit your clients to set new IP addresses.
IPC will run on both IPV4 and IPV6 networks. You can change the IP addressing mode in the Options (requires a program restart).
IPV4 vs IPV6 - Internet Protocol version 4 (IPV4) and version 6 (IPV6), are different specifications for representing an IP Address.
Example IP Addresses:
Loopback IP Address - This value is based on IP addressing mode:
Things you don't need to know, but are provided for the extreme techies who want the details.
IP Address - Internet Protocol address uniquely identifies a computer on a network.
Loopback IP Address - Refers to the routing of messages back to the originating computer.
Port Number - A network communications end point. It must be unique port number for the computer.
Network Address Translation (NAT) - Allows multiple devices to connect to a public network using the same public IPv4 address.
IPC sends and receives UTF8 formatted text strings using network UDP (User Datagram Protocol) packets.
NAT Traversal for the UDP Client instance is enabled on Windows 10/8/7/Vista but NOT Windows XP. NAT traversal may be provided using Teredo, 6to4, or an ISATAP tunnel. NAT traversal is not a supported feature (meaning it is not included in our test plan). But it should work based on Microsoft documentation.