One Control System to Rule Them All
University of North Carolina – Wilmington, Veterans Hall
Without the flexibility of Extron ControlScript, the Veterans Hall AV systems would simply have not operated with the ease and versatility UNCW needed.
When the directive came down that UNCW’s newest and largest academic building, Veterans Hall, needed to be filled with flexible spaces that would support Active Learning and Hybrid Distance Education, UNCW’s Integrated Educational Technology team knew the traditional way of large matrix switching cabinets and standalone control systems wasn’t going to meet the need. In particular, they knew that several new technologies and pedagogies would be rolled out to instructors all at the same time, and there needed to be a personal touch provided by full-time technicians to ensure a good first experience.
To that end, UNCW decided to go with an AV over IP solution and settled on using an Extron NAV system that would eventually span six floors with 205 endpoints tied back to a single Navigator. Because they needed unique and flexible systems, UNCW used Extron ControlScript to realize their vision for the building. The first advantage ControlScript gave was the ability to use the Name value of the Button object. By being thoughtful of not just the button IDs, but also what their Name field was, the code was able to use dictionaries and helper functions to create meaningful variable names that also could be flexible and reused across numerous control systems in the building.
The second function that ControlScript offered was the ability to establish network communication between control processors and create a client-server relationship between the classrooms and the central control room. The classroom’s mode and current active input could be regularly sent to the control room, and the control room could in turn send commands back to the classrooms to adjust their functionality.
The last piece of the puzzle was learning to use the ControlScript @event decorator. Using this, a new data object was made, functionally a variable that would cause an event similar to a button being pressed whenever its value was changed. This enabled the client-server code to update variables as needed, and then the event-code would make changes to system functionality without having to load all of the possible options into the ReceiveData handler of the network communication block.
With these pieces in place, the Veterans Hall Control room—with a maximum of three technicians, and often only one—now had the ability to easily monitor nine heavily used classrooms equipped with cameras, beam-forming microphones, multiple displays, AV bridges, and in some cases, an Active Learning system with “Pods” of TVs and BYOD wireless devices. Because of the level of attention from the technicians, instructors could focus on teaching instead of worrying if their technology was going to work.
The nine hybrid classrooms were not the only complicated system UNCW needed to stand up, though. There were also two high-end conference rooms, an advanced teaching lab with numerous student computers that needed to connect to the room AV system, a Rehabilitation Lab that needed a full matrix between eight inputs and four outputs, and an Anatomy Lab with five digital cadaver units that needed to be routed to two small video walls. In all of these cases, the base code used for panel navigation and controlling the NAV system that underpinned the whole system remained the same. In the case of the Control Room, Anatomy Lab, and Rehabilitation Lab, ControlScript also helped in creating meaningful and intuitive feedback for the end clients by using a mix of dynamic text on buttons and up to four different button states and colors to indicate current operation.
A large part of the ability to reuse code like this came from a division of ControlScript into multiple Python files. The main.py itself was very slim, importing “devices.py” and “variables.py”, connecting to the various devices, then calling a function from “InstructorTLP.py” that instantiated the panel and its functionality. In some cases, the main.py was only 26 lines long. In the most complex room with 12 active learning pods and tie-back control to the control room, it was less than 90. This is in programs that, not counting the device modules from Extron, were upwards of a thousand lines in full execution.
Segmenting the code like this made looking at various windows of code while programming easier and helped to keep the “thought” of the code consistent. Instead of feeling like a variable could be declared just anywhere, it was always declared in the variables.py and referenced by variables.VARNAME inside the InstructorTLP code. The same with devices, such as devices.Navigator or devices.SonyProj. As various systems were made, the small adjustments of different IP addresses, passwords, or NAV Input/Output numbers were easy to find within either the devices or variables files.
Without the flexibility of Extron ControlScript, the Veterans Hall AV systems would simply have not operated with the ease and versatility UNCW needed. Dynamic variables, object-oriented programming, smart use of GUI and code interconnections, and access to things like event handlers and TCP/IP client-server functionality all factored into making a building-wide system that not only worked but has continued to work well for over a year of high-stakes use. UNCW has already gone on to leverage ControlScript in other projects, including upgrading existing Distance Education control rooms, a refit of a three-way divisible ballroom, the audio control system for the main basketball coliseum, a film studies post-production computer lab, and a new 4K digital cinema.