obs example added

readme for obs example added

config.psd1 added to gitignore
This commit is contained in:
norm 2022-11-04 01:51:40 +00:00
parent 6cc43fa553
commit 7f5d92603e
3 changed files with 71 additions and 0 deletions

2
.gitignore vendored
View File

@ -3,3 +3,5 @@ quick.ps1
lib/*.psd1 lib/*.psd1
**/*.log **/*.log
config.psd1

22
examples/obs/README.md Normal file
View File

@ -0,0 +1,22 @@
## About
Demonstrates how to sync Voicemeeter states with OBS scene switches.
## Requirements
- [OBS Studio 28+](https://obsproject.com/)
- [OBSWebSocket for Powershell](https://github.com/onyx-and-iris/OBSWebSocket-Powershell)
## Use
This example assumes your OBS connection info saved in `config.psd1`, placed next to `Vm-Obs-Sync.ps1`:
```psd1
@{
hostname = "localhost"
port = 4455
password = "mystrongpassword"
}
```
Simply run the script and change current OBS scene.

View File

@ -0,0 +1,47 @@
Import-Module Voicemeeter
Import-Module OBSWebSocket
$VerbosePreference = "Continue"
$info = @{
START = "Toggling Strip 0 mute"
BRB = "Setting Strip 0 gain to -8.3"
END = "Setting Strip 0 mono to `$false"
LIVE = "Setting Strip 0 color_x to 0.3"
}
function CurrentProgramSceneChanged($data) {
"Switched to scene " + $data.sceneName | Write-Host
switch ($data.SceneName) {
"START" { $vmr.strip[0].mute = !$vmr.strip[0].mute }
"BRB" { $vmr.strip[0].gain = -8.3 }
"END" { $vmr.strip[0].mono = $true }
"LIVE" { $vmr.strip[0].color_x = 0.3 }
default { "Expected START, BRB, END or LIVE scene" | Write-Host }
}
$info[$data.SceneName] | Write-Host
}
function ConnFromFile {
$configpath = Join-Path $PSScriptRoot "config.psd1"
return Import-PowerShellDataFile -Path $configpath
}
function main {
try {
$vmr = Get-RemoteBasic
$conn = ConnFromFile
$r_client = Get-OBSRequest -hostname $conn.hostname -port $conn.port -pass $conn.password
$e_client = Get-OBSEvent -hostname $conn.hostname -port $conn.port -pass $conn.password
$callbacks = @("CurrentProgramSceneChanged", ${function:CurrentProgramSceneChanged})
$e_client.Register($callbacks)
} finally {
$r_client.TearDown()
$e_client.TearDown()
$vmr.Logout()
}
}
if ($MyInvocation.InvocationName -ne '.') { main }