Please add Voicemeeter's Audio Callback integration

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

4 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

2 Likes

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

I realized there is actually benefit for users that want to put processing on outputs in Voicemeeter (ASIO outputs of audio interface or Hardware outputs). For example I use EqualizerAPO to put Realphones VST plugin on my Headphone output (A2 in Voicemeeter, A1 - is speakers, I put simple Convolution IR on it) but EqualizerAPO have poor support for plugins: there is no signal meters in Realhpones, some plugins dont work at all, no midi support to control plugin settings (as far as I know). Only EqualizerAPO supports Voicemeeter’s Audio Callback, there is no replacement.

I’ve only just looked up VoiceMeeter, am I correct in assuming that all it does is gather hardware and software audio sources and let you mix them? Is this just used for non-multiclient drivers/devices? I can’t think of a reason to use this, both my RME interface and my X32 X-USB card work with multiple programs at the same time and are bursting with physical inputs and loopback options.

Yes but it also let you send to multiple output devices (including asio outputs, but only one asio device). Using any VST host to “insert” VST plugins into inputs. For example It allows me to apply plugins to my voice, and DI signal of guitar in “real time” and let other people hear it, I can send sound from my DAW, etc. I also made that when other people speaks it applies ducking to game audio (as sidechain compressor). Small addition to that I dont send “what I hear”, because I apply frequency correction plugin for headphones at the end of processing to Output device with help of EqualizerAPO.
Outdated scheme of my setup https://i.imgur.com/TfHfkAf.png for better understanding. Cantabile instead of Pedalboard, different plugins, Realphones in EqualizerAPO

I still don’t really see anything that you couldn’t do with a decent interface with some ports and loopback options, tbh. I suppose it’s handy that it’s hardware independent though.

Think of it as ASIO4ALL on steroids. SERIOUS steroids!

Terry

1 Like

The new VB-Audio Matrix product has solved my problem.
I spent a couple of hours setting things up and I now have all of Voicemeeter’s inputs and outputs running through Cantabile.

Happy camper, indeed :smile: