voicemeeter-api-powershell/examples/nextbus/GoTo-NextBus.ps1
onyx-and-iris 62ad51c6b8 examples now using relative import path
obs example now using obs-powershell module. README updated.
2022-12-16 17:16:02 +00:00

41 lines
1.1 KiB
PowerShell

<#
1) Loop through an array of bus objects.
2) Mute first unmuted bus
3) If next bus in array exists, unmute it, otherwise clear unmuted variable.
4) If every bus in array is muted, unmute the first bus specified in array.
Credits go to @bobsupercow
#>
Import-Module ..\..\lib\Voicemeeter.psm1
try {
$vmr = Get-RemotePotato
$buses = @($vmr.bus[1], $vmr.bus[2], $vmr.bus[4], $vmr.bus[6])
$unmutedIndex = $null
# 1)
$buses | ForEach-Object {
$bus = $_
# 2)
if (-not $bus.mute) {
"bus " + $bus.index + " is unmuted... muting it" | Write-Host
$unmutedIndex = $buses.IndexOf($bus)
$bus.mute = $true
# 3)
if ($buses[++ $unmutedIndex]) {
"unmuting bus " + $buses[$unmutedIndex].index | Write-Host
$buses[$unmutedIndex].mute = $false
break
}
else { Clear-Variable unmutedIndex }
}
}
# 4)
if ($null -eq $unmutedIndex) { $buses[0].mute = $false }
"unmuting bus " + $buses[0].index | Write-Host
}
finally { $vmr.Logout() }