Ok, had a look, and some quick thoughts what I got when I skimmed through your code:
I skimmed through the code and it is very obvious that your solution is way more advanced when it comes to features. There are also a lot of stuff that I haven’t had to worry so far, for example that multibus configuration that I’ll be heading myself, so it will definitely become very handy for me.
On the other hand, we have completely separate philosophies here in play, as I opted to strictly have one player node per file, as well as one recorder node per recording. My only problem in being able to create multiple of any of these is the way I’ve slipstreamed them into the filtergraph, so they don’t currently actually fulfill the AudioPluginInstance completely. So there are a couple of hacks there
I do have a clear separation between these two nodes, all down to the recording plugin editor view. And this is really something that fits my philosophy better than your solution, but I must admit that it’s a matter of taste. Except for the fact that you have to create a lot more elaborate architecture for being able to connect all these together in a nice way, where instead it’s a lot more simpler an straight forward for me.
And as you did not have any offline rendering functionality implemented, I can’t tell wether your solution could handle that or not, did not dig in deep enough for now, but I’m either going to dig in or hear from you. In my solution the recording get’s it’s own thread that are separated depending wether you’re rendering offline or running live.
Couple of nice things I found already is that you have a dummybuffer in use, and that might be a solution for one of my problems to be able to control when the graph is running through and when it is not. And those wave form displays, although simple, we’re next on my list for doing on those players, so although I guess you already pretty much gave your permit, I thought I still asked wether it was ok for you if I just directly incorporated those into my own solution?
Otherwise I’ll have to focus on other things for now for the next week, and fix my own issues of why multiple plugins can not currently be generated. It wasn’t because of any kind of similarities between our solutions after all, but the result is the same for us both
I’ll report back on a few weeks when I have the time to come back to this, and have more spare time to spent on looking your code base more throughly, and when I have the time to continue working on my own file read / write nodes / plugins (after I make them to actually fulfill the contract properly)
Nonetheless, this will surely give me a lot of nice insight on several things, and I’m hoping that I’ll have something to share back after few weeks. It’d seem to be that there just might be couple of sections where we should plainly just merge our code together, but because of the differing philosophies, we should not use the same editor view code IMO, except for those few features (mainly audio display).
On one final note, I got your engine to crash when I press the mute button on the player/recorder ui if no files are loaded. I’d gladly give more information, but your debug build contains like a thousand of assertions that just completely block the usability of trying to get to the point where toe crash actually happens. But I’m sure its easy for you to spot even without any extra information on the matter.
Very nice work still!
Ps. I’ll be actively monitoring this thread, so if you have any questions or would like to hook up for a chat around this matter, send me a PM. If you make any new progress, I’ll find them from this thread. I’ll paste my code here when I’ll eventually get things properly done
Pps. Just to add a screencap of my version here: