DAW Design & Implementation: Ardour Data Structures

Plan of Attack

  • Object lifetime management
  • Shared pointers & anonymous notifications: good things gone bad
  • Ardour Data Structure Tour

Slides

As usual, find them here (after the seminar).

Questions to think about

Reading materials

The Ardour source code is the obvious material for this week's presentation. A different perspective on it can be gained by going into the top level directory and running doxygen on the file ardour.dox. This will take quite a long time to run, but will generate a "complete" documentation package for libardour, including diagrams showing inheritance relationships.

There really isn't any documentation on the problems with shared pointers and anonymous notifications that I discussed, although several books on software design will repeat Ben's point about not holding pointers to the Model within the View/Controller part of the program. Take a look at LinuxSampler sometime to see a fairly sophisticated program (albeit without 75% of the problems Ardour has to tackle) that defined its own Model <-> View/Controller protocol and has a couple of graphical front-ends based on this.