A modern Node.js (TypeScript) connector for the official VoicemeeterRemoteAPI, supporting Voicemeeter, Voicemeeter Banana, and Voicemeeter Potato. Control and automate your Voicemeeter audio mixer from JavaScript or TypeScript with ease.
Voicemeeter Connector provides a simple, type-safe, and high-level API to interact with Voicemeeter's powerful audio routing and mixing features. It enables you to automate audio controls, monitor levels, and integrate Voicemeeter into your Node.js applications or scripts.
This connector supports all major editions of Voicemeeter:
npm install voicemeeter-connector
Requirements:
- Node.js >= 18
- Windows with Voicemeeter installed (API uses native DLL)
import { Voicemeeter, StripProperties } from "voicemeeter-connector";
const vm = await Voicemeeter.init();
vm.connect();
await vm.setStripParameter(0, StripProperties.Gain, -10);
console.log(vm.getStripParameter(0, StripProperties.Gain));
vm.disconnect();
- TypeScript:
examples/typescript/example.ts
- ESM JavaScript:
examples/javascript-module/example.js
- CommonJS JavaScript:
examples/javascript-commonjs/example.js
Each example demonstrates connecting, setting parameters, reading values, and disconnecting.
Initializes the Voicemeeter API and returns a Voicemeeter instance.
import { Voicemeeter } from "voicemeeter-connector";
const vm = await Voicemeeter.init();
Establishes a connection to the Voicemeeter client.
vm.connect();
Set or get a parameter (e.g., gain, mute) for a specific strip (input channel).
import { StripProperties } from "voicemeeter-connector";
await vm.setStripParameter(0, StripProperties.Gain, -10);
const gain = vm.getStripParameter(0, StripProperties.Gain);
StripProperties enum values:
Mono
Mute
Solo
MC
Gain
Pan_x
Pan_y
Color_x
Color_y
fx_x
fx_y
Audibility
Comp
Gate
EqGain1
EqGain2
EqGain3
Label
A1
A2
A3
A4
A5
B1
B2
B3
FadeTo
Set or get a parameter (e.g., gain, mute) for a specific bus (output channel).
import { BusProperties } from "voicemeeter-connector";
await vm.setBusParameter(0, BusProperties.Gain, -5);
const busGain = vm.getBusParameter(0, BusProperties.Gain);
BusProperties enum values:
Mono
Mute
EQ
Gain
NormalMode
AmixMode
BmixMode
RepeatMode
CompositeMode
FadeTo
Label
Set or get global Voicemeeter options (e.g., enable/disable VBAN).
await vm.setOption("vban.Enable=0;");
const vbanEnabled = vm.getOption("vban.Enable");
Get the current audio level for a given type and channel (e.g., input/output levels).
const leftLevel = vm.getLevel(0, 0); // type 0: pre-fader input, channel 0: left
const rightLevel = vm.getLevel(0, 1); // type 0: pre-fader input, channel 1: right
getLevel type values:
0
: pre-fader input levels1
: post-fader input levels2
: post-mute input levels3
: output levels
Get or set the status of a macro button (for automation and scripting in Voicemeeter).
import { MacroButtonModes } from "voicemeeter-connector";
vm.setMacroButtonStatus(0, 1, MacroButtonModes.DEFAULT);
const status = vm.getMacroButtonStatus(0, MacroButtonModes.DEFAULT);
MacroButtonModes enum values:
DEFAULT
(0x00000000): Default modeSTATEONLY
(0x00000002): State onlyTRIGGER
(0x00000003): TriggerCOLOR
(0x00000004): Color
Attach a callback to be notified when any Voicemeeter parameter changes.
vm.attachChangeEvent(() => {
console.log("Voicemeeter state changed!");
});
Get the list of available input and output devices, Voicemeeter version, and type.
const inputs = vm.$inputDevices;
const outputs = vm.$outputDevices;
const version = vm.$version;
const type = vm.$type;
Check if parameters or macro buttons have unsaved changes.
const paramsDirty = vm.isParametersDirty();
const macroDirty = vm.isMacroButtonDirty();
Refresh the list of available input and output devices.
vm.updateDeviceList();
Register an audio callback, start/stop and unregister.
vm.registerAudioCallback(AudioCallbackModes.MAIN, "Your client name", someAudioCallbackFunction);
await vm.startAudioCallback();
await vm.stopAudioCallback();
await vm.unregisterAudioCallback();
AudioCallbackModes enum values:
INPUT
(0x00000001): Voicemeeter Input InsertOUTPUT
(0x00000002): Voicemeeter Output InsertMAIN
(0x00000004): Voicemeeter Main
Audio Callback Examples:
- TypeScript:
examples/typescript/example-audiocallback.ts
- ESM JavaScript:
examples/javascript-module/example-audiocallback.js
- CommonJS JavaScript:
examples/javascript-commonjs/example-audiocallback.js
Gracefully disconnects from the Voicemeeter client.
vm.disconnect();
Contributions are welcome! Please open issues or pull requests for bug fixes, features, or documentation improvements.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a pull request
This project is licensed under the MIT License. See the LICENSE file for details.