Digital Audio Workstation Design & ImplementationSubmitted by paul on Mon, 06/10/2008 - 11:43 |
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:
- Introduction, Basic Computer Architecture
- Audio I/O
- Threads & Parallelism I: using threads
- Threads & Parallelism II: lock free programming
- Threads & Parallelism III: parallel algorithms for audio
- Frank Schultz/Generalized Dynamics Plugin + Timing 1: timelines, plugin latency compensation
- Timing 2: sample clocks, system clocks, DLL's, the concept of "now"
- Control Data; Model-View-Controller Design
- A Tourist's Guide to Ardour Data Structures
- Disks, Filesystems and Disk I/O
- Graphical User Interface: interactions, design considerations
