Now showing 1 - 1 of 1
ItemA lock-free environment for computer music: concurrent components for computer supported cooperative workShelton, Robert James ( 2011)More than fifty years of computer music research has established a wide range of techniques and tools. Implementing all of these within a single application is impractical, yet each task might require a different selection to be applied. Therefore, the sharing of structured information between distinct applications becomes a key challenge for computer music as a field. While existing protocols provide a great deal of support for communication between the synthesis engines, minimal facilities exist for communicating user-interface constructs between distributed computer music applications. As a result, it remains difficult to apply techniques for computer supported cooperative work in a format which can be reused by a wide range of applications. This diminishes the opportunities by which more general collaborative composition and performance environments can be developed. In a distributed environment where user-interface objects may be replicated across multiple remote locations, concurrency control is required to maintain the integrity of each object. Previous methods for managing concurrent objects have typically introduced strong guarantees regarding a range of behaviours; however, these guarantees come at the cost of more complicated object frameworks which have failed to gain widespread community acceptance. Instead, a light-weight component model providing only the essential facilities is seen as a viable alternative. This dissertation investigates the use of lock-free shared-memory techniques for distributed computer music composition and performance environments. A method is presented by which the underlying user-interface structures may be separated from their manipulation, establishing an environment in which concurrent applications can provide multiple real-time views of shared components. Results include a formal correctness model for lock-free algorithms, a portable framework for concurrent components and a practical demonstration using a collection of components to implement a distributed text buffer.