New CasparCG client: SuperConductor released

We’re doing a live coding session with SuperConductor tomorrow, as part of Hackoberfest: Hacking around Superconductor Tickets, Wed, Oct 19, 2022 at 3:00 PM | Eventbrite

4 Likes

While playing around a bit one question came up.
Is there a way to stop all other groups (or some groups) when a scheduled group starts?

As groups can play simultaneously (which I like) they can of course also interfere with each other.

Keep up the good work !
greet Maurice

1 Like

Ah yes, in the Sofie-world, this concept is called an “exclusivity group” (if multiple things are assigned to the same exclusivity group, only one of them can be active at the same time).
Could you please open an issue with this suggestion?

It really seems not ideal to have superconductor playing catch up on Companion API development. There is so much positive momentum for the companion community and so many deep integrations that it really makes me struggle with understand why — if possible — you wouldn’t just bring yourself into the companion API instead of trying to reinvent the wheel.

I either don’t understand your point, or you did not understand, what SuperConductor is about :smile: Maybe you can make your point clearer.

Your concern is valid, but I wouldn’t worry, and here’s why: The two projects are not meant to be competing, AND they share code! If you are concerned about the integrations and control protocols, when saying “playing catch up”, here’s how it works:

The integrations you find in SuperConductor are mainly developed for the Sofie automation project. Each integration is written in a way so it can be used for other projects too (free and open source software, designed to be shared).

From the list of Sofie-integrations, Companion has adapted the ATEM connection, (one of the most popular features of Companion, in my opinion). The same goes for the Hyperdeck module.

SuperConductor imports the same integrations, in the same way. I don’t think anyone has added any new integrations just to SuperConductor, so there’s definetly no “catch up” being played. Neither has SuperConductor any ambitions of becoming anything like the Companion.

But if we ever add new devices/integrations primarily for the SuperConductor, then chances are high that the same code will end up in some module in Companion too.

2 Likes

I love this, Jonas.
One question relating to sources and ccg - it picks up media from the scanner, but can you (pre)define other sources/actions so that you don’t have to manually define them each time you use them?
I’m mainly thinking NDI sources, but also doing generic acmp commands.

I saw that someone had posted here wondering how to use a Stream Deck with CasparCG via SuperConductor. They must have figured it out because they deleted their post, but I went ahead and recorded a short video explaining the process anyway :slightly_smiling_face:

5 Likes

Nice feature. Does it use a Companion to assign these buttons, or is it a standalone Stream Deck feature?

It is a standalone feature, no Companion required.

However, if one wants to use both SuperConductor and Companion on the same computer, there’s a few ways to make that work. For example, the Stream Deck can be disabled in SuperConductor, which will prevent SuperConductor from interfering with Companion. Then, HTTP or OSC timeline objects could be added to SuperConductor which send commands to Companion.

1 Like

Is atem control as simple as adding the switcher in the local bridge?
I’ve tried but superconductor shows atem as disconnected, even with firewall off.

If you are running Superconductor on Windows, try downloading the latest version 0.10.2 released on 19th February. This has a bug fix for Windows hosts not connecting to ATEM devices.

I managed to get SuperConductor running and i hooked it to vMix.
Superconductor is controlling vMix now but it does not get any feedback from vMix, like timing of video’s etc.
Is SuperConductor supposed to work bidirectional?

SuperConductor doesn’t work bidirectionally - ie it won’t notice if you change the input or start a video directly in vmix.

I don’t have a vmix setup at hand currently, but I suspect that what you want is that SuperConductor should list the available videos, so you can properly play them in SC (with the correct duration etc), right?

I don’t think it currently does this, so please open a feature request on github if you think it should! :slightly_smiling_face:

Hey! Great client, love using it so far.

I’m wondering if SuperConductor supports the use of stored data? Or if not, then what techniques are people using to get data through at the moment?

I’ve only recently began using CasparCG, and am not aware of the best workflows for this kind of thing yet.

You mean to send data to templates? Most of the time data is sent with the CG ADD or CG UPDATE commands. This allow to send data directly to a template. The DATA commands are mostly used to prepare data beforehand or with a separate program.

For instance if you have a tool, that downloads weather data (etc.) you can make it to use the DATA commands to set predefined datasets. Durring broadcast the template uses the name of the dataset in question, to get the last updated data. In a news program that can be very hand, as everyday the templates showing weather data do not need to be edited, as long as the name of the dataset is not changed.

Thanks for the response! I have templates all programmed and ready to go, and an application that obtains real time scoreboard data from a video game for an esports application.

I was planning on using the DATA commands for the transfer of information between my game event listener and CasparCG, but I can’t seem to find any implementation in SuperConductor to specify that the data should be used in the templates.

If not, my backup solution is to use both clients at the same time, using Superconductor for video playback and CasparCG Client for live data implementation… But i would like to avoid this if I can. :joy:

I think that SuperConductor does not yet support use of external data files. If it did support stored data the properties inspector for the items would include a tick box to send the data set name rather than the XML/JSON key+value sets (i.e. like the classic client has).

There are two methods that allow you to use SuperConductor as a front end to control use of external data via middleware. Whilst somewhat “clunky” they work.

If the number of templates you require to control is relatively small, you can use the “classic” client as the middleware. Create the command in the client, enabling the remote control of the item in the inspector. Enter a simple UID for that item, such as results01 or leaderboard. In SuperConductor add an OSC device to your bridge entering the tcp address and port for the machine running the classic client. Client version 2.2 default OSC control port is 3250, but this can be changed in the client config.

In SuperConductor add OSC events to a part. Set the OSC path to use your allocated classic item UID. For example to play the item with a UID of leaderboard use the OSC path /control/leaderboard/play Make sure there is an integer value of 1 that is part of the entry. The value is part of teh command validation You can send further commands by changing the action at the end of the OSC string. Examples include:

/control/leaderboard/stop
/control/leaderboard/next
/control/leaderboard/update

A second option requires you to create your own middleware. Create an application, for example in node.js using the express library to listen for http traffic on a port and path of your choice. You need to attach an event to the listener for either/both GET or POST events. You also need to have a tcp telnet style connection that connects to your CasparCG server. When the middleware receives the http traffic it parses the content, forming an AMCP control message that it sends to CasparCG. In SuperConductor add an HTTP Send device to your bridge.

To send data to your middleware add an http instance to a SuperConductor part. Enter the message properties in the inspector boxes - request type (GET or POST), URL and port of the middleware and parameters (key + value) that are interpreted by your middleware. At present SuperConductor only supports keys named param0, param1 etc. It should allow you to name the key, but there is a bug in the entry form. When the item is actioned it sends the GET or POST request to the middleware adding the param+values as defined for the method.

For example using a GET request to a localhost middleware listening on port 2000 with a path of /template sends a request in the format:

http://127.0.0.1:2000/template?param0=play&param1=leaderboard

Yeah there isn’t any support for external data sources as of today. However that’s something we’ve definitely been thinking about adding in a later release.

If you have ideas or suggestions for what type of data (Db-connections, data services, file formats etc) you’d like support for, please share! :slightly_smiling_face:

2 Likes

We released a new version, 0.11.0!
The main features are:

Multi select and edit
You can now select multiple Groups, Parts or Timeline-objects and edit their properties in bulk:
221198272-d99fae2a-60ee-4981-9bd3-9b63ea43af9c

GUI improvement: Countdown timers
Adds various countdown timers to the GUI:
When not playing, the “Total duration” (the sum of all Parts) of the Group is displayed.
224773708-1501b293-abe0-4f04-b75b-72624fea025b
When the Group is playing, the following are displayed:

“Remaining time” to the end of the Group.
The timestamp of when the Group will finish playing (or will loop).
“Countdowns to next start” for each Part.
224775162-9c42a057-d025-4043-a9ae-78d66660dca3

Support for GDD (Graphics Data Definition) in CasparCG graphics templates
(previously discussed at Metadata for Templates - #9 by Nytamin)
A GDD-template is a graphics template that expose a schema/manifest with information about the template.
For example, it might say that it supports 2 text fields as input, or a list of numbers.
SuperConductor will then show the correct input form.
221197720-ff016877-bcdf-4640-8a7b-71ec106389d0

Full release details here:

5 Likes