MOST IMPORTANT NOTES
This is could be seen as the final beta version in terms of the new external control features, namely the XKeys XKE-40 & XK-24 support and the TCP server. I’m fairly confident that the XKeys will work OK, because I’m using them during development, but I’m new to the world of coding TCP servers and my only tool for testing communication during development has been Telnet. So whilst it seems to OK when I use Telnet, I really don’t know how it will work with other clients, and that’s really the point of this beta, to get some 3rd party feedback to help me refine it. So please use the Facebook group or email me at email@example.com with your reports. That said, I have how added the Router Remote, a network client for the main router application, using a nearly identical GUI (also with XKeys support), although with a few control options missing (like adding new sources). That seems to work pretty well, so I’m happier now about the TCP communication, which is why this version is a release candidate.
OTHER IMPORTANT NOTES
1) This is a hobby project and I’m not a professional programmer, as a result of which:-
a) The software is supplied “as-is”, and is not guaranteed to be fit for any particular purpose, nor to be bug-free (although bug-reports are welcome). Tested with Windows 10.
b) There is no “Installer”, just a zipped folder containing the files I think you may need in order to run the .exe file. The folder can be located anywhere on your system, and you may wish to create a shortcut to the .exe file to make it quicker to run. You may need to allow network access for the program the first time you run it. As for the supporting .dll files, you will definitely need the included Processing.NDI.Lib.x86.dll file but I’m not sure what else. The reason for that is that I don’t have enough computers to be able to test this process on a “clean” computer, only on those which already have other similar apps and/or the Microsoft Visual Studio 2017 edition which was used to create this code. If you get a message asking for a missing DLL, try installing the “vc_redist” run-time package from Microsoft (there’s a link in the Installation Notes near the top of the zenvideo.co.uk/ndi.htm page) and, if you still have a problem, let me know.
2) This is a time-limited test version, valid for nine months after the release month shown in the “About” window. Press the ‘E’ key in the About window to see the remaining time available. I will continue to upload newer builds as I revise the code, so each new one will (probably) have a new time limit, starting from the new build date. Note that the expiry date is linked to the release date, not the date of installation.
3) The main matrix buttons have been designed to use the ARIAL ROUNDED MT BOLD font, which was on my computer and I thought it was part of the basic Windows collection – but I think I was wrong. However, a google search reveals that it can be downloaded from various paces, eg. https://blogfonts.com/arial-rounded-mt-bold-1.font. I would suggest it’s worth doing this if you you don’t like the look of the button text which might otherwise look a bit on the light side.
1) The router can make use of up to 20 NDI sources and creates up to 24 virtual NDI (output) sources, the A-Bus, B-Bus, etc. Each input can be independently switched to any or all output busses. The outputs become additional NDI sources on the network which can be accessed by other NDI-compatible software just like any normal NDI source.
At start-up, choose a pre-set configuration or enter you own values for inputs & outputs. Once entered, these values are fixed for the current session. You can also load a saved configuration, which will include the sources used and any routing presets created. If the “Use Last config” box has been ticked, then a “Last” config file will be searched for and loaded if found. Router config files have a .zri extension.
2) The “Router base name” is used to form the NDI names for the various outputs, combined with an alphabetic suffix (RouterOut-A, RouterOut-B, etc).
3) Assuming you have some NDI sources available on your LAN, start by assigning sources to the input channels. The drop-down list below the switching buttons contains a list of currently available NDI sources and, once selected, the name will show above the respective channel switching button.
4) Multi-bus routing switch configurations can be saved as Routing Presets, accessed via the row of buttons just above the Channel Input Selection drop-down list buttons. Hold down the CTRL key and click on a Preset button to assign the current switch positions to that Preset. An active preset will have a red button, which changes to amber if any of the bus outputs are changed. This is to act as a reminder as to which preset was last selected, should you wish to make a slight change to one of them and then re-save it (via CTRL-click). An unselected preset will have a green button, whilst those with no assigned data will have no colour.
5) The Routing Preset buttons can have their text editing by using ALT-click on a preset button. To clear the button text back to the default (Preset 1, Preset 2, etc), use SHIFT-click on a button.
6) Pressing the Advanced button changes the configuration slightly to mimic an A-B bus (preview/program) vision switcher, where the A bus is the main output and the B bus is the preview output. Pressing the “Switch A-B” button will toggle the contents of Bus A & B. In addition, when in Advanced/A-B-Switcher mode, an additional set of virtual output are created, one for each input. The idea of this is to allow multiple NDI Monitor apps to be set up to view all the inputs and outputs, as shown in the screen grab at the bottom of the NDI page at http://www.zenvideo.co.uk/ndi.htm#Router. When this app was developed, using NDI v2, the switching was virtually instant in most cases but, as NDI had developed and the protocol evolved, that is no longer the case, making this mode far less useful that was originally intended.
7) Use the “Save Last” tick box to create a “Last.zri” config file on exit, or to create named config files at any time use the “Save Custom Config” menu item in the system menu (right-click top left).
8) The “Show NDI Source Listings” menu item (rt-click top left) opens a resizable dialog window which can be used to search for and display some stats about all the NDI sources detected on the LAN. The “Exclude local” disables detection of NDI sources from the local computer, eg. the outputs of the NDI router, in order not to fill up the list with extra entries that, in effect, are the same as other “original” sources.
9) The “Destroy Routed Sources on Exit” menu item (rt-click top left) can be used toggle whether the “routed” virtual NDI output sources should be destroyed when exiting the application, or kept active with their current routing settings when the application is closed. If left open, the application can be opened again to reconnect and regain control of the NDI output sources (provided no change is made to the “Router base name” setting. My thanks to Kane Peterson for suggesting that there was no need to destroy the Routed Sources (which was previously the default behaviour).
10) The TCP server for remote control is on port 9779. Up to four simultaneous connections can be made, as shown by the block of four indicators at the upper right of the window, which light up green when connected. Clicking on a “lit” indicator will disconnect that client. See the PDF with the Router protocol (available from the Downloads page) for more info about the available commands and responses for external control.
A module for Bitfocus Companion (for the Elgato Stream Deck) has been created (thanks to Nigel Brown, and not by me, I might add) and is available via the Bitfocus site (for the ZEN NDI Router), plus Joe de Max has added the NDI Router to the range of devices supported by his Central Control software.
11) XKeys support is for the XK-24 keypad and XKE-40 rack-mount keyboard. The XKE-40 has two rows of 20 keys, 1-20 and 21-40 on the lower row. Key 40 acts as a mode switch and changes colour accordingly. Mode switch = Red:- normal selection mode, where the lower row (21-39) selects the output bus (and lights in blue) and the upper row (1-20 selects an input to be routed to the selected output (and lights in red). Mode switch = Blue:- Preset mode, in which the upper row of keys lights blue to show valid presets (ones with data). Selecting a valid preset turns the key red. If the preset becomes “degraded” (by one or more of the output routings being changed), then both red/blue LEDs will light.
Operation is similar on the XK-24, but with fewer keys which are effectively split into two blocks of twelve, rather than two rows of twenty on the XKE-40. This limits the maximum number of ins & outs that can be switched on the keypad, but not the size of the router configuration itself. The XK-24 can be configured to operate in either portrait or landscape configurations, as preferred.
Watch the video above (also on YouTube/Facebook) for a demonstration of how all this works. (At present only the previous router features are covered in any videos, but a new video showing the XKeys is planned.)
ZEN Computer Services
v126.96.36.199 Jan-2017 Earlier alpha with very limited release.
v188.8.131.52 7-Feb-2017 First public release as a 6×2 NDI router/switcher.
v184.108.40.206 17-Jul-2017 Maintenance release.
v220.127.116.11 19-Jan-2018 Maintenance release (with extra web-links).
v18.104.22.168 14-Jul-2018 Maintenance release.
v22.214.171.124 23-Jul-2018 Preview release with similar switching functionality but revised GUI & user-configured switching matrix (no longer fixed at 6×2).
v126.96.36.199 20-Aug-2018 Further preview release which includes Routing Presets and load/save of (last used) Config files.
v188.8.131.52 28-Dec-2018 Maintenance release, recompiled with NDI v3.8
v184.108.40.206 2-May-2019 (First) beta release with XKeys XKE-40 support and TCP Server using ZEN Router Protocol v1.0
v220.127.116.11 6-May-2019 Beta – few fixes to the TCP server code
v18.104.22.168 7-May-2019 Beta – more fixes to the TCP server code
v22.214.171.124 10-May-2019 Beta – added support for 4 concurrent TCP connections, plus new Protocol commands for getting NDI source names (IN xx yy) and performing a general “data dump” (DD ** **)
v1.3.1.xx Autumn 2019 Various beta releases as work progresses on adding XKeys support
v126.96.36.199 2-Feb-2020 Release candidate with XKeys support for XK-24 & XKE-40 keyboards, NDI Sources stats/listing window. Uses NDI v4.15, and includes both 32 & 64 bit code versions.
v188.8.131.52 15-Feb-2020 Added “Destroy Routed Sources on Exit” menu option (default is OFF) and updated to NDI v4.16 libraries.
v184.108.40.206 29-Sep-2020 Maintenance release, recompiled with NDI v4.53