Digital Audio Workstation Design & Implementation

This seminar will cover some of the low level details involved in implementing a digital audio workstation (such as Ardour), but potentially applicable to any moderately complex audio software. We will examine some or all of: basic audio I/O, MVC design, multithreading and the use of parallelism, realtime and lock free programming techniques, filesystem design and use questions, questions about time and timekeeping, undo/redo, and various abstractions commonly used in this sort of program. Attendees will find themselves more able to understand and contribute to real-world audio software. Our focus will be software architecture rather than signal processing. Seminar topics week-by-week:
  1. Introduction, Basic Computer Architecture
  2. Audio I/O
  3. Threads & Parallelism I: using threads
  4. Threads & Parallelism II: lock free programming
  5. Threads & Parallelism III: parallel algorithms for audio
  6. Frank Schultz/Generalized Dynamics Plugin + Timing 1: timelines, plugin latency compensation
  7. Timing 2: sample clocks, system clocks, DLL's, the concept of "now"
  8. Control Data; Model-View-Controller Design
  9. A Tourist's Guide to Ardour Data Structures
  10. Disks, Filesystems and Disk I/O
  11. Graphical User Interface: interactions, design considerations