From 24edb0b134e911094dea1096aa661ddcdb457042 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sat, 15 Jul 2023 00:16:54 +0100 Subject: [PATCH] Device class implemented --- lib/voicemeeter/device.rb | 30 ++++++++++++++++++++++++++++++ lib/voicemeeter/remote.rb | 4 +++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 lib/voicemeeter/device.rb diff --git a/lib/voicemeeter/device.rb b/lib/voicemeeter/device.rb new file mode 100644 index 0000000..0a4fd51 --- /dev/null +++ b/lib/voicemeeter/device.rb @@ -0,0 +1,30 @@ +require_relative "iremote" +require_relative "meta" + +module Voicemeeter + class Device + def initialize(remote) + @remote = remote + end + + def to_s + "#{self.class.name.split("::").last}#{@index}#{@remote.kind}" + end + + def getter(**kwargs) + return @remote.get_num_devices(kwargs[:direction]) if kwargs[:index].nil? + + vals = @remote.get_device_description(kwargs[:index], kwargs[:direction]) + types = {1 => "mme", 3 => "wdm", 4 => "ks", 5 => "asio"} + {name: vals[0], type: types[vals[1]], id: vals[2]} + end + + def ins = getter(direction: :in) + + def outs = getter(direction: :out) + + def input(i) = getter(index: i, direction: :in) + + def output(i) = getter(index: i, direction: :out) + end +end diff --git a/lib/voicemeeter/remote.rb b/lib/voicemeeter/remote.rb index 149a34b..736b2b5 100644 --- a/lib/voicemeeter/remote.rb +++ b/lib/voicemeeter/remote.rb @@ -7,6 +7,7 @@ require_relative "button" require_relative "vban" require_relative "command" require_relative "recorder" +require_relative "device" require_relative "configs" module Voicemeeter @@ -14,7 +15,7 @@ module Voicemeeter private class Remote < Base - attr_reader :strip, :bus, :button, :vban, :command, :recorder + attr_reader :strip, :bus, :button, :vban, :command, :recorder, :device def initialize(kind, **kwargs) super @@ -24,6 +25,7 @@ module Voicemeeter @vban = Vban::Vban.new(self) @command = Command.new(self) @recorder = Recorder::Recorder.new(self) + @device = Device.new(self) end def configs