voicemeeter-connector
v2.2.0
Published
A Connector to use the Voicemeeter API
Maintainers
Readme
🎛️ Voicemeeter Connector (Node.js)
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.
🚀 Description
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.
🎚️ Supported Voicemeeter Versions
This connector supports all major editions of Voicemeeter:
📦 Installation
npm install voicemeeter-connectorRequirements:
- Node.js >= 18
- Windows with Voicemeeter installed (API uses native DLL)
🧑💻 Simple Example
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();📂 Example Overview
- 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.
⚙️ Usage
Initialization
Initializes the Voicemeeter API and returns a Voicemeeter instance.
import { Voicemeeter } from "voicemeeter-connector";
const vm = await Voicemeeter.init();Connecting
Establishes a connection to the Voicemeeter client.
vm.connect();Setting and Getting Strip Parameters
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:
MonoMuteSoloMCGainPan_xPan_yColor_xColor_yfx_xfx_yAudibilityCompGateEqGain1EqGain2EqGain3LabelA1A2A3A4A5B1B2B3FadeTo
Setting and Getting Bus Parameters
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:
MonoMuteEQGainNormalModeAmixModeBmixModeRepeatModeCompositeModeFadeToLabel
Setting and Getting Options
Set or get global Voicemeeter options (e.g., enable/disable VBAN).
await vm.setOption("vban.Enable=0;");
const vbanEnabled = vm.getOption("vban.Enable");Getting Audio Levels
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: rightgetLevel type values:
0: pre-fader input levels1: post-fader input levels2: post-mute input levels3: output levels
Macro Button Status
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
Listening for Changes
Attach a callback to be notified when any Voicemeeter parameter changes.
vm.attachChangeEvent(() => {
console.log("Voicemeeter state changed!");
});Device Information
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;Dirty State Checks
Check if parameters or macro buttons have unsaved changes.
const paramsDirty = vm.isParametersDirty();
const macroDirty = vm.isMacroButtonDirty();Update Device List
Refresh the list of available input and output devices.
vm.updateDeviceList();VB-Audio Callback
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
Disconnecting
Gracefully disconnects from the Voicemeeter client.
vm.disconnect();🤝 Contribution
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
📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
