Hi all,
I’m trying to feed audio stream from outer apps into Cinder with the help of Virtual Audio Cable (Drivers), kinda counterparts on Windows as Soundflower on Mac.
I started with a simple program, which initializes an audio::InputDeviceNode from the Virtual Audio Device, and directly connect it to a audio::OutputDeviceNode attached to the external speaker. Unfortunately, the output sound has quite a lot pops in it. The Virtual Audio Cable driver seems to be ok, as I tried the same routine in RtAudio with WASAPI, and works fine.
The InputDeviceNode does produce overrun or underrun other than 0 during running time, actually I’ve no idea what’s going on, I just reckon it means the input and output process does not keep up in pace, am I right? I tried the same program on Mac with the exception of using Soundflower, it sounds smooth, and InputDeviceNode::getLastOverrun() / InputDeviceNode::getLastUnderrun() return 0 all the time.
Is there any setting I may ignored in audio context setup?
So InputDeviceNodedoesn’t produce over / under runs? How about OutputDeviceNode (you can get this by typecasting the Context::getOutuput(). I know, a bit awkward at current), does it produce any xruns?
I’ve got some WASAPI improvements I need to wrap up soon, so hopefully I can test this out as well. I’ve had VB-Audio inputs working in the past but that was a couple years ago now. If you’ve got some specific test code, that would help.
The InputDeviceNode in my test program DOES produce over/under runs almost every frame (in main thread).
It seems that OutputDeviceNode does not have the getLastOverrun() or getLastUnderrun() method, I tried the OutputDeviceNode::getLastClip() instead, and get 0 all the way down, which is a good sign according to the documentation.