voicemeeter-api-python/examples/obs/__main__.py

67 lines
1.7 KiB
Python
Raw Normal View History

2022-09-29 10:01:18 +01:00
import logging
import obsws_python as obs
2022-07-02 02:23:22 +01:00
import voicemeeterlib
logging.basicConfig(level=logging.INFO)
class Observer:
def __init__(self, vm):
self.vm = vm
self.client = obs.EventClient()
self.client.callback.register(self.on_current_program_scene_changed)
def on_start(self):
self.vm.strip[0].mute = True
self.vm.strip[1].B1 = True
self.vm.strip[2].B2 = True
def on_brb(self):
self.vm.strip[7].fadeto(0, 500)
self.vm.bus[0].mute = True
def on_end(self):
self.vm.apply(
{
"strip-0": {"mute": True},
"strip-1": {"mute": True, "B1": False},
"strip-2": {"mute": True, "B1": False},
"vban-in-0": {"on": False},
}
)
def on_live(self):
self.vm.strip[0].mute = False
self.vm.strip[7].fadeto(-6, 500)
self.vm.strip[7].A3 = True
self.vm.vban.instream[0].on = True
def on_current_program_scene_changed(self, data):
def fget(scene):
run = {
"START": self.on_start,
"BRB": self.on_brb,
"END": self.on_end,
"LIVE": self.on_live,
}
return run.get(scene)
scene = data.scene_name
print(f"Switched to scene {scene}")
if fn := fget(scene):
fn()
def main():
2022-09-29 10:01:18 +01:00
subs = {ev: False for ev in ["pdirty", "mdirty", "midi"]}
with voicemeeterlib.api("potato", subs=subs) as vm:
obs = Observer(vm)
while cmd := input("<Enter> to exit\n"):
2022-07-02 02:23:22 +01:00
if not cmd:
break
if __name__ == "__main__":
main()