Loading repository dataβ¦
Loading repository dataβ¦
ChewbaccaCookie / repository
ποΈ Voicemeeter Connector provides a simple, type-safe, and high-level Node.js 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.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
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();
examples/typescript/example.tsexamples/javascript-module/example.jsexamples/javascript-commonjs/example.jsEach 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:
MonoMuteSoloMCGainPan_xPan_yColor_xColor_yfx_xfx_yAudibilityCompGateEqGain1EqGain2EqGain3LabelA1A2A3A4A5B1B2B3FadeToSet 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:
MonoMuteEQGainNormalModeAmixModeBmixModeRepeatModeCompositeModeFadeToLabelSet 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 levelsGet 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): ColorAttach 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 MainAudio Callback Examples:
examples/typescript/example-audiocallback.tsexamples/javascript-module/example-audiocallback.jsexamples/javascript-commonjs/example-audiocallback.jsGracefully disconnects from the Voicemeeter client.
vm.disconnect();
Contributions are welcome! Please open issues or pull requests for bug fixes, features, or documentation improvements.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)This project is licensed under the MIT License. See the LICENSE file for details.