mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2024-11-15 23:00:48 +00:00
gainlayer, levels added to Strip class
This commit is contained in:
parent
48b9e931c4
commit
ecb33bc8a3
@ -8,13 +8,15 @@ module Voicemeeter
|
|||||||
include Mixins::Outputs
|
include Mixins::Outputs
|
||||||
include Mixins::Fades
|
include Mixins::Fades
|
||||||
|
|
||||||
|
attr_reader :gainlayer, :levels
|
||||||
|
|
||||||
def self.make(remote, i)
|
def self.make(remote, i)
|
||||||
"
|
"
|
||||||
Factory function for Strip classes.
|
Factory function for Strip classes.
|
||||||
|
|
||||||
Returns a PhysicalStrip or VirtualStrip class
|
Returns a PhysicalStrip or VirtualStrip class
|
||||||
"
|
"
|
||||||
p_in, v_in = remote.kind.ins
|
p_in = remote.kind.phys_in
|
||||||
i < p_in ? PhysicalStrip.new(remote, i) : VirtualStrip.new(remote, i)
|
i < p_in ? PhysicalStrip.new(remote, i) : VirtualStrip.new(remote, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -24,6 +26,9 @@ module Voicemeeter
|
|||||||
make_accessor_float :gain
|
make_accessor_float :gain
|
||||||
make_accessor_int :limit
|
make_accessor_int :limit
|
||||||
make_accessor_string :label
|
make_accessor_string :label
|
||||||
|
|
||||||
|
@gainlayer = (0...8).map { |j| GainLayer.new(remote, i, j) }
|
||||||
|
@levels = StripLevels.new(remote, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
def identifier
|
def identifier
|
||||||
@ -147,8 +152,102 @@ module Voicemeeter
|
|||||||
super
|
super
|
||||||
make_accessor_bool :mc
|
make_accessor_bool :mc
|
||||||
make_accessor_int :k
|
make_accessor_int :k
|
||||||
make_accessor_float :bass, :mid, :treble
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def bass
|
||||||
|
round(getter("EQGain1"), 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def bass=(val)
|
||||||
|
setter("EQGain1", val)
|
||||||
|
end
|
||||||
|
|
||||||
|
def mid
|
||||||
|
round(getter("EQGain2"), 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def mid=(val)
|
||||||
|
setter("EQGain2", val)
|
||||||
|
end
|
||||||
|
|
||||||
|
def treble
|
||||||
|
round(getter("EQGain3"), 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
def treble=(val)
|
||||||
|
setter("EQGain3", val)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class GainLayer < IRemote
|
||||||
|
def initialize(remote, i, j)
|
||||||
|
super(remote, i)
|
||||||
|
@j = j
|
||||||
|
end
|
||||||
|
|
||||||
|
def identifier
|
||||||
|
"strip[#{@index}]"
|
||||||
|
end
|
||||||
|
|
||||||
|
def gain
|
||||||
|
self.getter("gainlayer[#{@j}]")
|
||||||
|
end
|
||||||
|
|
||||||
|
def gain=(value)
|
||||||
|
self.setter("gainlayer[#{@j}]", value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
module StripLevelEnum
|
||||||
|
PREFADER = 0
|
||||||
|
POSTFADER = 1
|
||||||
|
POSTMUTE = 2
|
||||||
|
BUS = 3
|
||||||
|
end
|
||||||
|
|
||||||
|
class StripLevels < IRemote
|
||||||
|
attr_reader :prefader, :postfader, :postmute
|
||||||
|
|
||||||
|
def initialize(remote, i)
|
||||||
|
super
|
||||||
|
p_in = remote.kind.phys_in
|
||||||
|
if i < p_in
|
||||||
|
@init = i * 2
|
||||||
|
@offset = 2
|
||||||
|
else
|
||||||
|
@init = (p_in * 2) + ((i - p_in) * 8)
|
||||||
|
@offset = 8
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def identifier
|
||||||
|
"strip[#{@index}]"
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_level(mode)
|
||||||
|
@remote.strip_mode = mode
|
||||||
|
if @remote.running && @remote.event.ldirty
|
||||||
|
vals = @remote.cache[:strip_level][@init, @offset]
|
||||||
|
else
|
||||||
|
vals =
|
||||||
|
(@init...@init + @offset).map { |i| @remote.get_level(mode, i) }
|
||||||
|
end
|
||||||
|
vals.map { |x| x > 0 ? (20 * Math.log(x, 10)).round(1) : -200.0 }
|
||||||
|
end
|
||||||
|
|
||||||
|
def prefader
|
||||||
|
get_level(StripLevelEnum::PREFADER)
|
||||||
|
end
|
||||||
|
|
||||||
|
def postfader
|
||||||
|
get_level(StripLevelEnum::POSTFADER)
|
||||||
|
end
|
||||||
|
|
||||||
|
def postmute
|
||||||
|
get_level(StripLevelEnum::POSTMUTE)
|
||||||
|
end
|
||||||
|
|
||||||
|
def isdirty? = @remote._strip_comp[@init, @offset].any?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user