mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2024-11-22 01:40:49 +00:00
obs example added
This commit is contained in:
parent
c87c0768b8
commit
eaf92197dc
9
examples/obs/Gemfile
Normal file
9
examples/obs/Gemfile
Normal file
@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "voicemeeter", path: "../.."
|
||||
|
||||
gem "obsws", "~> 0.1.3"
|
||||
|
||||
gem "pathname", "~> 0.2.1"
|
23
examples/obs/README.md
Normal file
23
examples/obs/README.md
Normal file
@ -0,0 +1,23 @@
|
||||
## Requirements
|
||||
|
||||
- [OBS Studio v28+](https://obsproject.com/)
|
||||
- [OBSWS Ruby wrapper for Websocket v5](https://github.com/onyx-and-iris/obsws-ruby)
|
||||
|
||||
## About
|
||||
|
||||
A simple demonstration showing how to sync OBS scene switches to Voicemeeter states.
|
||||
|
||||
## Use
|
||||
|
||||
The script assumes you have connection info saved in a config yaml file named `config.yaml` placed next to `obs.rb`. It also assumes you have scenes named `START` `BRB` `END` and `LIVE`.
|
||||
|
||||
A valid `config.yaml` file might look like this:
|
||||
|
||||
```yaml
|
||||
connection:
|
||||
host: localhost
|
||||
port: 4455
|
||||
password: strongpassword
|
||||
```
|
||||
|
||||
Closing OBS will end the script and logout of Voicemeeter.
|
66
examples/obs/main.rb
Normal file
66
examples/obs/main.rb
Normal file
@ -0,0 +1,66 @@
|
||||
require "voicemeeter"
|
||||
require "obsws"
|
||||
require "yaml"
|
||||
require "pathname"
|
||||
|
||||
class Observer
|
||||
attr_reader :running
|
||||
|
||||
def initialize(vm, **kwargs)
|
||||
@vm = vm
|
||||
@obsws = OBSWS::Events::Client.new(**kwargs)
|
||||
@obsws.add_observer(self)
|
||||
@running = true
|
||||
end
|
||||
|
||||
def run
|
||||
sleep(0.1) while running
|
||||
end
|
||||
|
||||
def on_start
|
||||
@vm.strip[0].mute = true
|
||||
@vm.strip[1].B1 = true
|
||||
@vm.strip[2].B2 = true
|
||||
end
|
||||
|
||||
def on_live
|
||||
@vm.strip[0].mute = false
|
||||
@vm.strip[7].A3 = true
|
||||
@vm.strip[7].fadeto(-6, 500)
|
||||
@vm.vban.instream[0].on = true
|
||||
end
|
||||
|
||||
def on_brb
|
||||
@vm.strip[0].mute = false
|
||||
@vm.strip[5].A1 = true
|
||||
@vm.strip[5].A2 = true
|
||||
@vm.strip[7].fadeto(0, 500)
|
||||
end
|
||||
|
||||
def on_end
|
||||
@vm.apply({"strip-0" => {mute: true}, "vban-instream-0" => {on: false}})
|
||||
end
|
||||
|
||||
def on_current_program_scene_changed(data)
|
||||
scene = data.scene_name
|
||||
puts "Switched to scene #{scene}"
|
||||
send("on_#{scene.downcase}")
|
||||
end
|
||||
|
||||
def on_exit_started
|
||||
puts "OBS closing!"
|
||||
@obsws.close
|
||||
@running = false
|
||||
end
|
||||
end
|
||||
|
||||
def conn_from_yml
|
||||
YAML.load_file("config.yaml", symbolize_names: true)[:connection]
|
||||
end
|
||||
|
||||
|
||||
if $0 == __FILE__
|
||||
Voicemeeter::Remote.new(:potato).run do |vm|
|
||||
Observer.new(vm, **conn_from_yml).run
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user