read_from_yaml implemented

This commit is contained in:
onyx-and-iris 2023-07-09 19:44:43 +01:00
parent f7f8ed64ee
commit e91d8dbd37

View File

@ -1,6 +1,8 @@
require "yaml"
require_relative "kinds"
require "easy_logging"
require "pathname"
require_relative "kinds"
module Voicemeeter
module Configs
@ -22,49 +24,92 @@ module Voicemeeter
def build_reset_profile(overrides = {})
aouts = (0...@kind.phys_out).to_h { |i| ["A#{i + 1}", false] }
bouts = (0...@kind.virt_out).to_h { |i| ["B#{i + 1}", false] }
bools = %w[mute mono solo].to_h { |param| [param, false] }
floats = ["gain"].to_h { |param| [param, 0.0] }
strip_bools = %w[mute mono solo].to_h { |param| [param, false] }
gain = ["gain"].to_h { |param| [param, 0.0] }
phys_float =
%w[comp gate denoiser].to_h { |param| [param, { knob: 0.0 }] }
phys_bool = ["eq"].to_h { |param| [param, { on: false }] }
eq = ["eq"].to_h { |param| [param, { on: false }] }
overrides = { "B1" => true }
# physical strip params
phys_strip =
(0...@kind.phys_in).to_h do |i|
[
"strip-#{i}",
{ **aouts, **bouts, **bools, **floats, **phys_float, **phys_bool }
{
**aouts,
**bouts,
**strip_bools,
**gain,
**phys_float,
**eq,
**overrides
}
]
end
overrides = { "A1" => true }
# virtual strip params
virt_strip =
(@kind.phys_in...@kind.phys_in + @kind.virt_in).to_h do |i|
["strip-#{i}", { **aouts, **bouts, **bools, **floats }]
[
"strip-#{i}",
{ **aouts, **bouts, **strip_bools, **gain, **overrides }
]
end
{ **phys_strip, **virt_strip }
bus_bools = %w[mute mono].to_h { |param| [param, false] }
bus =
(0...@kind.num_bus).to_h do |i|
["bus-#{i}", { **bus_bools, **gain, **eq }]
end
{ **phys_strip, **virt_strip, **bus }
end
def read_from_yml
filepaths = [
Pathname.getwd.join("configs", @kind.name.to_s),
Pathname.new(Dir.home).join(
".config",
"voicemeeter-rb",
@kind.name.to_s
),
Pathname.new(Dir.home).join(
"Documents",
"Voicemeeter",
"configs",
@kind.name.to_s
)
]
filepaths.each do |pn|
configs = pn.glob("*.yml")
configs.each do |config|
filename = config.basename.sub_ext ""
@configs[filename.to_s.to_sym] = YAML.load_file(config)
end
end
end
public
def build
@configs[:reset] = build_reset_profile
read_from_yml
end
end
public
def load
def get(kind_id)
if @loaders.nil?
@loaders = Kinds::ALL.to_h { |kind| [kind.name, Loader.new(kind)] }
@loaders.each { |name, loader| loader.build }
end
end
def get(kind_id)
@loaders[kind_id].configs
end
module_function :get, :load
module_function :get
end
end