voicemeeter_api_ruby 4.1.2 → 4.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/lib/meta.rb CHANGED
@@ -1,282 +1,275 @@
1
- require_relative 'errors'
2
-
3
- module Conversions
4
- module_function
5
-
6
- def Boolean(value)
7
- case value
8
- when true, 1
9
- true
10
- when false, nil, 0
11
- false
12
- else
13
- raise ArgumentError,
14
- "invalid value for Boolean(): \"#{value.inspect}\""
15
- end
16
- end
17
- end
18
-
19
- module Meta_Functions
20
- private
21
-
22
- include Conversions
23
-
24
- def make_accessor_bool(*params)
25
- params.each do |param|
26
- define_singleton_method("#{param}") do
27
- return !(self.getter("#{param}")).zero?
28
- end
29
-
30
- define_singleton_method("#{param}=") do |value|
31
- self.setter("#{param}", Boolean(value) ? 1 : 0)
32
- end
33
- end
34
- end
35
-
36
- def make_accessor_int(*params)
37
- params.each do |param|
38
- define_singleton_method("#{param}") do
39
- return self.getter("#{param}").to_i
40
- end
41
- define_singleton_method("#{param}=") do |value|
42
- self.setter("#{param}", value)
43
- end
44
- end
45
- end
46
-
47
- def make_accessor_float(*params)
48
- params.each do |param|
49
- define_singleton_method("#{param}") do
50
- return self.getter("#{param}")
51
- end
52
- define_singleton_method("#{param}=") do |value|
53
- self.setter("#{param}", value)
54
- end
55
- end
56
- end
57
-
58
- def make_accessor_string(*params)
59
- params.each do |param|
60
- define_singleton_method("#{param}") do
61
- return self.getter("#{param}", true)
62
- end
63
- define_singleton_method("#{param}=") do |value|
64
- self.setter("#{param}", value)
65
- end
66
- end
67
- end
68
-
69
- def make_reader_only(*params)
70
- params.each do |param|
71
- define_singleton_method("#{param}") do
72
- return self.getter("#{param}")
73
- end
74
- end
75
- end
76
-
77
- def make_writer_only(*params)
78
- params.each do |param|
79
- define_singleton_method("#{param}=") do |value = 1|
80
- self.setter("#{param}", value)
81
- end
82
- end
83
- end
84
-
85
- def make_channel_props(num_A, num_B)
86
- (1..(num_A + num_B)).map { |i| i <= num_A ? "A#{i}" : "B#{i - num_A}" }
87
- end
88
-
89
- def make_action_prop(*params)
90
- params.each do |param|
91
- define_singleton_method("#{param}") { self.setter("#{param}", 1) }
92
- end
93
- end
94
- end
95
-
96
- module Channel_Meta_Functions
97
- private
98
-
99
- include Conversions
100
- include Meta_Functions
101
-
102
- def make_accessor_bool(*params)
103
- params.each do |param|
104
- cmds = { eq: 'EQ.on' }
105
- if cmds.key? param
106
- cmd = cmds[param]
107
- else
108
- cmd = param
109
- end
110
-
111
- define_singleton_method("#{param}") do
112
- return !(self.getter("#{cmd}")).zero?
113
- end
114
-
115
- define_singleton_method("#{param}=") do |value|
116
- self.setter("#{cmd}", Boolean(value) ? 1 : 0)
117
- end
118
- end
119
- end
120
-
121
- def make_accessor_float(*params)
122
- params.each do |param|
123
- define_singleton_method("#{param}") do
124
- return self.getter("#{param}")
125
- end
126
-
127
- define_singleton_method("#{param}=") do |value|
128
- self.setter("#{param}", value)
129
- end
130
- end
131
- end
132
-
133
- def make_accessor_int(*params)
134
- params.each do |param|
135
- define_singleton_method("#{param}") do
136
- return self.getter("#{param}").to_i
137
- end
138
-
139
- define_singleton_method("#{param}=") do |value|
140
- self.setter("#{param}", value)
141
- end
142
- end
143
- end
144
-
145
- def make_reader_only(*params)
146
- params.each do |param|
147
- cmds = { device: 'device.name', sr: 'device.sr' }
148
- if cmds.key? param
149
- cmd = cmds[param]
150
- else
151
- cmd = param
152
- end
153
-
154
- define_singleton_method("#{param}") do
155
- case param
156
- when :device
157
- return self.getter("#{cmd}", true)
158
- when :sr
159
- return self.getter("#{cmd}").to_i
160
- end
161
- end
162
- end
163
- end
164
-
165
- def make_bus_modes(*params)
166
- params.each do |param|
167
- define_singleton_method("#{param}") do
168
- @remote.clear_polling
169
- return !(self.getter("#{param}")).zero?
170
- end
171
-
172
- define_singleton_method("#{param}=") do |value|
173
- self.setter("#{param}", Boolean(value) ? 1 : 0)
174
- end
175
- end
176
- end
177
- end
178
-
179
- module Vban_Meta_Functions
180
- private
181
-
182
- include Conversions
183
- include Meta_Functions
184
-
185
- def make_reader_int(*params)
186
- params.each do |param|
187
- define_singleton_method("#{param}") do
188
- case param
189
- when :bit
190
- return self.getter("#{param}").to_i == 1 ? 16 : 24
191
- else
192
- return self.getter("#{param}").to_i
193
- end
194
- end
195
- end
196
- end
197
-
198
- def make_accessor_int(*params)
199
- params.each do |param|
200
- define_singleton_method("#{param}") do
201
- case param
202
- when :bit
203
- return self.getter("#{param}").to_i == 1 ? 16 : 24
204
- else
205
- return self.getter("#{param}").to_i
206
- end
207
- end
208
-
209
- opts = {
210
- sr: [
211
- 11_025,
212
- 16_000,
213
- 22_050,
214
- 24_000,
215
- 32_000,
216
- 44_100,
217
- 48_000,
218
- 64_000,
219
- 88_200,
220
- 96_000,
221
- ],
222
- channel: (1..8),
223
- bit: [16, 24],
224
- quality: (0..4),
225
- route: (0..8),
226
- }
227
-
228
- define_singleton_method("#{param}=") do |value|
229
- unless opts[param].member? value
230
- raise OutOfBoundsErrors.new(opts[param])
231
- end
232
- case param
233
- when :bit
234
- self.setter("#{param}", value == 16 ? 1 : 2)
235
- else
236
- self.setter("#{param}", value)
237
- end
238
- end
239
- end
240
- end
241
- end
242
-
243
- module MacroButton_Meta_Functions
244
- private
245
-
246
- include Conversions
247
-
248
- def make_accessor_macrobutton(*params)
249
- params.each do |param|
250
- mode = { state: 1, stateonly: 2, trigger: 3 }
251
-
252
- define_singleton_method("#{param}") do
253
- return !(self.getter(mode[param])).zero?
254
- end
255
-
256
- define_singleton_method("#{param}=") do |value|
257
- self.setter(Boolean(value) ? 1 : 0, mode[param])
258
- end
259
- end
260
- end
261
- end
262
-
263
- module Commands_Meta_Functions
264
- private
265
-
266
- include Conversions
267
- include Meta_Functions
268
- def make_writer_bool(*params)
269
- params.each do |param|
270
- cmds = { showvbanchat: 'DialogShow.VBANCHAT' }
271
- if cmds.key? param
272
- cmd = cmds[param]
273
- else
274
- cmd = param
275
- end
276
-
277
- define_singleton_method("#{param}=") do |value|
278
- self.setter("#{cmd}", Boolean(value) ? 1 : 0)
279
- end
280
- end
281
- end
282
- end
1
+ require_relative "errors"
2
+
3
+ module Conversions
4
+ module_function
5
+
6
+ def Boolean(value)
7
+ case value
8
+ when true, 1
9
+ true
10
+ when false, nil, 0
11
+ false
12
+ else
13
+ raise ArgumentError, "invalid value for Boolean(): \"#{value.inspect}\""
14
+ end
15
+ end
16
+ end
17
+
18
+ module Meta_Functions
19
+ private
20
+
21
+ include Conversions
22
+
23
+ def make_accessor_bool(*params)
24
+ params.each do |param|
25
+ define_singleton_method("#{param}") do
26
+ return !(self.getter("#{param}")).zero?
27
+ end
28
+
29
+ define_singleton_method("#{param}=") do |value|
30
+ self.setter("#{param}", Boolean(value) ? 1 : 0)
31
+ end
32
+ end
33
+ end
34
+
35
+ def make_accessor_int(*params)
36
+ params.each do |param|
37
+ define_singleton_method("#{param}") do
38
+ return self.getter("#{param}").to_i
39
+ end
40
+ define_singleton_method("#{param}=") do |value|
41
+ self.setter("#{param}", value)
42
+ end
43
+ end
44
+ end
45
+
46
+ def make_accessor_float(*params)
47
+ params.each do |param|
48
+ define_singleton_method("#{param}") { return self.getter("#{param}") }
49
+ define_singleton_method("#{param}=") do |value|
50
+ self.setter("#{param}", value)
51
+ end
52
+ end
53
+ end
54
+
55
+ def make_accessor_string(*params)
56
+ params.each do |param|
57
+ define_singleton_method("#{param}") do
58
+ return self.getter("#{param}", true)
59
+ end
60
+ define_singleton_method("#{param}=") do |value|
61
+ self.setter("#{param}", value)
62
+ end
63
+ end
64
+ end
65
+
66
+ def make_reader_only(*params)
67
+ params.each do |param|
68
+ define_singleton_method("#{param}") { return self.getter("#{param}") }
69
+ end
70
+ end
71
+
72
+ def make_writer_only(*params)
73
+ params.each do |param|
74
+ define_singleton_method("#{param}=") do |value = 1|
75
+ self.setter("#{param}", value)
76
+ end
77
+ end
78
+ end
79
+
80
+ def make_channel_props(num_A, num_B)
81
+ (1..(num_A + num_B)).map { |i| i <= num_A ? "A#{i}" : "B#{i - num_A}" }
82
+ end
83
+
84
+ def make_action_prop(*params)
85
+ params.each do |param|
86
+ define_singleton_method("#{param}") { self.setter("#{param}", 1) }
87
+ end
88
+ end
89
+ end
90
+
91
+ module Channel_Meta_Functions
92
+ private
93
+
94
+ include Conversions
95
+ include Meta_Functions
96
+
97
+ def make_accessor_bool(*params)
98
+ params.each do |param|
99
+ cmds = { eq: "EQ.on" }
100
+ if cmds.key? param
101
+ cmd = cmds[param]
102
+ else
103
+ cmd = param
104
+ end
105
+
106
+ define_singleton_method("#{param}") do
107
+ return !(self.getter("#{cmd}")).zero?
108
+ end
109
+
110
+ define_singleton_method("#{param}=") do |value|
111
+ self.setter("#{cmd}", Boolean(value) ? 1 : 0)
112
+ end
113
+ end
114
+ end
115
+
116
+ def make_accessor_float(*params)
117
+ params.each do |param|
118
+ define_singleton_method("#{param}") { return self.getter("#{param}") }
119
+
120
+ define_singleton_method("#{param}=") do |value|
121
+ self.setter("#{param}", value)
122
+ end
123
+ end
124
+ end
125
+
126
+ def make_accessor_int(*params)
127
+ params.each do |param|
128
+ define_singleton_method("#{param}") do
129
+ return self.getter("#{param}").to_i
130
+ end
131
+
132
+ define_singleton_method("#{param}=") do |value|
133
+ self.setter("#{param}", value)
134
+ end
135
+ end
136
+ end
137
+
138
+ def make_reader_only(*params)
139
+ params.each do |param|
140
+ cmds = { device: "device.name", sr: "device.sr" }
141
+ if cmds.key? param
142
+ cmd = cmds[param]
143
+ else
144
+ cmd = param
145
+ end
146
+
147
+ define_singleton_method("#{param}") do
148
+ case param
149
+ when :device
150
+ return self.getter("#{cmd}", true)
151
+ when :sr
152
+ return self.getter("#{cmd}").to_i
153
+ end
154
+ end
155
+ end
156
+ end
157
+
158
+ def make_bus_modes(*params)
159
+ params.each do |param|
160
+ define_singleton_method("#{param}") do
161
+ @remote.clear_polling
162
+ return !(self.getter("#{param}")).zero?
163
+ end
164
+
165
+ define_singleton_method("#{param}=") do |value|
166
+ self.setter("#{param}", Boolean(value) ? 1 : 0)
167
+ end
168
+ end
169
+ end
170
+ end
171
+
172
+ module Vban_Meta_Functions
173
+ private
174
+
175
+ include Conversions
176
+ include Meta_Functions
177
+
178
+ def make_reader_int(*params)
179
+ params.each do |param|
180
+ define_singleton_method("#{param}") do
181
+ case param
182
+ when :bit
183
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
184
+ else
185
+ return self.getter("#{param}").to_i
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ def make_accessor_int(*params)
192
+ params.each do |param|
193
+ define_singleton_method("#{param}") do
194
+ case param
195
+ when :bit
196
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
197
+ else
198
+ return self.getter("#{param}").to_i
199
+ end
200
+ end
201
+
202
+ opts = {
203
+ sr: [
204
+ 11_025,
205
+ 16_000,
206
+ 22_050,
207
+ 24_000,
208
+ 32_000,
209
+ 44_100,
210
+ 48_000,
211
+ 64_000,
212
+ 88_200,
213
+ 96_000
214
+ ],
215
+ channel: (1..8),
216
+ bit: [16, 24],
217
+ quality: (0..4),
218
+ route: (0..8)
219
+ }
220
+
221
+ define_singleton_method("#{param}=") do |value|
222
+ unless opts[param].member? value
223
+ raise OutOfBoundsErrors.new(opts[param])
224
+ end
225
+ case param
226
+ when :bit
227
+ self.setter("#{param}", value == 16 ? 1 : 2)
228
+ else
229
+ self.setter("#{param}", value)
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
235
+
236
+ module MacroButton_Meta_Functions
237
+ private
238
+
239
+ include Conversions
240
+
241
+ def make_accessor_macrobutton(*params)
242
+ params.each do |param|
243
+ mode = { state: 1, stateonly: 2, trigger: 3 }
244
+
245
+ define_singleton_method("#{param}") do
246
+ return !(self.getter(mode[param])).zero?
247
+ end
248
+
249
+ define_singleton_method("#{param}=") do |value|
250
+ self.setter(Boolean(value) ? 1 : 0, mode[param])
251
+ end
252
+ end
253
+ end
254
+ end
255
+
256
+ module Commands_Meta_Functions
257
+ private
258
+
259
+ include Conversions
260
+ include Meta_Functions
261
+ def make_writer_bool(*params)
262
+ params.each do |param|
263
+ cmds = { showvbanchat: "DialogShow.VBANCHAT" }
264
+ if cmds.key? param
265
+ cmd = cmds[param]
266
+ else
267
+ cmd = param
268
+ end
269
+
270
+ define_singleton_method("#{param}=") do |value|
271
+ self.setter("#{cmd}", Boolean(value) ? 1 : 0)
272
+ end
273
+ end
274
+ end
275
+ end
data/lib/recorder.rb CHANGED
@@ -1,20 +1,20 @@
1
- require_relative 'iremote'
2
- require_relative 'meta'
3
-
4
- class Recorder < IRemote
5
- '
6
- Concrete Recorder class
7
- '
8
-
9
- def initialize(remote)
10
- super
11
- self.make_action_prop :play, :stop, :record, :ff, :rew
12
-
13
- num_A, num_B = remote.kind.layout[:bus].values
14
- self.make_accessor_bool *make_channel_props(num_A, num_B)
15
- end
16
-
17
- def identifier
18
- :recorder
19
- end
20
- end
1
+ require_relative "iremote"
2
+ require_relative "meta"
3
+
4
+ class Recorder < IRemote
5
+ "
6
+ Concrete Recorder class
7
+ "
8
+
9
+ def initialize(remote)
10
+ super
11
+ self.make_action_prop :play, :stop, :record, :ff, :rew
12
+
13
+ num_A, num_B = remote.kind.layout[:bus].values
14
+ self.make_accessor_bool *make_channel_props(num_A, num_B)
15
+ end
16
+
17
+ def identifier
18
+ :recorder
19
+ end
20
+ end
data/lib/runvm.rb CHANGED
@@ -1,29 +1,29 @@
1
- require_relative 'cbindings'
2
- require_relative 'kinds'
3
-
4
- include CBindings
5
- include Kinds
6
-
7
- module RunVM
8
- '
9
- Starts Voicemeeter of the Kind requested.
10
- '
11
- def start(kind_id)
12
- unless Kinds.kind_map.key? kind_id
13
- raise VMRemoteErrors.new('Unknown Voicemeeter Kind.')
14
- end
15
-
16
- enums =
17
- Kinds.kinds_all.map.with_index do |kind, i|
18
- if OS_BITS == 64 && kind.name.to_s == 'potato'
19
- [kind.name.to_s, i + 4]
20
- else
21
- [kind.name.to_s, i + 1]
22
- end
23
- end
24
- exes = enums.to_h { |k, v| [k, v.to_i] }
25
-
26
- send(:vm_runvm, exes[kind_id])
27
- sleep(1)
28
- end
29
- end
1
+ require_relative "cbindings"
2
+ require_relative "kinds"
3
+
4
+ include CBindings
5
+ include Kinds
6
+
7
+ module RunVM
8
+ "
9
+ Starts Voicemeeter of the Kind requested.
10
+ "
11
+ def start(kind_id)
12
+ unless Kinds.kind_map.key? kind_id
13
+ raise VMRemoteErrors.new("Unknown Voicemeeter Kind.")
14
+ end
15
+
16
+ enums =
17
+ Kinds.kinds_all.map.with_index do |kind, i|
18
+ if OS_BITS == 64 && kind.name.to_s == "potato"
19
+ [kind.name.to_s, i + 4]
20
+ else
21
+ [kind.name.to_s, i + 1]
22
+ end
23
+ end
24
+ exes = enums.to_h { |k, v| [k, v.to_i] }
25
+
26
+ send(:vm_runvm, exes[kind_id])
27
+ sleep(1)
28
+ end
29
+ end