Roger Dannenberg and Ross Bencina held a workshop at the 2005 International Computer Music Conference. Here's a description of the workshop:
Presented by: Roger B. Dannenberg (Carnegie Mellon University), Ross Bencina (Universitat Pompeu Fabra, MTG)
Fast personal computers enable all kinds of real-time music processing. Although some real-time programming frameworks are available, such as Max-MSP and SuperCollider, many people have special requirements and choose to develop their own customized programs from scratch. This workshop will cover basic issues in software architecture and software organization for real-time music-processing systems. We will cover practical techniques for creating programs that really work. The workshop will cover a number of practical programming problems that arise in real-time systems. For example, real-time systems usually combine low-latency audio processing with CPU-hogging graphical user interfaces. How does one organize software to perform both tasks? How do the tasks communicate? Can the software be efficient, yet simple and reliable? The workshop will introduce each design and architecture concept, problem, and solution along the lines of a design pattern, that is, a well-defined problem to which the pattern applies, a solution consisting of software structures and organization, and a set of outcomes and consequences. The goal is to document design experience and best practices that lead to good performance, ease of programming, and predictable behavior. By steering developers toward workable solutions, design patterns can help to avoid disasters. The topics to be covered include: logical time systems, scheduling, buffered audio I/O, lock-free queues and interprocess communication, memory management in real-time systems, clock synchronization, and the integration of MIDI with audio. Case studies will be used to illustrate how concepts are applied in real systems. Participants should have at least some experience programming in a language such as C or Java.
Here are slides from the workshop.
Here are design pattern handouts from the workshop.