The main thing of intelligent source manager is to swap-in and swap-out sources while simulating as if the source was still playing during the time it wasn't in the active sources pool, you can easily reuse this logic from my code which is the most important part and use a object oriented design of your own. I plan to do the same and port this code out of the procedural world, but it simply isn't high on priority currently.