mirror of
https://github.com/onyx-and-iris/voicemeeter-api-powershell.git
synced 2025-01-18 21:30:46 +00:00
68 lines
1.5 KiB
PowerShell
68 lines
1.5 KiB
PowerShell
|
param(
|
||
|
[switch]$interactive,
|
||
|
[Parameter(Mandatory)]
|
||
|
[String]$kind,
|
||
|
[String[]]$script = @()
|
||
|
)
|
||
|
|
||
|
Import-Module Voicemeeter
|
||
|
|
||
|
function get-value {
|
||
|
param([object]$vmr, [string]$line)
|
||
|
try {
|
||
|
$retval = $vmr.Getter($line)
|
||
|
}
|
||
|
catch {
|
||
|
$retval = $vmr.Getter_String($line)
|
||
|
}
|
||
|
$retval
|
||
|
}
|
||
|
|
||
|
function msgHandler {
|
||
|
param([object]$vmr, [string]$line)
|
||
|
$line + " passed to handler" | Write-Debug
|
||
|
if ($line[0] -eq "!") {
|
||
|
$retval = get-value -vmr $vmr -line $line.substring(1)
|
||
|
$vmr.Setter($line.substring(1), 1 - $retval)
|
||
|
}
|
||
|
elseif ($line.Contains("=")) {
|
||
|
"Setting value $line" | Write-Debug
|
||
|
$vmr.SendText($line)
|
||
|
}
|
||
|
else {
|
||
|
"Getting value $line" | Write-Debug
|
||
|
$retval = get-value -vmr $vmr -line $line
|
||
|
$line + " = " + $retval | Write-Host
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function read-hostuntilflag {
|
||
|
param([object]$vmr)
|
||
|
while (($line = Read-Host) -cne [string]::Empty) { msgHandler -vmr $vmr -line $line }
|
||
|
}
|
||
|
|
||
|
|
||
|
function main {
|
||
|
[object]$vmr
|
||
|
|
||
|
try {
|
||
|
switch ($kind) {
|
||
|
"basic" { $vmr = Get-RemoteBasic }
|
||
|
"banana" { $vmr = Get-RemoteBanana }
|
||
|
"potato" { $vmr = Get-RemotePotato }
|
||
|
}
|
||
|
|
||
|
if ($interactive) {
|
||
|
"Press <Enter> to exit" | Write-Host
|
||
|
read-hostuntilflag -vmr $vmr
|
||
|
return
|
||
|
}
|
||
|
$script | ForEach-Object {
|
||
|
msgHandler -vmr $vmr -line $_
|
||
|
}
|
||
|
}
|
||
|
finally { $vmr.Logout() }
|
||
|
}
|
||
|
|
||
|
if ($MyInvocation.InvocationName -ne '.') { main }
|