One day I was asked to redraw the layout and video operating area of a medium‑sized television O.B. Van from the Studio Video Art company. The central video router, used also for camera technical control, was a Blackmagic Design (BMD) Compact Videohub.
The camera operational control panels (OCPs – named as such in the specific case of that equipment; may differ in other situations) were equipped with joystick type control for iris & master black adjustment, with the possibility of “Joystick Override” operating mode: individual per‑OCP contact closure when its joystick is pressed. Sometimes this is referred also as touchdown function or joystick preview.
This operating mode is described, better than I could do myself, in an old Leitch GPI interface user manual lying around here somewhere:
When a joystick is operated on a given CCU, the contact closure is made and that CCU’s router input is selected. When the joystick is released, the contact closure opens and the router automatically returns to the previously selected input, usually a studio program video.
(ref.: RCP- Series: RCP-GPI64/32p ... Operation/Installation Manual)
The Joystick Override mode works in conjunction with the video router to which those CCUs are connected, but my problem was that the BMD Videohub does not have a direct GPI input for such a functionality and their GPI & Tally Interface does not perform properly a Joystick Override function. In that forum discussion I was then recommended to try to build an Arduino-based interface and write my own commands.
Well, I took the recommendation seriously, but soon I became disappointed: right then Arduino discontinued the network module (“shield”) – at least that was the situation at their own shop by the time I was studying this variant – with the exception of the Arduino Yún version, which I considered not suitable for my purpose. Therefore, I abandoned the Arduino road.
Then, from the options available to me, the Raspberry Pi caught my attention: attractive hardware, generous GPI port, true Linux operating system that allows restricted access levels – a mandatory feature, in my opinion, for a network configurable broadcast equipment.
First tests sounded promising, so here I am: the project for Joystick Override solution for BMD Videohub router(s) has started. I wrote from scratch the entire Joystick Override function software, in Python programming language.
Because usually I like to keep the quality bar at a higher level than the average, I enforced the same tendency here – so these were my major architectural guidelines:
Three months later the idea materialized in a true professional equipment, on par with other products in the same industry.
Because this has become a commercial project, it is now hosted on its own web page:
The software that actually performs the joystick override function is available below for download. It should run under Python 3.5 or newer, with proven functionality under Raspberry Pi OS (previously called Raspbian) installed on Raspberry Pi 2 Model B V1.1 or V1.2. The software is licensed under the LGPLv3 or later license.
Note: current software version is 1.7 (click here for versions history)
Since I am the copyright holder of the JOyVerride software, any further updates will be published here only.
Important: the software is tied to the JOyVerride hardware implementation; there is no guarantee that it will work properly in other embodiment and I have no intention to provide support outside of the specific purpose for which I created it.
As a side note, given that the JOyVerride unit uses high quality hardware debouncers per each GPI input, the software itself does not compensate for any switch contact bouncing and thus avoids the need for additional time loops that may slow down the program execution speed – an aspect that is especially important when multiple joysticks are pressed in very quick sequence.