require_relative "errors" module Voicemeeter class IRemote " Common interface between base class and higher classes. " def initialize(remote, i = nil) @remote = remote @index = i end def to_s "#{self.class.name.split("::").last}#{@index}#{@remote.kind}" end def getter(param, is_string = false) @remote.get(_cmd(param), is_string) end def setter(param, value) @remote.set(_cmd(param), value) end def _cmd(param) param.empty? ? "#{self.identifier}" : "#{self.identifier}.#{param}" end def identifier raise "Called abstract method: identifier" end def apply(params) params.each { |key, val| self.send(key, val) } end end end