mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2024-11-22 09:50:49 +00:00
higher classes bus, button, strip and vban modules
bus, strip are not fully implemented yet
This commit is contained in:
parent
0679959ae1
commit
941c3339d8
24
lib/voicemeeter/bus.rb
Normal file
24
lib/voicemeeter/bus.rb
Normal file
@ -0,0 +1,24 @@
|
||||
require_relative "iremote"
|
||||
require_relative "kinds"
|
||||
|
||||
module Voicemeeter
|
||||
module Bus
|
||||
class Bus < IRemote
|
||||
def self.make(remote, i)
|
||||
"
|
||||
Factory function for Bus classes.
|
||||
|
||||
Returns a PhysicalBus or VirtualBus class
|
||||
"
|
||||
p_out, v_out = remote.kind.outs
|
||||
i < p_out ? PhysicalBus.new(remote, i) : VirtualBus.new(remote, i)
|
||||
end
|
||||
end
|
||||
|
||||
class PhysicalBus < Bus
|
||||
end
|
||||
|
||||
class VirtualBus < Bus
|
||||
end
|
||||
end
|
||||
end
|
50
lib/voicemeeter/button.rb
Normal file
50
lib/voicemeeter/button.rb
Normal file
@ -0,0 +1,50 @@
|
||||
require_relative "iremote"
|
||||
require_relative "meta"
|
||||
|
||||
module Voicemeeter
|
||||
module Button
|
||||
module ButtonEnum
|
||||
STATE = 1
|
||||
STATEONLY = 2
|
||||
TRIGGER = 3
|
||||
end
|
||||
|
||||
class MacroButton < IRemote
|
||||
def initialize(remote, i)
|
||||
super
|
||||
end
|
||||
|
||||
def getter(mode)
|
||||
@remote.get_buttonstatus(@index, mode)
|
||||
end
|
||||
|
||||
def setter(set, mode)
|
||||
@remote.set_buttonstatus(@index, set, mode)
|
||||
end
|
||||
|
||||
def state
|
||||
getter(ButtonEnum::STATE)
|
||||
end
|
||||
|
||||
def state=(value)
|
||||
setter(ButtonEnum::STATE, value && 1 || 0)
|
||||
end
|
||||
|
||||
def stateonly
|
||||
getter(ButtonEnum::STATEONLY)
|
||||
end
|
||||
|
||||
def stateonly=(value)
|
||||
setter(ButtonEnum::STATEONLY, value && 1 || 0)
|
||||
end
|
||||
|
||||
def trigger
|
||||
getter(ButtonEnum::TRIGGER)
|
||||
end
|
||||
|
||||
def trigger=(value)
|
||||
setter(ButtonEnum::TRIGGER, value && 1 || 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
162
lib/voicemeeter/strip.rb
Normal file
162
lib/voicemeeter/strip.rb
Normal file
@ -0,0 +1,162 @@
|
||||
require_relative "iremote"
|
||||
require_relative "kinds"
|
||||
require_relative "meta"
|
||||
require_relative "mixins"
|
||||
|
||||
module Voicemeeter
|
||||
module Strip
|
||||
class Strip < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def self.make(remote, i)
|
||||
"
|
||||
Factory function for Strip classes.
|
||||
|
||||
Returns a PhysicalStrip or VirtualStrip class
|
||||
"
|
||||
p_in, v_in = remote.kind.ins
|
||||
i < p_in ? PhysicalStrip.new(remote, i) : VirtualStrip.new(remote, i)
|
||||
end
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_bool :solo, :mute, :mono
|
||||
make_accessor_float :gain
|
||||
make_accessor_int :limit
|
||||
make_accessor_string :label
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}]"
|
||||
end
|
||||
end
|
||||
|
||||
class PhysicalStrip < Strip
|
||||
include Mixins::StripMixins::Xy::Pan
|
||||
include Mixins::StripMixins::Xy::Color
|
||||
include Mixins::StripMixins::Xy::Fx
|
||||
include Mixins::StripMixins::Fx
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_float :audibility
|
||||
|
||||
@comp = StripComp.new(remote, i)
|
||||
@gate = StripGate.new(remote, i)
|
||||
@denoiser = StripDenoiser.new(remote, i)
|
||||
@eq = StripEq.new(remote, i)
|
||||
@device = StripDevice.new(remote, i)
|
||||
end
|
||||
end
|
||||
|
||||
class StripComp < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_float :gainin,
|
||||
:ratio,
|
||||
:threshold,
|
||||
:attack,
|
||||
:release,
|
||||
:knee,
|
||||
:gainout
|
||||
make_accessor_bool :makeup
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}].comp"
|
||||
end
|
||||
|
||||
def knob
|
||||
getter("").to_i == 1
|
||||
end
|
||||
|
||||
def knob=(val)
|
||||
setter("", val && 1 || 0)
|
||||
end
|
||||
end
|
||||
|
||||
class StripGate < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_float :threshold, :damping, :attack, :hold, :release
|
||||
make_accessor_int :bpsidechain
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}].gate"
|
||||
end
|
||||
|
||||
def knob
|
||||
getter("").to_i == 1
|
||||
end
|
||||
|
||||
def knob=(val)
|
||||
setter("", val && 1 || 0)
|
||||
end
|
||||
end
|
||||
|
||||
class StripDenoiser < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}].denoiser"
|
||||
end
|
||||
|
||||
def knob
|
||||
getter("").to_i == 1
|
||||
end
|
||||
|
||||
def knob=(val)
|
||||
setter("", val && 1 || 0)
|
||||
end
|
||||
end
|
||||
|
||||
class StripEq < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_bool :on, :ab
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}].device"
|
||||
end
|
||||
end
|
||||
|
||||
class StripDevice < IRemote
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_reader_int :sr
|
||||
make_reader_string :name
|
||||
make_writer_string :wdm, :ks, :mme, :asio
|
||||
end
|
||||
|
||||
def identifier
|
||||
"strip[#{@index}].device"
|
||||
end
|
||||
end
|
||||
|
||||
class VirtualStrip < Strip
|
||||
include Mixins::StripMixins::Xy::Pan
|
||||
include Mixins::StripMixins::Apps
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_bool :mc
|
||||
make_accessor_int :k
|
||||
make_accessor_float :bass, :mid, :treble
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
86
lib/voicemeeter/vban.rb
Normal file
86
lib/voicemeeter/vban.rb
Normal file
@ -0,0 +1,86 @@
|
||||
require_relative "iremote"
|
||||
require_relative "meta"
|
||||
require_relative "errors"
|
||||
|
||||
module Voicemeeter
|
||||
module Vban
|
||||
class VbanStream < IRemote
|
||||
"
|
||||
A class representing a VBAN stream
|
||||
"
|
||||
include Meta_Functions
|
||||
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_bool :on
|
||||
make_accessor_string :name, :ip
|
||||
make_accessor_int :quality, :route
|
||||
end
|
||||
|
||||
def identifier
|
||||
"vban.#{direction}stream[#{@index}]"
|
||||
end
|
||||
|
||||
def direction
|
||||
raise "Called abstract mehod: direction"
|
||||
end
|
||||
end
|
||||
|
||||
class VbanInstream < VbanStream
|
||||
"
|
||||
A subclass representing a VBAN Instream
|
||||
"
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_reader_int :sr, :channel, :bit
|
||||
end
|
||||
|
||||
def direction
|
||||
:in
|
||||
end
|
||||
end
|
||||
|
||||
class VbanOutstream < VbanStream
|
||||
"
|
||||
A subclass representing a VBAN Outstream
|
||||
"
|
||||
def initialize(remote, i)
|
||||
super
|
||||
make_accessor_int :sr, :channel, :bit
|
||||
end
|
||||
|
||||
def direction
|
||||
:out
|
||||
end
|
||||
end
|
||||
|
||||
class Vban
|
||||
attr_accessor :instream, :outstream
|
||||
|
||||
def initialize(remote)
|
||||
"
|
||||
Initializes a Vban class
|
||||
|
||||
Creates an array for each in/out stream and sets as class attributes
|
||||
"
|
||||
vban_in, vban_out = remote.kind.vban
|
||||
@instream = []
|
||||
vban_in.times { |i| @instream << VbanInstream.new(remote, i) }
|
||||
@outstream = []
|
||||
vban_out.times { |i| @outstream << VbanOutstream.new(remote, i) }
|
||||
|
||||
@remote = remote
|
||||
end
|
||||
|
||||
#stree-ignore
|
||||
def enable
|
||||
@remote.set("vban.enable", 1)
|
||||
end
|
||||
|
||||
#stree-ignore
|
||||
def disable
|
||||
@remote.set("vban.enable", 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user