Signal is a framework for musical synchronization and data sharing, designed to support the use of musical robotics and address the associated challenges of interconnectivity and embodied performance. As open-source software (currently in private beta in the Machine Orchestra), many design considerations were based on the findings of historic giants in this field — The Hub, League of Automatic Composers — as well as contemporary ensembles including PLork and SLork.
Signal helps facilitate multiple tiers of musical performance: note-level, score-level, and sound-processing level. Although Signal is a highly specialized framework for a very specific set of actions — the control of a shared social instrument of musical robotics — its design methodology and interaction design were meant to be applicable to other social performance applications. Signal has the ability to mediate such interactions on a very precise clock, allowing arbitrary data from performer’s sensor-based instruments to be rapidly mapped to robotic actuators. For the Machine Orchestra, this embodiment is also extended through Signal’s ability to map incoming data to a ‘visual stream,’ such that an animator or artist can derive video projections from the ensemble's actions.
Signal is loosely based on a wired client/server architecture with a star topology, although clients do have the ability for peer-to-peer communication when complex mappings are not needed through the server. I prototyped Signal in the ChucK programming language and am working to refactor it in C++ using the JUCE library. Once this refactoring is complete, I plan on releasing it as an open-source project with an associated publication describing major parts that can be re-used in other networked performance scenarios.
