Please add Voicemeeter's Audio Callback integration

Tags: #<Tag:0x00007ff41408e390> #<Tag:0x00007ff41408e278>

Cantabile is one of the best VST hosts (at least) because of it’s multithreading support. Right now it can be used as ASIO “patch insert” with Voicemeeter to process mics, instruments, even game audio if you want, etc., but it adds its own latency. For example if I use 128 buffer inside Voicemeeter, Cantabile will use 128 too - so it is 128+128 buffer size, ~10ms of total roundtrip latency with 48khz samplerate, and using lower buffer size is not always reliable. But with Audio Callback it will operate within Voicemeeter buffer - minus 5ms of latency (in my example). Here is official SDK https://forum.vb-audio.com/viewtopic.php?f=8&t=346&sid=6916c353c303757cd76a799a6b466fb9 and my example in C# because I find original SDK is hard to read (short variable names and stuff) and there is some workarounds for strange bugs https://github.com/A-tG/Voicemeeter-AudioCallback-Simple-Example

3 Likes

Not sure whether @brad has seen this, but it is a great idea, Atg!

Welcome to the forum!

Terry

Thanks for posting about this. I’ve discussed this with Vincent (of VoiceMeeter) and he’s confirmed the callback integration doesn’t offer any latency advantage over the ASIO driver.

Besides convenience, are there any other reasons to want this?

1 Like

I checked roundtrip latency in DAW and looks like Audio Callback actually adds extra buffer, so looks like there is no benefits indeed (oh well… :neutral_face:). Except maybe some minor performance difference (better or worse) in accessing audio buffer compared to ASIO (never worked with ASIO, dont know how complicated it is).

2 Likes

This is my first post, so…
Hello, World! :grinning:

I’ve just started using Cantabile to process the audio at a radio station.
I’m using Voicemeeter’s Virtual ASIO Insert on its inputs to good effect, but I don’t have any good way to put plugins on Voicemeeter’s outputs. I’m using all eight of VM Potato’s outputs and all of them require different processing. I don’t particularly care about latency, I measure the lag in the transmission chain in whole seconds :stuck_out_tongue:

Today I use an ugly mix of virtual audio cables, ASIO4ALL, outboard analog hardware and whatnot to process the output from Voicemeeter. It’s a bit of a rat’s nest and there are some stability problems.

If this Voicemeeter integration would mean that I could put plugins on Voicemeeter’s inputs and outputs, it would simplify things a lot for me and I would be a very, very happy camper.


Ragnar

1 Like

Yeah, I didn’t think about it. Asio Inserts works only with inputs, but Audio Callback can work in 3 modes: inputs, outputs, all. For example Equalizer APO can use Audio Callback in output mode to apply EQ to headphones and speakers but it’s not very convenient for VST plugins - UI and function wise.

There is another way to access Voicemeeter for the trip to Cantabile, and that is to use spare channels on an audio interface and a loopback cable (porting the output back to the input). You then can direct the audio interface inputs to the hardware strips. I have both an unused S/PDIF in and out and two ADAT ports in and out free that I’ve employed this way.

You simply output the A2 or A3 (or A4 and A5 additionally in Potato) to the loopback output and then grab it as an input in the System Settings/Options section, “Patch ASIO Inputs to Strips”. Watch it that you don’t create feedback loops, of course!

Cantabile has to access the audio interface directly in that case rather than use the Voicemeeter inserts. (In Voicemeeter you still select the audio interface as the A1 ASIO device to lock Voicemeeter to its buffer settings.)

However, in Ragnar’s case, where he already uses all the inputs, this might not be viable. (It also requires using a real multi-channel ASIO audio interface.) I do this with a MOTO 828 mk3 hybrid.

Terry

1 Like