From 24e2b581f8c59edd523c5925fae5f8edc5d04eff Mon Sep 17 00:00:00 2001 From: onyx-and-iris <75868496+onyx-and-iris@users.noreply.github.com> Date: Thu, 27 Oct 2022 21:21:10 +0100 Subject: [PATCH] goto-nextbus refactored --- examples/nextbus/GoTo-NextBus.ps1 | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 examples/nextbus/GoTo-NextBus.ps1 diff --git a/examples/nextbus/GoTo-NextBus.ps1 b/examples/nextbus/GoTo-NextBus.ps1 new file mode 100644 index 0000000..681a43a --- /dev/null +++ b/examples/nextbus/GoTo-NextBus.ps1 @@ -0,0 +1,40 @@ +<# + 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 Voicemeeter + +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) { + Write-Host "bus", $bus.index, "is unmuted... muting it" + $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() }