2022-10-27 21:21:19 +01:00
|
|
|
param(
|
|
|
|
[switch]$interactive,
|
2022-10-30 01:50:30 +01:00
|
|
|
[switch]$output,
|
2022-10-27 21:21:19 +01:00
|
|
|
[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 "!") {
|
2022-10-30 01:50:30 +01:00
|
|
|
if ($output) { "Toggling " + $line.substring(1) | Write-Host }
|
2022-10-27 21:21:19 +01:00
|
|
|
$retval = get-value -vmr $vmr -line $line.substring(1)
|
|
|
|
$vmr.Setter($line.substring(1), 1 - $retval)
|
|
|
|
}
|
|
|
|
elseif ($line.Contains("=")) {
|
2022-10-30 01:50:30 +01:00
|
|
|
if ($output) { "Setting $line" | Write-Host }
|
2022-10-27 21:21:19 +01:00
|
|
|
$vmr.SendText($line)
|
|
|
|
}
|
|
|
|
else {
|
2022-10-30 01:50:30 +01:00
|
|
|
if ($output) { "Getting $line" | Write-Host }
|
2022-10-27 21:21:19 +01:00
|
|
|
$retval = get-value -vmr $vmr -line $line
|
|
|
|
$line + " = " + $retval | Write-Host
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-10-30 01:50:30 +01:00
|
|
|
function read-hostuntilempty {
|
2022-10-27 21:21:19 +01:00
|
|
|
param([object]$vmr)
|
2022-10-30 01:50:30 +01:00
|
|
|
while (($line = Read-Host) -cne[string]::Empty) { msgHandler -vmr $vmr -line $line }
|
2022-10-27 21:21:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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
|
2022-10-30 01:50:30 +01:00
|
|
|
read-hostuntilempty -vmr $vmr
|
2022-10-27 21:21:19 +01:00
|
|
|
return
|
|
|
|
}
|
|
|
|
$script | ForEach-Object {
|
|
|
|
msgHandler -vmr $vmr -line $_
|
|
|
|
}
|
|
|
|
}
|
|
|
|
finally { $vmr.Logout() }
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($MyInvocation.InvocationName -ne '.') { main }
|