voicemeeter_api_ruby 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/base.rb +19 -8
- data/lib/button.rb +6 -0
- data/lib/channel.rb +6 -0
- data/lib/command.rb +1 -1
- data/lib/meta.rb +11 -3
- data/lib/routines.rb +38 -51
- data/lib/strip.rb +1 -0
- data/lib/vban.rb +8 -0
- data/lib/version.rb +1 -1
- data/lib/voicemeeter.rb +14 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3a0e9817ffa5ec8ae524a4af3fe6a64f9f85277a83cb6e39c64f7746006a564
|
4
|
+
data.tar.gz: eecdc15368fb025b6632961ab3df850ac505e79de105f472569e6b0678dd96d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 390dda38c9597c3996d913b3c5c0462307ffd7df102ca5fad2879e76b682104b373ecb5c9b0879911cee20622decfece3f0756082d7d1c85e3ad349ace1a547f
|
7
|
+
data.tar.gz: fd2bf7bfb8bd6157f4dc54e22e1636629ae7a934c466752ddc2f3fda23b9abebef31f5002435dcc4d75075fe792e34aad78295296c5910b107a72adad261750b
|
data/lib/base.rb
CHANGED
@@ -65,27 +65,38 @@ module Base
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
def polling(func)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
68
|
+
def polling(func, name=nil, id=nil, mode=nil)
|
69
|
+
params = {
|
70
|
+
"get_parameter" => name,
|
71
|
+
"macro_getstatus" => "mb_#{id}_#{mode}"
|
72
|
+
}
|
73
|
+
MAX_POLLS.times do |i|
|
74
|
+
if @cache.key? params[func]
|
75
|
+
if func.include?('param') && self.pdirty ||
|
76
|
+
func.include?('macro') && self.mdirty
|
77
|
+
return @cache.delete(params[func])[0]
|
78
|
+
end
|
79
|
+
sleep(DELAY)
|
80
|
+
break if @cache[params[func]][1] == false && i == 1
|
81
|
+
end
|
73
82
|
end
|
74
|
-
|
83
|
+
|
84
|
+
val = yield
|
85
|
+
self.cache.store(params[func], [val, false])
|
86
|
+
val
|
75
87
|
end
|
76
88
|
|
77
89
|
def retval=(values)
|
78
90
|
""" Writer validation for CAPI calls """
|
79
91
|
retval, func = *values
|
80
92
|
raise CAPIErrors.new(retval, func) if retval&.nonzero?
|
81
|
-
|
82
93
|
@retval = retval
|
83
94
|
end
|
84
95
|
|
85
96
|
def run_as(func, *args)
|
86
97
|
val = send('vmr_' + func, *args)
|
87
98
|
self.retval = [val, func]
|
88
|
-
sleep(DELAY)
|
99
|
+
sleep(DELAY) if func.include?('set') && @wait
|
89
100
|
end
|
90
101
|
end
|
91
102
|
|
data/lib/button.rb
CHANGED
data/lib/channel.rb
CHANGED
data/lib/command.rb
CHANGED
data/lib/meta.rb
CHANGED
@@ -225,17 +225,25 @@ end
|
|
225
225
|
|
226
226
|
module Commands_Meta_Functions
|
227
227
|
include Meta_Functions
|
228
|
+
def make_action_prop(*params)
|
229
|
+
params.each do |param|
|
230
|
+
define_singleton_method("#{param}") do
|
231
|
+
self.setter("#{param}", 1)
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
228
236
|
def make_writer_bool(*params)
|
229
237
|
params.each do |param|
|
230
238
|
cmds = {
|
231
239
|
:showvbanchat => 'DialogShow.VBANCHAT',
|
232
240
|
}
|
233
241
|
if cmds[param] then val = cmds[param] else val = param end
|
234
|
-
|
242
|
+
|
235
243
|
opts = [false, true]
|
236
244
|
define_singleton_method("#{param}=") do |value|
|
237
|
-
raise OutOfBoundsErrors.new(opts
|
238
|
-
self.setter("#{
|
245
|
+
raise OutOfBoundsErrors.new(opts) unless opts.include? value
|
246
|
+
self.setter("#{param}", value ? 1 : 0)
|
239
247
|
end
|
240
248
|
end
|
241
249
|
end
|
data/lib/routines.rb
CHANGED
@@ -19,7 +19,7 @@ class Routines
|
|
19
19
|
attr_accessor :properties, :layout, :strip, :bus, :button, :vban, :command,
|
20
20
|
:recorder
|
21
21
|
|
22
|
-
attr_reader :retval, :cache
|
22
|
+
attr_reader :retval, :cache, :wait
|
23
23
|
|
24
24
|
SIZE = 1
|
25
25
|
BUFF = 512
|
@@ -27,14 +27,8 @@ class Routines
|
|
27
27
|
def initialize(kind)
|
28
28
|
define_version(kind)
|
29
29
|
|
30
|
-
self.strip = Strip.make(self, @layout[:strip], @layout[:bus])
|
31
|
-
self.bus = Bus.make(self, @layout[:bus])
|
32
|
-
self.button = MacroButton.make(self, @layout[:mb])
|
33
|
-
self.vban = Vban.make(self, @layout[:vban])
|
34
|
-
self.command = Command.new(self)
|
35
|
-
self.recorder = Recorder.new(self, @layout[:bus])
|
36
|
-
|
37
30
|
self.cache = Hash.new
|
31
|
+
@wait = true
|
38
32
|
end
|
39
33
|
|
40
34
|
def login
|
@@ -56,19 +50,16 @@ class Routines
|
|
56
50
|
end
|
57
51
|
|
58
52
|
def get_parameter(name, is_string=false)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
c_get = FFI::MemoryPointer.new(:float, SIZE)
|
70
|
-
run_as("get_parameter_float", name, c_get)
|
71
|
-
c_get.read_float.round(1)
|
53
|
+
self.polling("get_parameter", name) do
|
54
|
+
if is_string
|
55
|
+
c_get = FFI::MemoryPointer.new(:string, BUFF, true)
|
56
|
+
run_as("get_parameter_string", name, c_get)
|
57
|
+
c_get.read_string
|
58
|
+
else
|
59
|
+
c_get = FFI::MemoryPointer.new(:float, SIZE)
|
60
|
+
run_as("get_parameter_float", name, c_get)
|
61
|
+
c_get.read_float.round(1)
|
62
|
+
end
|
72
63
|
end
|
73
64
|
end
|
74
65
|
|
@@ -78,51 +69,47 @@ class Routines
|
|
78
69
|
else
|
79
70
|
run_as("set_parameter_float", name, value.to_f)
|
80
71
|
end
|
81
|
-
self.cache.store(name, value)
|
72
|
+
self.cache.store(name, [value, true])
|
82
73
|
end
|
83
74
|
|
84
75
|
def macro_getstatus(id, mode)
|
85
|
-
|
86
|
-
|
87
|
-
|
76
|
+
self.polling("macro_getstatus", name=nil, id, mode) do
|
77
|
+
c_get = FFI::MemoryPointer.new(:float, SIZE)
|
78
|
+
run_as("macro_getstatus", id, c_get, mode)
|
79
|
+
c_get.read_float.to_i
|
88
80
|
end
|
89
|
-
|
90
|
-
c_get = FFI::MemoryPointer.new(:float, SIZE)
|
91
|
-
run_as("macro_getstatus", id, c_get, mode)
|
92
|
-
c_get.read_float.to_i
|
93
81
|
end
|
94
82
|
|
95
83
|
def macro_setstatus(id, state, mode)
|
96
84
|
run_as("macro_setstatus", id, state, mode)
|
97
|
-
self.cache.store("mb_#{id}_#{mode}", state)
|
85
|
+
self.cache.store("mb_#{id}_#{mode}", [state, true])
|
98
86
|
end
|
99
87
|
|
100
88
|
def set_parameter_multi(param_hash)
|
89
|
+
@wait = false
|
101
90
|
param_hash.each do |(key,val)|
|
102
|
-
prop, m2, m3, *
|
103
|
-
if m2.to_i.to_s == m2 then m2 = m2.to_i
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
if m2 == "instream"
|
119
|
-
self.vban.instream[m3].send("#{param}=", value)
|
120
|
-
else
|
121
|
-
self.vban.outstream[m3].send("#{param}=", value)
|
122
|
-
end
|
91
|
+
prop, m2, m3, *rem = key.to_s.split('_')
|
92
|
+
if m2.to_i.to_s == m2 then m2 = m2.to_i
|
93
|
+
elsif m3.to_i.to_s == m3 then m3 = m3.to_i end
|
94
|
+
|
95
|
+
case prop
|
96
|
+
when "strip"
|
97
|
+
self.strip[m2].set_multi(val)
|
98
|
+
when "bus"
|
99
|
+
self.bus[m2].set_multi(val)
|
100
|
+
when "button", "mb"
|
101
|
+
self.button[m2].set_multi(val)
|
102
|
+
when "vban"
|
103
|
+
if ["instream", "in"].include? m2
|
104
|
+
self.vban.instream[m3].set_multi(val)
|
105
|
+
elsif ["outstream", "out"].include? m2
|
106
|
+
self.vban.outstream[m3].set_multi(val)
|
123
107
|
end
|
124
108
|
end
|
125
109
|
end
|
110
|
+
@wait = true
|
126
111
|
end
|
127
112
|
alias_method "set_multi", :set_parameter_multi
|
113
|
+
alias_method "set", :set_parameter
|
114
|
+
alias_method "get", :get_parameter
|
128
115
|
end
|
data/lib/strip.rb
CHANGED
data/lib/vban.rb
CHANGED
@@ -27,6 +27,12 @@ class IVban
|
|
27
27
|
def direction
|
28
28
|
raise NotImplementedError
|
29
29
|
end
|
30
|
+
|
31
|
+
def set_multi(param_hash)
|
32
|
+
param_hash.each do |(key,val)|
|
33
|
+
self.send("#{key}=", val)
|
34
|
+
end
|
35
|
+
end
|
30
36
|
end
|
31
37
|
|
32
38
|
|
@@ -69,6 +75,7 @@ class Vban < IVban
|
|
69
75
|
end
|
70
76
|
end
|
71
77
|
|
78
|
+
|
72
79
|
class VbanInstream < Vban
|
73
80
|
def initialize(remote, i)
|
74
81
|
super
|
@@ -80,6 +87,7 @@ class VbanInstream < Vban
|
|
80
87
|
end
|
81
88
|
end
|
82
89
|
|
90
|
+
|
83
91
|
class VbanOutstream < Vban
|
84
92
|
def initialize(remote, i)
|
85
93
|
super
|
data/lib/version.rb
CHANGED
data/lib/voicemeeter.rb
CHANGED
@@ -9,12 +9,21 @@ module Voicemeeter
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
def initialize(kind)
|
13
|
+
super
|
14
|
+
self.strip = Strip.make(self, @layout[:strip], @layout[:bus])
|
15
|
+
self.bus = Bus.make(self, @layout[:bus])
|
16
|
+
self.button = MacroButton.make(self, @layout[:mb])
|
17
|
+
self.vban = Vban.make(self, @layout[:vban])
|
18
|
+
self.command = Command.new(self)
|
19
|
+
self.recorder = Recorder.new(self, @layout[:bus])
|
20
|
+
end
|
21
|
+
|
12
22
|
def run
|
13
|
-
if block_given?
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
end
|
23
|
+
yield if block_given?
|
24
|
+
|
25
|
+
ensure
|
26
|
+
logout
|
18
27
|
end
|
19
28
|
end
|
20
29
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voicemeeter_api_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- onyx_online
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-01-
|
11
|
+
date: 2022-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|