diff --git a/README.md b/README.md index a9cd466..d6c9ef6 100644 --- a/README.md +++ b/README.md @@ -42,9 +42,9 @@ import xair_api def main(): with xair_api.connect(kind_id, ip=ip) as mixer: mixer.strip[8].config.name = "sm7b" - mixer.strip[8].config.on = True + mixer.strip[8].mix.on = True print( - f"strip 09 ({mixer.strip[8].config.name}) on has been set to {mixer.strip[8].config.on}" + f"strip 09 ({mixer.strip[8].config.name}) on has been set to {mixer.strip[8].mix.on}" ) diff --git a/examples/xair-obs/README.md b/examples/xair-obs/README.md new file mode 100644 index 0000000..2f4fdde --- /dev/null +++ b/examples/xair-obs/README.md @@ -0,0 +1,26 @@ +## Requirements + +- [OBS Studio](https://obsproject.com/) +- [OBS Python SDK for Websocket v5](https://github.com/aatikturk/obsws-python) + +## About + +A simple demonstration showing how to sync OBS scene switches to Xair states. The script assumes you have OBS connection info saved in +a config file named `config.toml` placed next to `__main__.py`. It also assumes you have scenes named `START` `BRB` `END` and `LIVE`. + +A valid `config.toml` file might look like this: + +```toml +[connection] +host = "localhost" +port = 4455 +password = "mystrongpass" +``` + +## Use + +Change the xair ip argument from `mixer.local` to the ip of your xair mixer. Run the code and switch between scenes in OBS. + +## Notes + +This example was inspired by [OBS-to-XAir](https://github.com/lebaston100/OBS-to-XAir) diff --git a/examples/xair-obs/__main__.py b/examples/xair-obs/__main__.py new file mode 100644 index 0000000..bc8049e --- /dev/null +++ b/examples/xair-obs/__main__.py @@ -0,0 +1,38 @@ +import obsws_python as obs +import xair_api + + +class Observer: + def __init__(self, cl, mixer): + self._cl = cl + self._mixer = mixer + self._cl.callback.register(self.on_current_program_scene_changed) + print(f"Registered events: {self._cl.callback.get()}") + + def on_current_program_scene_changed(self, data): + scene = data.scene_name + print(f"Switched to scene {scene}") + match scene: + case "START": + print("Toggling strip 01 on") + self._mixer.strip[0].mix.on = not self._mixer.strip[0].mix.on + case "BRB": + print("Setting strip 08 fader") + self._mixer.strip[7].mix.fader = -12.8 + case "END": + print("Settings strip 02 color") + self._mixer.strip[1].config.color = 8 + case "LIVE": + self._mixer.dca[0].on = True + print(f"DCA 1 is {self._mixer.dca[0].on}") + + +if __name__ == "__main__": + cl = obs.EventClient() + + with xair_api.connect("MR18", ip="mixer.local") as mixer: + Observer(cl, mixer) + + while cmd := input(" to exit\n"): + if not cmd: + break diff --git a/examples/xair-obs/setup.py b/examples/xair-obs/setup.py new file mode 100644 index 0000000..c195d00 --- /dev/null +++ b/examples/xair-obs/setup.py @@ -0,0 +1,7 @@ +from setuptools import setup + +setup( + name="xair-obs", + description="Syncs Xair states to OBS scenes", + install_requires=["obsws-python", "xair-api"], +)