All Projects → chvolkmann → voicemeeter-remote-python

chvolkmann / voicemeeter-remote-python

Licence: MIT license
Voicemeeter Remote API for Python 3

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to voicemeeter-remote-python

Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (+371.43%)
Mutual labels:  remote
WiFi-remote-for-Bestway-Lay-Z-SPA
Hack - ESP8266 as WiFi remote control for Bestway Lay-Z spa Helsinki
Stars: ✭ 138 (+181.63%)
Mutual labels:  remote
DcRat
A simple remote tool in C#.
Stars: ✭ 709 (+1346.94%)
Mutual labels:  remote
Hot-tub-remote
Lay-z-Spa wifi remote (3 pin model)
Stars: ✭ 39 (-20.41%)
Mutual labels:  remote
laravel-devcontainer
🐋 Fully-Dockerised Laravel development in Visual Studio Code
Stars: ✭ 80 (+63.27%)
Mutual labels:  remote
spotify-web-helper
🎛 Control Spotify from node.js
Stars: ✭ 60 (+22.45%)
Mutual labels:  remote
Remco
remco is a lightweight configuration management tool
Stars: ✭ 200 (+308.16%)
Mutual labels:  remote
material-remixer-remote-web
A hosted remote controller for a Remixer target app.
Stars: ✭ 27 (-44.9%)
Mutual labels:  remote
docker-chromium
Docker container with Chromium desktop and a Web VNC client allowing you to run Chromium on any server you have
Stars: ✭ 64 (+30.61%)
Mutual labels:  remote
ws-qvh
Server for streaming the screen of iOS devices over WebSocket.
Stars: ✭ 17 (-65.31%)
Mutual labels:  remote
addon-vscode-remote
VSCode Remote - Home Assistant Community Add-ons
Stars: ✭ 35 (-28.57%)
Mutual labels:  remote
PuTTY-ng
An improved multi-tabbed PuTTY with better user experience. This project is based on noddle1983's putty-nd.
Stars: ✭ 37 (-24.49%)
Mutual labels:  remote
SuperGrate
💾 Get moving with Super Grate; a free & open source Windows Profile Migration & Backup Utility. Super Grate is a GUI (Graphical User Interface) that assists Microsoft's USMT (User State Migration Utility) in performing remote migrations over a network connection.
Stars: ✭ 91 (+85.71%)
Mutual labels:  remote
Caesar
An HTTP based RAT (Remote Administration Tool) that allows you to remotely control devices from your browser
Stars: ✭ 240 (+389.8%)
Mutual labels:  remote
ipwatch
This program gets your external, & internal, IP addresses, checks them against your "saved" IP addresses and, if a difference is found, emails you the new IP(s). This is useful for servers at residential locations whose IP address may change periodically due to actions by the ISP.
Stars: ✭ 38 (-22.45%)
Mutual labels:  remote
Telegram Rat
Windows Remote Administration Tool via Telegram. Written in Python
Stars: ✭ 201 (+310.2%)
Mutual labels:  remote
call
Make remote development more elegant
Stars: ✭ 20 (-59.18%)
Mutual labels:  remote
terratools
Some tools to enhance your terraform experience
Stars: ✭ 40 (-18.37%)
Mutual labels:  remote
rsgislib
Remote Sensing and GIS Software Library; python module tools for processing spatial data.
Stars: ✭ 103 (+110.2%)
Mutual labels:  remote
gopherpit
Take control of your Go packages' import paths
Stars: ✭ 62 (+26.53%)
Mutual labels:  remote

Voicemeeter Remote

A Python API to Voicemeeter, a virtual audio mixer for Windows.

This work-in-progress package wraps the Voicemeeter Remote C API and provides a higher-level interface for developers.

Tested against Voicemeeter Potato, release from September 2019.

Prerequisites

  • Voicemeeter 1 (Basic), 2 (Banana) or 3 (Potato)
  • Python 3.6+

Installation

git clone https://github.com/Freemanium/voicemeeter-remote-python
cd voicemeeter-remote-python
pip install .

Usage

import voicemeeter

# Can be 'basic', 'banana' or 'potato'
kind = 'potato'

# Ensure that Voicemeeter is launched
voicemeeter.launch(kind)

with voicemeeter.remote(kind) as vmr:
  # Set the mapping of the second input strip
  vmr.inputs[1].A4 = True
  print(f'Output A4 of Strip {vmr.inputs[1].label}: {vmr.inputs[1].A4}')

  # Set the gain slider of the leftmost output bus
  vmr.outputs[0].gain = -6.0

  # Also supports assignment through a dict
  vmr.apply({
    'in-5': dict(A1=True, B1=True, gain=-6.0),
    'out-2': dict(mute=True)
  })

  # Resets all UI elements to a base profile
  vmr.reset()

Or if you want to use the API outside of a with statment

import voicemeeter

# Can be 'basic', 'banana' or 'potato'
kind = 'potato'

# Ensure that Voicemeeter is launched
voicemeeter.launch(kind)

vmr = voicemeeter.remote(kind)
vmr.login()
# Set the mapping of the second input strip
vmr.inputs[1].A4 = True
print(f'Output A4 of Strip {vmr.inputs[1].label}: {vmr.inputs[1].A4}')

# Set the gain slider of the leftmost output bus
vmr.outputs[0].gain = -6.0

# Also supports assignment through a dict
vmr.apply({
'in-5': dict(A1=True, B1=True, gain=-6.0),
'out-2': dict(mute=True)
})

# Resets all UI elements to a base profile
vmr.reset()
vmr.logout()

Profiles

Profiles through config files are supported.

mkdir profiles
mkdir profiles/potato
touch profiles/potato/mySetup.toml

A config can contain any key that remote.apply() would accept. Additionally, extends can be provided to inherit from another profile. Two profiles are available by default:

  • blank, all inputs off and all sliders to 0.0
  • base, all physical inputs to A1, all virtual inputs to B1, all sliders to 0.0

Sample mySetup.toml

extends = 'base'
[in-0]
mute = 1

[in-5]
A1 = 0
A2 = 1
A4 = 1
gain = 0.0

[in-6]
A1 = 0
A2 = 1
A4 = 1
gain = 0.0

API

Kinds

A kind specifies a major Voicemeeter version. Currently this encompasses

voicemeeter.launch(kind_id, delay=1)

Launches Voicemeeter. If Voicemeeter is already launched, it is brought to the front. Wait for delay seconds after a launch is dispatched.

voicemeeter.remote(kind_id, delay=0.015)

Factory function for remotes. delay specifies a cooldown time after every command in seconds. Returns a VMRemote based on the kind_id.
Use it with a context manager

with voicemeeter.remote('potato') as vmr:
  vmr.inputs[0].mute = True

VMRemote (higher level)

vmr.type

The kind of the Voicemeeter instance.

vmr.version

A tuple of the form (v1, v2, v3, v4).

vmr.inputs

An InputStrip tuple, containing both physical and virtual.

vmr.outputs

An OutputBus tuple, containing both physical and virtual.

vmr.show()

Shows Voicemeeter if it's minimized. No effect otherwise.

vmr.shutdown()

Closes Voicemeeter.

vmr.restart()

Restarts Voicemeeter's audio engine.

vmr.apply(mapping)

Updates values through a dict.
Example:

vmr.apply({
    'in-5': dict(A1=True, B1=True, gain=-6.0),
    'out-2': dict(mute=True)
  })

vmr.apply_profile(profile_name)

Loads a profile.

vmr.reset()

Resets everything to the base profile.

InputStrip

Any property is gettable and settable.

  • label: string
  • solo: boolean
  • mute: boolean
  • gain: float, from -60.0 to 12.0
  • eqgain1: float, from -12.0 to 12.0
  • eqgain2: float, from -12.0 to 12.0
  • eqgain3: float, from -12.0 to 12.0
  • comp: float, from 0.0 to 10.0
  • gate: float, from 0.0 to 10.0
  • Output mapping (e.g. A1, B3, etc.): boolean, depends on the Voicemeeter kind
  • apply(): Works similar to vmr.apply()

OutputBus

Any property is gettable and settable.

  • mute: boolean
  • gain: float, from -60.0 to 12.0
  • apply(): Works similar to vmr.apply()

VMRemote (lower level)

vmr.dirty

True iff UI parameters have been updated. Use this if to poll for UI updates.

vmr.get(param_name, string=False)

Calls the C API's parameter getters, GetParameterFloat or GetParameterStringW respectively. Tries to cache the value on the first call and updates the cached value if vmr.dirty is True.

vmr.set(param_name, value)

Calls the C API's parameter getters, SetParameterFloat or SetParameterStringW respectively.

Errors

  • errors.VMRError: Base Voicemeeter Remote error class.
  • errors.VMRDriverError: Raised when a C API function returns an unexpected value.

Resources

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].