mirror of
https://github.com/onyx-and-iris/voicemeeter-api-powershell.git
synced 2025-01-18 13:20:47 +00:00
5ceacb4486
Added strip/bus command section to readme update changelog Add more params to examples
137 lines
3.5 KiB
Markdown
137 lines
3.5 KiB
Markdown
# Powershell Wrapper for Voicemeeter API
|
|
This wrapper was written in response to a request in the VB-AUDIO discord for
|
|
a way to invoke commands using Powershell. It is designed to be simple to use
|
|
but not every feature is added.
|
|
|
|
For past/future changes to this project refer to: [CHANGELOG](CHANGELOG.md)
|
|
|
|
## Tested against
|
|
- Basic 1.0.7.8
|
|
- Banana 2.0.5.8
|
|
- Potato 3.0.1.8
|
|
|
|
You may have success with many commands in earlier versions but some commands
|
|
(example Macrobuttons) were only added to the API in later releases.
|
|
|
|
## Requirements
|
|
- Voicemeeter: https://voicemeeter.com/
|
|
- Powershell 5.1
|
|
|
|
## Installation
|
|
#### PowerShellGet:
|
|
In Powershell as admin:
|
|
|
|
`Install-Module Voicemeeter`
|
|
|
|
In Powershell as current user:
|
|
|
|
`Install-Module -Name Voicemeeter -Scope CurrentUser`
|
|
|
|
You may be asked to install NuGet provider required by PowerShellGet if you don't have it already.
|
|
|
|
When prompted you will need to accept PSGallery as a trusted repository.
|
|
|
|
More Info:
|
|
- [PowerShellGet](https://docs.microsoft.com/en-us/powershell/scripting/gallery/installing-psget?view=powershell-7.1)
|
|
- [NuGet](https://www.powershellgallery.com/packages/NuGet/1.3.3)
|
|
- [PSGallery](https://docs.microsoft.com/en-gb/powershell/scripting/gallery/overview?view=powershell-7.1)
|
|
|
|
#### Direct download:
|
|
`git clone https://github.com/onyx-and-iris/voicemeeter-api-powershell.git`
|
|
|
|
All examples in this readme assume you've installed as a module.
|
|
If you decide to direct download see [alternative instructions](FROM_SOURCE.md).
|
|
|
|
## Use
|
|
When you instantiate Remote class you will automatically be logged in. Use a
|
|
try finally block to ensure you logout at the end of your code.
|
|
```powershell
|
|
Import-Module Voicemeeter
|
|
|
|
try {
|
|
# Run the factory function for required Voicemeeter type
|
|
$vmr = Get-RemoteBanana
|
|
|
|
# Set strip and bus params
|
|
$vmr.strip[0].mono = $true
|
|
$vmr.strip[0].mono '=> $true'
|
|
$vmr.bus[1].mute = $false
|
|
$vmr.bus[1].mute '=> $false'
|
|
|
|
# Set macrobutton with id 4, mode state to 1
|
|
$vmr.button[4].state = $true
|
|
$vmr.button[4].state '=> $true'
|
|
}
|
|
finally { $vmr.Logout() }
|
|
```
|
|
|
|
Voicemeeter factory function can be:
|
|
- Get-RemoteBasic
|
|
- Get-RemoteBanana
|
|
- Get-RemotePotato
|
|
|
|
There is no bounds checking in this wrapper, meaning if you attempt to set a
|
|
parameter that does not exist for that version of Voicemeeter the wrapper will
|
|
throw an error. So make sure what you are settings actually exists.
|
|
|
|
### Multiple parameters
|
|
Set many strip/bus/macrobutton parameters at once, for Example
|
|
```powershell
|
|
Import-Module Voicemeeter
|
|
|
|
try {
|
|
$vmr = Get-RemoteBanana
|
|
|
|
$hash = @{
|
|
strip_0 = @{mute = $true; mono = $true};
|
|
strip_2 = @{mute = $true; mono = $true};
|
|
bus_1 = @{mute = $true; mono = $true};
|
|
|
|
mb_34 = @{state = $true};
|
|
mb_12 = @{trigger = $false};
|
|
}
|
|
|
|
$vmr.Set_Multi($hash)
|
|
}
|
|
finally { $vmr.Logout() }
|
|
```
|
|
### Strip|Bus
|
|
The following strip/bus commands are available:
|
|
- mute
|
|
- mono
|
|
- solo
|
|
- A1-A5
|
|
- B1-B3
|
|
- limit
|
|
- gain
|
|
- comp
|
|
- gate
|
|
|
|
A,B commands depend on Voicemeeter type.
|
|
|
|
### Macrobuttons
|
|
Three modes defined: state, stateonly and trigger.
|
|
- State runs associated scripts
|
|
- Stateonly does not run associated scripts
|
|
- Index range (0, 69)
|
|
|
|
```
|
|
$vmr.button[3].state = $true
|
|
|
|
$vmr.button[4].stateonly = $false
|
|
|
|
$vmr.button[5].trigger = $true
|
|
```
|
|
|
|
### Run tests
|
|
Run tests using .\runall.ps1 which accepts two parameters:
|
|
- tag Run tests of this type
|
|
- num Run this number of tests
|
|
|
|
Current test types are 'higher' and 'lower'
|
|
|
|
Example:
|
|
`.\runall.ps1 -tag 'higher' -num 3`
|
|
|
|
Results will be logged and summary file written.
|