DAW Design & Implementation: Ardour Data Structures

Plan of Attack

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


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.