When do you need a multi-machine system?
When you need multiple independent video outputs, but producing them simultaneously is too much load for a single PC.
The machines can render completely different contents or the different views of the same content. For example, in a virtual studio system each machine renders the view of a particular camera, or in a panorama view each machine renders a slice of the image and so on.
There is a central controlling machine that itself can render as well, and in the same time it can control several satellite machines. Satellite machine are called “remote renderers” or “renderers” in Aximmetry.
The controlling machine runs a normal Composer, and you can edit and control it through the usual Flow Editor or Control Boards. While the satellite machine runs a slim application named Renderer. It’s a pure render engine, does not provide any UI, only receives rendering command from the controlling machine.
For the controlling machine it’s recommended to use the usual dual monitor configuration. The renderers normally only need a single monitor - of course it can be a shared monitor using a KVM system.
Setting up the renderer machines
Switch to one of the satellite machines.
The Renderer application cannot be started directly. We have to start the Launcher instead. Launcher has to be running all the time. It’s only task is to start, kill or restart the Renderer upon the command of the central machine. This separation serves the safety of the system. If something happens with the Renderer, it freezes or crashes, we can handle the situation remotely through the Launcher.
So first start the Launcher.
Launcher also has a Startup Configuration where you can modify the network ports through which the various communications happens. In most cases you can leave them on default.
Click Start. The Launcher’s minimalist UI appears. It's essentlially a log window only. The important info here is in the header: the name and the IP (or IPs if you have multiple network cards) of the machine. Any of these can be used later when you set up the controlling machine.
Though the Renderer itself cannot be started directly, we must be able to setup its inputs and outputs. For this start Renderer Config.
A Startup Configuration window appears which is mostly identical with the Composer’s one. Suppose we want an SDI output an two SDI inputs, one for a camera, one for a playout coming from the studio system.
Suppose we use the standard assignments: output #1 is a preview, output #2 is the final picture that should go to an SDI output. If you use a separate monitor for each renderer machine you can use them as preview monitors. In this case we can setup the usual configuration:
If you do not need a preview monitor per renderer, or you use a KVM system, it’s not necessary to assign any monitors. You only need the final output on the SDI port:
In the Device Mapper we can setup the two SDI inputs as usual:
We have to make an important decision here.
The simplest way to use the multi-machine system is to keep the project folders on a single machine. It can be the controlling machine itself, or a dedicated server machine. We can share the folder containing the projects, and set it as the Project Root both on the controlling machine and the renderer machines. We can either use a network drive or a direct network path.
In this example the projects are located on the controller machine in the shared folder Projects:
But there’s another way. You can keep a copy of the projects on each machine. When you make a modification of the scene on the central machine, you can easily distribute the changes to the renderer machines using Composer’s Remote Synchronizer panel. We discuss this tool in a separate documentation.
Both approach have their advantages and disadvantages.
For a simpler start we recommend using the network folder approach.
The click Save. The setup window closes and the Renderer is ready to be started by the Launcher.
Do the above setup of Launcher and Renderer for all satellite machines.
Setting up the controller machine
On the controller machine you use the regular Composer application. You can choose that you use the controller machine only for controlling or it can be one of the rendering machines as well. The latter approach can be advantageous, because you can do the visual setup (for e.g. the placing of the billboards) on the preview monitor in the usual way.
Start the Composer.
Input(s) and output(s)
If you want the machine rendering, setup the inputs and outputs as usual (presumably for one camera input and one SDI output, similarly to the satellite machines).
Go to the Remote Renderers section.
If you only use this machine as a controller turn off Local rendering, otherwise leave it on.
Turn on Remote rendering. Later if you want to use this machine for both content editing and for rendering the live show you can turn on/off this switch at will. That way you won’t have to start all your satellite renderers when you only want to make a graphical change in your virtual set.
Then list your renderer machines either by their names (if your network setup allows it) or by their direct IP addresses.
Then you have to assign in identifier index to each of them. #1, #2 etc. machines will be referred later on your control boards as Remote #1, Remote #2 etc.
If you decide not using one of your machines in the upcoming session, you don’t have to delete its name from the list, simply turn off its index. This way later you can easily switch it on back.
If the shared project folders are on this machine then leave the setting as it is. If they’re on a separate server you have to set the project root to that machine.
Click Start. You’ll see the Remote Engine's Status popup as the renderers are starting. Composer UI won’t show up until all the renderers are started.
Open Preferences and go to the Channel Matrix section.
By default you’ll see the list of all outputs of all the machines and you can assign your channels to each of them individually. (If you’re not familiar with what are channels and outputs please watch this consult Outputs and Channels, Multi-GPU).
In special projects this gives you a total freedom to send specific content to all individual outputs. But in the case you want to render the same content on all machines we recommend using the more simple Unified multi-machine setup instead. That means that Channel 1, 2 etc. always goes to Output #1, #2 etc. on each machine.
Setting up the Control Boards
Some of the stock control boards are prepared for use in multi-machine environment. For e.g. if you are using virtual cameras use VirtualCam_A-B_Preview_4-Cam.xcomp. We’ll show this setup as an example now.
First of all you have to assign all the INPUT rows to a specific machine. The system allows arbitrary configurations, for e.g. each machine renders for two cameras. But we recommend to stick with the usual one machine - one camera setup.
The assignment is made via the Engine property of each INPUT panel:
IMPORTANT: the Input Device property always refers to the devices of the selected remote machine. Since you probably assign camera input to #1 on all machine you have to select Mapped #1 for all the INPUTs:
You also have to assign the machines from the perspective of the cameras: you have to set up which machine uses which camera:
IMPORTANT: the CAM 1, CAM 2 etc. selectors above only serve editing purposes in a multi-machine one-to-one setup and only affect the controller machine. The remote machines always render the camera assigned to them.
You only have to switch between CAM 1, CAM 2 etc. to setup the camera paths and the placement of the billboards on the controlling machine. When you finished with setup you always have to switch back to CAM1, so that the controlling machine can fill its role which is rendering the Camera 1 image.
Editing the Camera Paths
You can edit the paths for each camera as usual. You select between CAM 1, CAM 2 etc. and edit the A-B points of each path. On the controller machine’s output and preview monitor you’ll always see the picture of the selected CAM. Of course, you’ll also immediately see the changes on the output of the remote machine to which the given camera is assigned.
Placing the Billboards
When you select between CAM 1, CAM 2 etc. you’ll also see the Billboards belonging to that camera and you can edit and place them as usual.
However there’s a catch: by default you cannot see the actual image of the talent for the cameras that are assigned to remote machines. It’s obvious, since their actual SDI input is connected to that machine.
So by default you’ll see a placeholder image, a schematic figure of an actor. It’s suitable if you only want to adjust the positon of the billboard, but not when you want to setup the correct proportions.
But there’s a solution: the system allows sending the input image over NDI from the remote machine to the controlling machine where we do the editing.
For that you have to specify the name of the remote machine on each INPUT panel:
NOTE that it always have to be the actual machine name, never the IP address. It will be used by the NDI channel system. Set it up for all the inputs you wish to see then turn SHOW REMOTE on:
You can also select the quality of the transfer depending on your network bandwidth and the performance of your machines:
Now you’ll see the actual inputs for each machine.
Remote Engines Status
If, for some reason, the connection is lost to some of the remote machines, the Remote Engine's Status window pops up and indicates the problematic machine with flashing red.
If the problem is software based (for e.g. crash) or you’ve already fixed the hardware problem (for e.g. network connection issue), you can restart the engine on the remote machine by the Restart All Lost or the individual Restart functions. The current scene also will be automatically loaded into the remote machine and the system continues to operate normally.