diff --git a/lib/voicemeeter/base.rb b/lib/voicemeeter/base.rb index 55ffff5..c2a0667 100644 --- a/lib/voicemeeter/base.rb +++ b/lib/voicemeeter/base.rb @@ -209,11 +209,11 @@ module Voicemeeter exp: ->(x) { x >= 0 } ) if (got_midi = res > 0) - vals = cmsg.read_string_bytes + vals = cmsg.read_string.bytes vals.each_slice(3) do |ch, key, velocity| - midi.channel = ch if midi.channel.nil? || midi.channel != ch + midi.channel = ch.to_i midi.current = key.to_i - midi.set(key.to_i, velocity.to_i) + midi.cache[key.to_i] = velocity.to_i end end got_midi diff --git a/lib/voicemeeter/event.rb b/lib/voicemeeter/event.rb index 8afe81d..d5ef3cd 100644 --- a/lib/voicemeeter/event.rb +++ b/lib/voicemeeter/event.rb @@ -18,7 +18,7 @@ module Voicemeeter def trigger(event) @callbacks.each do |callback| if callback.respond_to? :on_update - callback.on_update { event.to_s[3..] } + callback.on_update event.to_s[3..] elsif callback.name == event callback.call end diff --git a/lib/voicemeeter/midi.rb b/lib/voicemeeter/midi.rb index 30c64ea..ad3b556 100644 --- a/lib/voicemeeter/midi.rb +++ b/lib/voicemeeter/midi.rb @@ -1,6 +1,7 @@ module Voicemeeter class Midi - attr_accessor :cache, :current, :channel + attr_accessor :current, :channel + attr_reader :cache def initialize @cache = {} @@ -9,9 +10,5 @@ module Voicemeeter def get(key) cache[key] end - - def set(key, velocity) - cache[key] = velocity - end end end