2023-07-17 20:00:34 +01:00
|
|
|
require "voicemeeter"
|
|
|
|
require "obsws"
|
|
|
|
require "yaml"
|
|
|
|
require "pathname"
|
|
|
|
|
2023-07-18 08:19:17 +01:00
|
|
|
class Main
|
2023-07-17 20:00:34 +01:00
|
|
|
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|
|
2023-07-18 08:19:17 +01:00
|
|
|
Main.new(vm, **conn_from_yml).run
|
2023-07-17 20:00:34 +01:00
|
|
|
end
|
|
|
|
end
|