From c0d2379b62eac13f1eaee07a5eb63a0e2bdda02c Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Fri, 14 Jul 2023 21:03:40 +0100 Subject: [PATCH] ensure we initialize comp arrays use zip,map to calculate comps --- .gitignore | 4 +++- examples/events/main.rb | 2 +- lib/voicemeeter/base.rb | 2 +- lib/voicemeeter/event.rb | 4 ++-- lib/voicemeeter/worker.rb | 10 ++++------ 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index c140615..bbc5b29 100644 --- a/.gitignore +++ b/.gitignore @@ -57,4 +57,6 @@ Gemfile.lock # .rubocop-https?--* # test -quick.rb \ No newline at end of file +quick.rb + +.vscode/ \ No newline at end of file diff --git a/examples/events/main.rb b/examples/events/main.rb index de28054..bbab054 100644 --- a/examples/events/main.rb +++ b/examples/events/main.rb @@ -28,7 +28,7 @@ class Main def on_ldirty @vm.bus.each do |bus| - puts "#{bus} #{bus.levels.all}" if bus.levels.isdirty? + puts "#{bus} #{bus.levels.all.join(" ")}" if bus.levels.isdirty? end end end diff --git a/lib/voicemeeter/base.rb b/lib/voicemeeter/base.rb index 64cbd5c..c7510f0 100644 --- a/lib/voicemeeter/base.rb +++ b/lib/voicemeeter/base.rb @@ -64,7 +64,7 @@ module Voicemeeter cache[:strip_buf], cache[:bus_buf] = _get_levels !( cache[:strip_level] == cache[:strip_buf] && - @cache[:bus_level] == cache[:bus_buf] + cache[:bus_level] == cache[:bus_buf] ) end diff --git a/lib/voicemeeter/event.rb b/lib/voicemeeter/event.rb index 0ff2f19..bc08444 100644 --- a/lib/voicemeeter/event.rb +++ b/lib/voicemeeter/event.rb @@ -17,8 +17,8 @@ module Voicemeeter @callbacks.each do |callback| if callback.respond_to? :on_update callback.on_update { event.to_s[3..] } - else - callback.call # if callback == event + elsif callback.name == event + callback.call end end end diff --git a/lib/voicemeeter/worker.rb b/lib/voicemeeter/worker.rb index 58f4775..143db6b 100644 --- a/lib/voicemeeter/worker.rb +++ b/lib/voicemeeter/worker.rb @@ -21,6 +21,8 @@ module Voicemeeter def init_worker(que) logger.info "Listening for #{event.get.join(", ")} events" @cache[:strip_level], @cache[:bus_level] = _get_levels + @cache[:strip_comp] = Array.new(kind.num_strip_levels, false) + @cache[:bus_comp] = Array.new(kind.num_bus_levels, false) @running = true Thread.new do loop do @@ -33,12 +35,8 @@ module Voicemeeter on_event :on_mdirty if e_from_que == :mdirty && mdirty? on_event :on_midi if e_from_que == :midi && get_midi_message if e_from_que == :ldirty && ldirty? - cache[:strip_comp] = cache[:strip_level].map.with_index do |x, i| - !(x == cache[:strip_buf][i]) - end - cache[:bus_comp] = cache[:bus_level].map.with_index do |x, i| - !(x == cache[:bus_buf][i]) - end + cache[:strip_comp] = cache[:strip_level].zip(cache[:strip_buf]).map { |a, b| a != b } + cache[:bus_comp] = cache[:bus_level].zip(cache[:bus_buf]).map { |a, b| a != b } cache[:strip_level] = cache[:strip_buf] cache[:bus_level] = cache[:bus_buf] on_event :on_ldirty