Categories: Uncategorized

Using VoiceMeeter macro buttons to change VATSIM audio routing

In a prior post I walked through how to use VoiceMeeter to route your VATSIM audio using VectorAudio (or TrackAudio). In that post the audio is always routed to your headset, which is fine if it’s busy.

But what if it’s dead and you don’t want to wear your headset? Wouldn’t it be nice if you could quickly re-route the audio to your PC speakers?

VoiceMeeter macro buttons to the rescue! Create a new macro button and configure it like this:

Make sure the button type is set to 2 Positions. You can assign any keyboard shortcut you like, or none at all. ALT+F11 works well with CRC and STARS as it doesn’t appear to be mapped to anything.

For the Request for Initial State and Request for Button OFF scripts use this:

strip(2).A1 = 0;
strip(2).A2 = 1;
strip(3).A1 = 0;
strip(3).A2 = 1;

For the Request for Button ON script use this:

strip(2).A1 = 1;
strip(2).A2 = 0;
strip(3).A1 = 1;
strip(3).A2 = 0;

That’s it! You now have a button you can toggle on to route your VATSIM audio to PC speakers, and toggle off to have the audio go back to your headset.


Categories: VATSIM

Using VoiceMeeter MacroButtons to mute and unmute audio sources in OBS

This post assumes you have already followed the initial setup steps covered in the routing audio with VoiceMeeter Potato, Discord, and VectorAudio post and then set up MacroButtons for auto-ducking.

Auto-ducking is great, but what if you also want to stream the audio via OBS and mute accordingly? In my case I stream both my position’s radio communications (typically tower) as well as other controllers on above or below me (typically ground or departure). I want to mute the other positions whenever there’s radio traffic on my frequency.

Here’s how to do it.

Step 1: Add the audio sources to OBS

In the sources pane click the + button and select Audio Input Capture. Name the input VATSIM – Primary and set the device to Voicemeeter out B1 (VB-Audio Voicemeeter VAIO).

Create a second Audio Input Capture source, name it VATSIM – Secondary and set the device to Voicemeeter out B2 (VB-Audio Voicemeeter VAIO).

Step 2: Route the VATSIM audio in VoiceMeeter

In VoiceMeeter click the B1 button for the VATSIM – Primary input and the B2 button for the VATSIM – Secondary input. This will route input 3 to B1 and input 4 to B2 in addition to sending those inputs to your headset.

VoiceMeeter should look like this:

At this point you can test and make sure that audio from VectorAudio flows out to your stream.

Step 3: Add mute and unmute hotkeys in OBS for the VATSIM – Secondary source

Click Settings and go to the Hotkeys tab. Use the filter box to filter for mute, then scroll until you find the fields for VATSIM – Secondary. Assign a hotkey for Mute and Unmute. (As tempting as it is to use Push-to-mute I never could get that to work).

When you’re done it should look like this:

If you are using extended function keys (F13 and higher) it is a giant pain to actually get OBS to know about them since you have to actually press the key. I worked around this by mapping a button on my StreamDeck to send the function key using the Super Macro Keystroke PTT command.

Step 4: Update the MacroButtons to send the mute and unmute keys

Right click on the Auto-duck – receive button in the VoiceMeeter macro button app. Add the script commands to send your mute key on trigger in and unmute key on trigger out:

Then right click on the Auto-duck – transmit button and add the same script commands:

Other variations

While this specifically shows auto-muting the VATSIM – Secondary source in OBSyou could do any number of other things in OBS, provided there’s a mappable hotkey for it. Basically just send the hotkey from VoiceMeeter MacroButtons and then trigger whatever action you want in OBS. Nice!


Categories: VATSIM

Using VoiceMeeter MacroButtons to auto-duck audio in VATSIM

This post assumes you have already followed the initial setup steps covered in the routing audio with VoiceMeeter Potato, Discord, and VectorAudio post.

Step 1: Enable MacroButtons startup in VoiceMeeter

In the Menu select Run MacroButtons on Voicemeeter start. This will bring up the MacroButtons window.

Resize the window so there are two buttons visible.

Step 2: Create a macro to mute channels on incoming VATSIM audio

Right click on the first button and configure it as follows:

Make sure to check the Enable checkbox in the trigger section.

This configuration will listen for audio coming in on channel 3 (VATSIM – Primary) and while that trigger is active will mute the Discord and VATSIM – Secondary channels. Once the incoming audio stops the other two channels will be unmuted. You can use the green and red arrows to adjust the incoming audio levels required to trigger mute and unmute respectively.

Note that the scripts use origin 0 for indexing the channels while the trigger uses origin 1. That’s why it is in #3 to select VATSIM – Primary as the trigger source but 1 and 3 to select input 2 and input 4 for muting. Confusing? Yes.

If you also want to mute desktop audio you can add strip(0).mute = 0; and strip(0).mute = 1; to the scripts as well.

Step 3: Create a macro to mute channels on outgoing VATSIM audio

The macro created in step 2 will only detect incoming audio. To apply the same auto-ducking when transmitting right click on the second button and configure it as follows:

Set the Keyboard Shortcut dropdown to match the PTT key you use in VectorAudio. The scripts are the same as the macro configured in step 2.

Other variations

This basic framework opens up all sorts of possibilities. Instead of completely muting audio you can use the fadeto command to reduce the audio of specific channels:

strip(1).fadeto = (-15.0, 100);

and then the reverse to bring it back up after transmission is complete:

strip(1).fadeto = (0.0, 200);

You can also mix and match, for example mute the secondary VATSIM audio completely but only fade the Discord audio.

Many more options are available, basically whatever you can control via the VoiceMeeter UI you can also set via macros. See the VoiceMeeter user manual for all the details.

You can also use macros to mute and unmute these sources in OBS, which is super handy if you are streaming primary and secondary VATSIM audio and want to focus on the primary position radio traffic when it’s active.


Categories: VATSIM

Routing audio with VoiceMeeter Potato, Discord, and VectorAudio

With VoiceMeeter Potato and VectorAudio it is possible to route Discord, VATSIM audio, and desktop audio independently and control each app’s audio via macros. It’s a powerful way to do things like auto-mute Discord when VATSIM audio happens, listen to multiple VATSIM frequencies at once but auto-duck frequencies when the one you’re controlling has audio traffic, route some audio to your headset and other audio to your PC speakers, etc.

Here’s how to get the basics set up. After this setup is complete check out how to auto-duck using VoiceMeeter MacroButtons and how to mute and unmute OBS sources with VoiceMeeter MacroButtons.

Step 1: Install and license VoiceMeeter Potato and the VAIO Extension

Grab the beta build from the Discord, install it, then reboot your computer. Rebooting is really important. Don’t skip that step.

After rebooting, license the VAIO Extension by going to Menu > VAIO License Extension… and following the license flow. You must license the VAIO Extension to get access to make this work. It’s totally worth it. Help support amazing software by giving the developer some money.

Additionally go to the Menu in VoiceMeeter and enable Run on Windows Startup.

Step 2: Configure each application’s audio output

The goal is to get all the different apps to feed in to VoiceMeeter on separate inputs. Here’s a table of how everything should be mapped:

ApplicationOutput device
WindowsVoicemeeter In 1 (VB-Audio Voicemeeter VAIO)
DiscordVoicemeeter In 2 (VB-Audio Voicemeeter VAIO)
VectorAudio Headset DeviceVoicemeeter In 3 (VB-Audio Voicemeeter VAIO)
VectorAudio Speaker DeviceVoicemeeter In 4 (VB-Audio Voicemeeter VAIO)

Here’s what it looks like in Windows:

Here’s what it looks like in Discord:

And here’s what VectorAudio should look like:

Step 3: Enable and name virtual inputs in VoiceMeeter

Run VoiceMeeter Potato and click the little down arrows next to each of the first four input devices in the left section of the screen. Then right click on the Stereo Input label for the first four input channels and rename them to match the sources mapped to those inputs:

InputName
Input 1Desktop
Input 2Discord
Input 3VATSIM – Primary
Input 4VATSIM – Secondary

When you are done the input section of VoiceMeeter should look like this:

If you don’t have the little arrows at the top of each input device it means you didn’t license the VAIO Extension as mentioned in step 1.

Step 4: Configure VoiceMeeter outputs

This is where you tell VoiceMeeter to actually output the audio it receives. In my case I have two outputs: my PC speakers and my headset.

In the top right of the VoiceMeeter window select the A1 button and pick your speakers from the WDM (WASAPI) section. Then select the A2 button and pick your headphones from the WDM (WASAPI) section.

If you don’t see separate speaker and headphone devices you may need to run the Realtek audio manager app to set the option that splits the speaker and headphones into two separate devices.

Step 5: Route the audio

At this point you have four different audio inputs and two different audio outputs. The inputs can now easily be routed to the audio output you want by selecting the appropriate output button under each input. In my case I have the desktop audio routed to A1 (speakers) and all the other audio routed to A2 (headphones):

You can use any of the volume or EQ controls to independently modify the audio from each of the input sources. For example, you could put the VATSIM audio entirely in your right ear and the Discord audio in your left ear… but auto-ducking is better, and how to do that will be in the next blog post.

Step 6: Tell VectorAudio where to send each frequency’s audio

By default every RX frequency you add in VectorAudio will route to your primary output. To route frequencies to the secondary output you need to click the 1 SPK button on the frequency after you have activated RX. Here’s an example showing SEA_TWR routed to the primary output and KSEA_ATIS, SEA_DEL, and SEA_GND routed to the secondary output: