Character generation at the cost conscious end of the market.

The main graphics players, VizRT, Chyron have been around for some years now and have been continually expanding their domain to cover MAM/CMS storage at the backend, streaming from live productions, live interaction and statistics as they happen at the events and usually require a large amount of state of the art hardware to build the systems. It is sometimes difficult to separate out just the graphics from this increasing complexity and cost. The new NVG1 box from VizRT and Newtek may come at a price point that matches Brainstorm/Aston, Ventuz, or Ross Xpression, but it is still more expensive than smaller companies are able to manage. Luckily, the power of modern hardware is raising the quality level and abilities of lower end character generator software.ChrWorks

There is increasing demand for the simple straps and score bugs in the budget production area, where the income is never large enough to cover the cost of these higher end graphics systems. These productions only need a few specific templates and they don’t need the user to carry around some behemoth of a graphics PC filled with video input/output cards. There are a few systems around that are adequate for stills and very simple graphics – Wirecast, Tricaster LiveText or even the built-in graphics in the popular vMix software vision mixer. Simple styles may be added with image selections, font choices and color variations. These give basic facilities for a few hundred pounds, but they don’t add that high-end gloss to the production and they are quite manual in their operation. Continue reading “Character generation at the cost conscious end of the market.”

Ping Pong Championships

Returned this year for a repeat of the Ping Pong excitement at Alexandra Palace, but just over two days, so busier than ever. There was also a draw in the middle, to make it more interesting for the players and more work for us. No budget though. We were able to iron out some of the problems in the interface from last time and add a few graphics to make life easier for the operators. Things like the history for a player through the competition,


Also produced a set of data fo Firebase in the cloud and a React.js page to display, live on a web page. Learnt a bit more react and it looked good, so very happy with the result. The full page can be seen at  but these pics show the style of the groups,


and the knockout stages,


Used Trello again to manage the project. Made it a bit easier, since only had to check what we did last time. Clear all the checkboxes and do all the tasks again! Using the automated system to do my burnup, which ended up looking as below,


US Election graphics

We produced applications to allow us to take a feed from the remote DB team, who produced the result input side of the operation and to drive the VizRT lower thirds scene from News graphics. We did this in two parts, mainly. Firstly, a C# app that listened to the feed and gave an API to drive the Viz through shared memory commands. This app then talked to the web interface used by the operator to control the content on the lower third. It controlled the visibility and timing of each of the three sections – the current count of seats, votes, the vidiprinter display of the results coming in and the block showing which states were due to declare in the next time period. The graphic shows the layers on the Viz scene.


We wrote the web interface in React as News graphics are moving to that standard for their other applications. We decided not to stretch our learning to include Redux, but I think we would use that next time, as the application complexity became more involved than first planned. It worked well in the end, although we had the usual confused conversations about corrections and such from the results team. As they were all new to the area, it seems that all the experience of the team was lost as they moved. Perhaps it will be easier for the next election, now that they have this experience. Lots of chat on Slack helped, but we should have had a more consistent set of tests. The C# app used Swagger to produce the API and that worked really well. It can produce a mock interface before the real data is ready, so can be ready for early tests before the full implementation.

Trello was used to track progress. The diagram is below. It shows a slow start, but I was doing Ryder Cup work til week 39 so bear that in mind. Once working on the project, we had steady progress at a good speed. Producers became involved about week 42, hence the spike in requirements. We probably should have limited some of these, but pushed for as much as we could fit in and I think we covered more than they used on the night itself.

Election trello

There was also a small node.js app to monitor the twitter feed from the neverno cloud. NeverNo gave some CORS errors, so I used node.js to both get around that and to simplify the feed into the web app.

Chat server with node.js

I added the code for a chat server to the GitHub repository. It’s a simple server that someone wanted as an example to load to Azure. The main software is running an express server with on top. Message formats are JSON rather than plain text. The src file for the in the web page is served from the server on the express server. Code is below…

Continue reading “Chat server with node.js”

Marmalade SDK


Attended a Marmalade Developers’ Day to have a look at the new version. Marmalade offers a C++ development kit with libraries that will interface to a number of PC/Mac and handheld devices. It has been around for a while but I haven’t looked at it recently.

I was impressed by the how low level interfaces to phones and tablets are there now, with more to come in the future. There were a bunch of developers there who were largely positive, although a few talked about needing to be ready to handle occasional bugs. The number of platforms available now covers all the normal Android, iOS, Blackberry machines and there are options coming that will push games to the desktop for PC, Mac and to Smart TV platforms as well. There is a push for Blackberry apps at the moment and you can get a free Blackberry tablet and/or a development phone if you can upload an approved app to their app store soon.

The day’s sessions were recorded and are now at,

Addendum – Feb 2013

They have now released an even easier route into games with their Marmalade Quick package. It has a simple GUI for Rapid Application Development, uses Cocos2D graphics system and the Lua scripting language. Apps may be built with no C++ programming at all! We looked at this for some of our tablet control systems, as they only need a simple interface and Lua has some TCP socket facilities built in.

C# Application settings

Had a play around with the Click once installer the other day and it seems quite straightforward to use. Instead of being installed in a particular directory, the application is installed within the user folders. It then has none of the rights problems when writing files. When a new version is installed, the application is put in a new path with some randomly generated guid folder name. This gives a problem when trying to take across previous versions of property settings. The following code will solve the problem quite simply.
Continue reading “C# Application settings”

XBox controller with C#

Just testing the interface with an XBox controller for the a Boxing punch counter app, so these are a few notes of what I’m using.

Main drivers for the XBox controller are downloaded from the Microsoft site, I used the 32 bit version with Windows XP and I tested with the wireless version. Under another test with Windows 7, the drivers updated automatically when the wifi section was plugged into the USB port.

I looked at some examples and decided to use the SlimDX open source C# interface, rather than a full XNA library. It’s lightweight and we don’t need all the 3D facilities of the full XNA sdk. We’ll start with that and see how it goes. The SDK details are here, and it may be downloaded here, Runtime for .NET 2.0 28September 2011%29.msi This needs to be installed. It’s a .msi file. They may be producing an update for .Net 4.0 soon, so keep a check.

This is a simple example that works from this guy,