Voicemeeter
Control Voicemeeter virtual audio mixer with full support for strips, buses, routing, gain control, macro buttons, and recording.
Overview
FaustBot integrates with Voicemeeter, the popular virtual audio mixer for Windows, allowing you to control all aspects of your audio routing through automation:
Strip Control
Mute, gain, pan, and solo for all input strips.
Bus Control
Mute and gain control for all output buses.
Audio Routing
Route strips to any combination of buses.
Macro Buttons
Trigger Voicemeeter macro buttons (0-79).
Recording
Start, stop, and monitor recording status.
Audio Engine
Restart audio engine to fix issues.
Setup
Requirements
Voicemeeter must be installed and running on your system. FaustBot communicates with Voicemeeter through its native API.
Install Voicemeeter
Download and install Voicemeeter from vb-audio.com. Choose the version that fits your needs: Standard, Banana, or Potato.
Launch Voicemeeter
Start Voicemeeter before connecting from FaustBot. Configure your audio devices and routing as desired.
Connect from FaustBot
In FaustBot, go to Voicemeeter in the sidebar and click Connect. FaustBot will automatically detect your Voicemeeter version and available strips/buses.
Auto-Connect
Enable Auto-Connect to automatically connect to Voicemeeter when FaustBot starts. Ensure Voicemeeter is already running.
Voicemeeter Types
FaustBot supports all three Voicemeeter versions, each with different capabilities:
| Version | Type ID | Strips | Buses |
|---|---|---|---|
| Voicemeeter | 1 | 3 (2 hardware + 1 virtual) | 2 (A1, B1) |
| Voicemeeter Banana | 2 | 5 (3 hardware + 2 virtual) | 5 (A1-A3, B1-B2) |
| Voicemeeter Potato | 3 | 8 (5 hardware + 3 virtual) | 8 (A1-A5, B1-B3) |
Strip vs Bus
Strips are inputs (microphones, applications via virtual inputs). Buses are outputs (speakers, headphones, stream output). Use routing to control which strips go to which buses.
Triggers
Respond to events from Voicemeeter:
Connected Successfully connected to VoicemeeterDisconnected Disconnected from VoicemeeterStrip Mute Changed A strip's mute state changedBus Mute Changed A bus's mute state changedRecording Started Recording beganRecording Stopped Recording endedEffects
Strip Control
Mute Strip
Mute an input strip.
Unmute Strip
Unmute an input strip.
Toggle Strip Mute
Toggle strip mute state.
Set Strip Gain
Set strip volume (-60 to +12 dB).
Set Strip Pan
Set strip pan (-1.0 to +1.0).
Bus Control
Mute Bus
Mute an output bus.
Unmute Bus
Unmute an output bus.
Toggle Bus Mute
Toggle bus mute state.
Set Bus Gain
Set bus volume (-60 to +12 dB).
Routing & System
Set Strip Routing
Route a strip to a bus.
Press Macro Button
Trigger a macro button.
Start Recording
Begin Voicemeeter recording.
Stop Recording
Stop Voicemeeter recording.
Restart Audio Engine
Restart the audio engine.
Scripting API
Control Voicemeeter from your scripts using the CPH API:
Connection Management
# Connect to Voicemeeter
CPH.VoicemeeterConnect()
# Check connection status
if CPH.VoicemeeterIsConnected():
vmType = CPH.VoicemeeterVoicemeeterType()
CPH.Log(f"Connected to Voicemeeter type: {vmType}")
# Disconnect
CPH.VoicemeeterDisconnect()Strip (Input) Control
# Get strip count and list all strips
count = CPH.VoicemeeterStripCount()
strips = CPH.VoicemeeterGetStrips()
# Mute/unmute strip 0 (first input)
CPH.VoicemeeterSetStripMute(0, True) # Mute
CPH.VoicemeeterSetStripMute(0, False) # Unmute
CPH.VoicemeeterToggleStripMute(0) # Toggle
# Set gain (-60 to +12 dB)
CPH.VoicemeeterSetStripGain(0, -6.0)
# Set pan (-1.0 left to +1.0 right)
CPH.VoicemeeterSetStripPan(0, 0.0) # CenterBus (Output) Control
# Get bus count and list all buses
count = CPH.VoicemeeterBusCount()
buses = CPH.VoicemeeterGetBuses()
# Mute/unmute bus 0 (first output)
CPH.VoicemeeterSetBusMute(0, True) # Mute
CPH.VoicemeeterSetBusMute(0, False) # Unmute
CPH.VoicemeeterToggleBusMute(0) # Toggle
# Set bus gain (-60 to +12 dB)
CPH.VoicemeeterSetBusGain(0, 0.0) # 0 dBStrip Routing
# Route strip 0 to bus 0 (A1)
CPH.VoicemeeterSetStripRouting(0, 0, True)
# Remove strip 0 from bus 1 (A2)
CPH.VoicemeeterSetStripRouting(0, 1, False)
# Example: Route mic to stream output only
mic_strip = 0
stream_bus = 2 # B1 typically
CPH.VoicemeeterSetStripRouting(mic_strip, stream_bus, True)Recording and Macro Buttons
# Recording control
if not CPH.VoicemeeterIsRecording():
CPH.VoicemeeterStartRecording()
else:
CPH.VoicemeeterStopRecording()
# Press a macro button (0-79)
CPH.VoicemeeterPressMacroButton(0)
# Restart audio engine (fixes audio issues)
CPH.VoicemeeterRestartAudioEngine()See the full API reference for all available Voicemeeter methods.