Skip to content

20212224/voicemeeter-connector

Β 
Β 

Repository files navigation

πŸŽ›οΈ Voicemeeter Connector (Node.js)

npm version MIT License

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-connector

Requirements:

  • 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

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:

  • 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

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:

  • Mono
  • Mute
  • EQ
  • Gain
  • NormalMode
  • AmixMode
  • BmixMode
  • RepeatMode
  • CompositeMode
  • FadeTo
  • Label

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: right

getLevel type values:

  • 0: pre-fader input levels
  • 1: post-fader input levels
  • 2: post-mute input levels
  • 3: 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 mode
  • STATEONLY (0x00000002): State only
  • TRIGGER (0x00000003): Trigger
  • COLOR (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();

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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a pull request

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.


🌐 Links

About

A Connector to use the Voicemeeter API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 96.7%
  • JavaScript 3.3%