Dann wird's an der Zeit, dass Du Dir ein C++ Buch auf den Schreibtisch legst. Denn das Ganze benutzt die üblichen C++ Mechanismen - hier Polymorphie.

Der Manager hält intern eine Registry vor, in der stehen alle erlaubten Klassen, zu denen Objekte erzeugt werden dürfen. beim "create()" Aufruf prüft er ob er zu dem vereinfachten Klassennamen des ersten Parameters in der Registry ein Objekt zu diesem Typen hat und wenn ja, dann ruft es desen "clone()" Methode und reicht den Zeiger zum Aufrufer durch.
Das Wichtige an der Geschichte ist, das Serial, SoundFileSource, Gain, AudioSink alles Ableitungen der abstrakten Basisklasse MarSystem sind und die clone() Methode überschreiben und so im Manager Objekte der jeweiligen konkreten Klasse erzeugt werden, das "new" steht also in den clone()-Methoden.
Es ensteht so durch die vier create() Aufrufe ein Graph, wo das Objekt, auf das der Zeiger playbacknet drauf zeigt, vom Typ Serial aber der Zeiger nur vom Typ der Basisklasse MarSystem ist und drei Kinder mit ihren konkreten Typen hat.
Das entscheidende ist jetzt, dass die rein virtuelle Methode "myProcess()" in den abgeleiteten Klassen überschrieben werden muß und ist, denn da findet die spezielle Verarbeitung der Audiosamples statt.

Wenn du das Beispiel zu Ende anschaust wird dann das allgemeine MarSystem::tick() aufgerufen und dank Polymorphie wird innerhalb dieses Aufrufs das konkrete myProcess() der jeweiligen Objekte aufgerufen. Der Benutzer von playbacknet hat es so nur mit dem allgemeinen Fall zu tun und die konkreten Abläufe sind verborgen. Was Sinn und Sache des Ganzen Troubles ist.

Dieses updctrl dient dann dem Zugriff auf die Parameter der Objekte im Baum, sprich playbacknet weiß, wie es diese Pfade auflöst und dann auf die Attribute der Kindknoten zugreifen kann.

Gruß botty