For some part of the past three weeks, Three Byte has been working on a “Tuning Chamber.” The software is a control system responsible for monitoring, visualizing and routing between a wide range of input sensors and visual effects including columns of light animations, a projector, fog-machine and a hallway full of speakers that play at different volumes and fade between sources and respond to the position of people in the space.
From a software perspective this project posed many unique challenges including how to assimilate information from a wide range of potentially noisy sensor events to infer the position of the people or peoples responsible for triggering those events. Additionally, this project has been interesting from a UI design and user-experience perspective. For our software to be an effective tool for our clients it must allow them to:
- Visualize and immediately understand the state of the system and the connectivity of its many "moving" parts
- Configure and visualize the configuration of animations and outputs to a variety of channels from a library of animations, assets and audio streams
- Easily configure a potentially complex mapping between sensors and output channels
- Automatically test and visualize the responsiveness of individual sensor and the resultant output effects on the UI
- Be useful whether or not the software is connected to all its physical hardware
Also, interaction with the software needs to be fluid, but intelligent enough to protect against mistakes and information loss. The software should make user interaction intuitive and easy to understand while also exposing a fairly complex feature set. This software would need to expose differentiated user experiences for different users and use cases including monitoring, configuring and testing.
In this blog post, Jeff Atwood addresses the hazard of letting software developers build user interfaces and illustrates his point with examples. Atwood's post highlights the importance of investing time and resources in planning an intuitive and good-looking UI is. Dealing with the user's experience with our software up-front is an essential part of the development process at Three Byte and helps us to:
- Reflect and document the needs and priorities of our client
- Highlight the components, work-flows and themes that deserve the most focus
- Help inform the evolution of our software's architecture and object model
- Augment the development process by serving as a workbench for gaining visibility into key processes and exposing tools that assert the code's behavior and "wiring"
The Tuning Chamber UI was designed to expose the state of the Tuning Chamber system and all its constituent input/output components and also exposes power tooling capabilities for testing the software when hardware dependencies are missing. The Tuning Chamber UI allows a user to simulate a sensor event with mouse click or hover operations and see the audio-visual output behavior of the system on screen. These tools complemented by our unit tests, were an invaluable asset to the development of the functionality we were targeting.